Пример #1
0
        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");
            }
        }
Пример #2
0
        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--;
                }
            }
        }
Пример #3
0
 /// <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;
         }
     }
 }
Пример #4
0
        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();
        }