Si tienes una sola fila, o una sola columna solo se puede ir para una lado, salvo que inicies en un extremo es imposible conseguir todos. si embargo ese caso particular es curioso, ya que ahi hay que elegir correctamente hacia que lado ir.
El codigo que puse tiene una falla, y es que hay dos casos particulares de tableros cuadrados que no resulve. aqui la vercion mejorada y que contempla esas posibilidades.
Código Javascript
:
Ver originalTRON.prototype.ia=function()
{
// Casos de tablero particulares.
if(this.mapa.length == 1)
{
if(this.jugador[1] > (this.mapa[0].length/2))
return DIRECCION.arriba;
else
return DIRECCION.abajo;
}
else if(this.mapa[0].length == 1)
{
if(this.jugador[0] > (this.mapa.length/2))
return DIRECCION.izquierda;
else
return DIRECCION.derecha;
}
else
{
// Casos especiales.
if (
(
// Esta en la primer columna.
(this.jugador[1] == 1)
||
// Esta en la esquina superior derecha.
(
(((this.jugador[0]-2) >= 0 ? this.mapa[this.jugador[0]-2][this.jugador[1]] : 3) > 0)
&& (((this.jugador[0]+2) < this.mapa[0].length ? this.mapa[this.jugador[0]][this.jugador[1]+2] : 3) > 0)
&& (this.mapa[this.jugador[0]+1][this.jugador[1]+1] == 0)
)
)
// Y esta libre.
&& (this.mapa[this.jugador[0]-1][this.jugador[1]] == 0)
)
return DIRECCION.arriba;
else
{
if(this.mapa[this.jugador[0]][this.jugador[1]+1] == 0)
return DIRECCION.derecha;
else if(this.mapa[this.jugador[0]+1][this.jugador[1]] == 0)
return DIRECCION.abajo;
else if(this.mapa[this.jugador[0]-1][this.jugador[1]] == 0)
return DIRECCION.arriba;
else
return DIRECCION.izquierda;
}
}
};