public void eliminaMuroFant() { int x, y; MurosFant.iniciaRecorrido(); while (MurosFant.dame_actual_y_avanza(out x, out y)) { cas[x, y] = Casilla.Blanco; Console.SetCursorPosition(0, 0); Dibuja(); } }
public void posiblesDirs(int fant, out ListaPares l, out int cont) { //Inicializamos las direcciones l = new ListaPares(); l.insertaFin(1, 0); l.insertaFin(0, 1); l.insertaFin(-1, 0); l.insertaFin(0, -1); //Inicializamos la lista de direcciones cont = 4; int dx, dy; int nx, ny; //Ahora hacemos un recorrido en esa lista l.iniciaRecorrido(); while (l.dame_actual_y_avanza(out dx, out dy)) { //Donde comprobamos para cada direccion de el fantasma dado si se puede mover if (!(siguiente(pers[fant].posX, pers[fant].posY, dx, dy, out nx, out ny) && !hayFantasma(nx, ny))) { //En cuyo caso añadimos la direccion a la lista de posibles direcciones y aumentamos cont l.eliminaElto(dx, dy); cont--; } else if (!(siguiente(pers[fant].posX, pers[fant].posY, dx, dy, out nx, out ny))) { l.eliminaElto(-pers[fant].dirX, -pers[fant].dirY); cont--; } } if (cont > 1) { l.eliminaElto(-pers[fant].dirX, -pers[fant].dirY); // (0,1) --> (-0,-1) = (0,-1) , Que es la dir contraria cont--; } }