package aima.core.environment.hidato; import aima.core.agent.impl.DynamicAction; /** * La clase accion representa las acciones del dominio. * Pueden incluirse atributos y/o metodos auxiliares para poder * representar las acciones o bien utilizar el nombre de la accion. */ public class Accion extends DynamicAction{ public String nombre; /*nombre de la accion, siempre sera "escribir"*/ public int x; /*coordenada de la fila en la que se va a escribir*/ public int y; /*coordenada de la columna en la que se va a escribir*/ public int valor; /*valor a escribir*/ /** * Crea la accion a partir de su nombre */ /* Constructor de acciones */ public Accion(String name, int x, int y, int valor) { super(name); this.x = x; this.y = y; this.valor = valor; this.nombre = name; } /* tostring para imprimir el camino de acciones que se ha hecho para encontrar la solucion */ @Override public String toString() { return " writes "+valor+" in <" + x + ","+ y + ">"; } /* hascode y equals para comprobar que no se repitan acciones */ @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((nombre == null) ? 0 : nombre.hashCode()); result = prime * result + valor; result = prime * result + x; result = prime * result + y; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (!super.equals(obj)) return false; if (getClass() != obj.getClass()) return false; Accion other = (Accion) obj; if (nombre == null) { if (other.nombre != null) return false; } else if (!nombre.equals(other.nombre)) return false; if (valor != other.valor) return false; if (x != other.x) return false; if (y != other.y) return false; return true; } }