Exemple #1
0
        public void seleccionaDir(int fant)
        {
            //Crear la lista de dirs posibles
            ListaPares l    = new ListaPares();
            int        cont = 0;

            posiblesDirs(fant, out l, out cont);
            //Ya tenemos la lista de posibles dirs
            //Ahora hay que eliminar la contraria si hay mas de 1 direccion

            //Cogemos un elemento random de la lista
            int ran = rnd.Next(0, cont);

            //Y cambiamos la direccion
            if (cont > 0)
            {
                l.nEsimo(ran, out pers[fant].dirX, out pers[fant].dirY);
            }
        }
Exemple #2
0
        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--;
            }
        }