コード例 #1
0
        /* *******************************************************
        * Obtengo todos los posibles movimientos de una ficha.
        * Se recibe la ficha a la que desea saber los posibles movimientos.
        * Se permiten movimientos laterales y diagonales.
        * Agrega a la lista de buscados.
        *********************************************************/
        public void obtenerAliadosDiagonal(Ficha posActual)
        {
            Ficha meta = this.campoJuego.getMeta();
            int   x    = posActual.getX() - 1;
            int   y    = posActual.getY() - 1;

            for (int posX = x; posX < (x + 3); posX++)
            {
                for (int posY = y; posY < (y + 3); posY++)
                {
                    // Si no se sale del tablero y además no se evalua la misma ficha.
                    if ((posX >= 0 && posX < this.rows) && (posY >= 0 && posY < this.cols) &&
                        (posActual.getX() != posX || posActual.getY() != posY))
                    {
                        // Si es un movimiento válido (No es un enemigo y no lo había hecho previamente).
                        if (movimientoValido(posActual, posX, posY))
                        {
                            Blanco nuevaFicha = new Blanco(posX, posY, posActual);
                            nuevaFicha.setCostoManhattan(meta);
                            // Si es diagonal me muevo en diagonal. En caso contrario me muevo en línea Recta.
                            moverFicha(posX, posY, posActual, nuevaFicha);
                            listaBuscados.insert(nuevaFicha); // Se inserta la nueva ficha.
                        }
                    }
                }
            }
        }
コード例 #2
0
        /* *******************************************************
        * Obtengo todos los posibles movimientos de una ficha.
        * Se recibe la ficha a la que desea saber los posibles movimientos.
        * Solo se permiten movimientos laterales (arriba, abajo, derecha e izquierda).
        * Agrega a la lista de buscados.
        *********************************************************/
        public void obtenerAliadosLaterales(Ficha posActual)
        {
            Ficha meta = this.campoJuego.getMeta();
            int   x    = posActual.getX();
            int   y    = posActual.getY();

            int[,] positions = new int[4, 2] {
                { x - 1, y },
                { x + 1, y },
                { x, y - 1 },
                { x, y + 1 }
            };

            // Realice cuatro veces por las diagonales de las fichas.
            for (int pos = 0; pos < 4; pos++)
            {
                int posX = positions[pos, 0];
                int posY = positions[pos, 1];

                // Si no se sale del tablero y además no se evalua la misma ficha.
                if ((posX >= 0 && posX < this.rows) && (posY >= 0 && posY < this.cols) &&
                    (posActual.getX() != posX || posActual.getY() != posY))
                {
                    // Compare tablero[i, j];
                    if (movimientoValido(posActual, posX, posY))
                    {
                        Blanco nuevaFicha = new Blanco(posX, posY, posActual);
                        nuevaFicha.setCostoManhattan(meta);
                        // Si es diagonal me muevo en diagonal. En caso contrario me muevo en línea Recta.
                        moverFicha(posX, posY, posActual, nuevaFicha);
                        listaBuscados.insert(nuevaFicha); // Se inserta la nueva ficha.
                    }
                }
            }
        }