Buenos dias a todos,
mi problema es el siguiente, tengo una matriz con objetos Bloque dentro, las posiciones vacias estan a null, y el objetivo consiste en mover 1 o + bloques por la matriz una posicion de manera recursiva.
Mi problema es que yo voy avanzando desde donde "empujo" por la matriz mirando si hay bloques hasta encontrar una posicion vacia y ahi es entonces cuando tengo que volver moviendo los bloques uno a uno.
Me pasan una energia con la que tengo ir moviendo los objetos, si me quedo sin energia pues no hago nada
Posicion es un objeto que te indica unas coordenadas (x,y)
public int empujarBloque(Posicion pos, Direccion dir, int energia)
//compruebo si la posicion siguiente en la direccion indicada (derecha, arriba..)
//esta dentro de la matriz
if(posicionDentroMatriz(pos.adyacente(dir))
return 0;
//compruebo si la posicion siguiente en la direccion indicada no es un objeto
if(posicionVacia(pos.adyacente(dir))
return 0;
//ahora se que es un objeto, compruebo si tengo energia para desplazarlo
//y entonces vuelvo a llamar con la energia consumida y la siguiente posicion
//de la matriz
if(getBloque(pos.adyacente(dir)).puedoDesplazarlo( energia)
return
empujarBloque(pos.ady(dir),dir,energia - getBloque(pos.ady).getEnergia())
Pero claro cuando llego al final solo devuelvo la energia que me queda, y no he movido ningun objeto al terminar
Mi duda es, ¿en que momento yo debo de empezar a mover los bloques?