public void PosiblesDirs1() { //Arrange Tablero tab = new Tablero(3, 3); tab.setPersonaje(1, 1, 1, 0, 1); // # tab.cambiaCasilla(0, 1, Tablero.Casilla.Muro); // 0 tab.cambiaCasilla(2, 1, Tablero.Casilla.Muro); // # ListaPares l = new ListaPares(); //Creamos la lista con las direcciones que tendrian que aparecer ListaPares newL = new ListaPares(); //Añadimos las direcciones que tendria que llevar newL.insertaFin(0, 1); //Aqui almacenaremos las direcciones int dX, dY, ndX, ndY; int cont = 0; //Act tab.posiblesDirs(1, out l, out cont); //Assert //Primero comprobamos que solo haya tres direcciones Assert.AreEqual(1, cont, "Error, hay mas/menos direcciones"); //Hay que comprobar que estan añadidas las direcciones for (int i = 0; i < cont; i++) { l.nEsimo(i, out dX, out dY); newL.nEsimo(i, out ndX, out ndY); Assert.AreEqual(dX, ndX, "Error,la direccion X " + i + " no coincide"); Assert.AreEqual(dY, ndY, "Error,la direccion Y " + i + " no coincide"); } }
public void posiblesDirs(int fant, out ListaPares l, out int cont) { l = new ListaPares(); cont = 4; l.insertaFin(1, 0); l.insertaFin(0, 1); l.insertaFin(-1, 0); l.insertaFin(0, -1); l.iniciaRecorrido(); int dx, dy; int nx, ny; while (l.dame_actual_y_avanza(out dx, out dy)) { if (!siguiente(pers[fant].posX, pers[fant].posY, dx, dy, out nx, out ny)) { l.eliminaElto(dx, dy); cont--; } } if (cont > 1) { if (l.eliminaElto(-pers[fant].dirX, -pers[fant].dirY)) { cont--; } } }
/// <summary> /// Crea un nuevo tablero de casillas vacías de las dimensiones indicadas. /// Crea también el array de personajes (vacío) /// </summary> /// <param name="nFils">Número de filas del tablero</param> /// <param name="nCols">Número de columnas del tablero</param> public Tablero(int nFils, int nCols) { cas = new Casilla[nFils, nCols]; COLS = nCols; FILS = nFils; pers = new Personaje[5]; rnd = new Random(); celdas = new ListaPares(); for (int i = 0; i < nFils; i++) { for (int j = 0; j < nCols; j++) { cas[i, j] = Casilla.Blanco; } } }
public Tablero(string archivo) { celdas = new ListaPares(); getDim(archivo, out COLS, out FILS); numComida = 0; pers = new Personaje[5]; cas = new Casilla[FILS, COLS]; StreamReader leer = new StreamReader(archivo); for (int i = 0; i < FILS; i++) { string linea = leer.ReadLine().Replace(" ", ""); for (int j = 0; j < COLS; j++) { switch (linea[j]) { case ' ': case '0': cas[i, j] = Casilla.Blanco; break; case '1': cas[i, j] = Casilla.Muro; break; case '2': cas[i, j] = Casilla.Comida; numComida++; break; case '3': cas[i, j] = Casilla.Vitamina; numComida++; break; case '4': cas[i, j] = Casilla.MuroCelda; celdas.insertaIni(i, j); break; case '5': pers[1].posX = pers[1].defX = i; pers[1].posY = pers[1].defY = j; cas[i, j] = Casilla.Blanco; break; case '6': pers[2].posX = pers[2].defX = i; pers[2].posY = pers[2].defY = j; cas[i, j] = Casilla.Blanco; break; case '7': pers[3].posX = pers[3].defX = i; pers[3].posY = pers[3].defY = j; cas[i, j] = Casilla.Blanco; break; case '8': pers[4].posX = pers[4].defX = i; pers[4].posY = pers[4].defY = j; cas[i, j] = Casilla.Blanco; break; case '9': pers[0].posX = pers[0].defX = i; pers[0].posY = pers[0].defY = j; cas[i, j] = Casilla.Blanco; break; default: break; } } } numNivel = int.Parse(leer.ReadLine()); if (Debug) { rnd = new Random(100); } else { rnd = new Random(); } leer.Close(); }