Título: matriz de movimiento del caballo en c++ Publicado por: Arielcv87 en 1 Marzo 2017, 22:20 pm hola a todos, soy nuevo en el foro y quisiera solicitarles su ayuda, estoy programando el codigo de un juego de ajedrez pero soy nuevo y me atore en la parte del movimiento del caballo ya que me comentan que lo haga por matrices una matriz de 8x8, para los movimientos que son:
x, y 2, 1 2, -1 -2, 1 -2, -1 1, 2 1, -2 -1, 2 -1, -2 como tal no se vaciar estas coordenadas en una matriz y no he encontrado mucha informacion al respecto, espero puedan ayudarme y se los agradeceria mucho. Título: Re: matriz de movimiento del caballo en c++ Publicado por: quecomendoza en 13 Diciembre 2017, 19:01 pm Me interesa también lo del movimiento del caballo. A ver si alguien nos ilumina...
Título: Re: matriz de movimiento del caballo en c++ Publicado por: CalgaryCorpus en 13 Diciembre 2017, 23:37 pm Si las coordenadas actuales del caballo son x, y
las posibles casillas resultan de la suma de (x,y) con cada una de las opciones que presentas. Tal vez te conviene tener una función esValida(a.b) que devuelve true si los valores de a y b son indices válidos. Tienes que hacer un programa que juegue ajedrez? Uno que valide solamente? Uno que genere jugadas posibles? Que llevas hecho? Título: Re: matriz de movimiento del caballo en c++ Publicado por: MAFUS en 14 Diciembre 2017, 12:47 pm De las coordenadas que has dado las tienes que sumar a la posición actual del caballo y comprobar si hay algo allí o que exista esa casilla (que esté fuera del tablero).
En plan, como te han dicho, int esValida(int x, int y); y que regrese 0 si no puede saltar para allá y 1 si puede saltar. Sea Cx la posición X del caballo y Cy la posición Y del caballo. Llamas, por ejemplo, esValida(Cx-2, Cy+1) y si te devuelve 1 cambias la posición del caballo: Cx -= 2; Cy++; Espero que te sirva, estoy desde el móvil y es complicado formatear el texto. Título: Re: matriz de movimiento del caballo en c++ Publicado por: Serapis en 14 Diciembre 2017, 17:34 pm Yo veo más interesante que una función devuelve un valor indicando cuales de las 8 posibles movimientos del caballo son válidas.
Se pasa a la función las cordenadas del caballo y el estado del tablero. Con estado del tablero, se indica que contiene uno de estos 3 tipos de valores (en cada casilla del array que lo mantiene): ---: =0; Casilla no ocupada. ---: >0; Casillas ocupadas por el contrincante (el valor define que figura es). ---: <0; Casillas ocupadas por tus propias figuras (el valor define que figura es). Luego, como el caballo tiene 8 posibles movimientos, usaremos un byte como respuesta: - Cada bit a 1 indica movimiento posible (casilla vacía o figura del enemigo que se puede comer). - Cada bit a 0, movimiento no posible (esto es, fuera del tablero u ocupada por tus propias figuras) Código: // Esta funcion devuelve un byte indicando en cada bit si la casilla correspondiente a dicho bit puede o no saltar el caballo a ella. - Otra función debiera admitir a qué cordenadas refiere un bit 'n' del byte (que devuelve la función anterior) dada la posición actual del caballo. - Se añade además a la función otro parámetro; el array del tablero, y así la función retorna un byte, que es indicadtivo de si se mueve a dicha casilla y si además 'se come' una ficha del enemigo, ó si no es posible moverse a ella... Código: // Una enumeración para la devolución de la función así resulta útil saber que pasó. Y ahora que queda claramente definida lo que tiene que hace rla función su pseudocódigo resultante: - Posibles es el byte que se devolvió en la función anterior, y bitposición la elección de movimiento del jugador. - 'x' e 'y' son las cordenadas actuales y a la devolución contendrán las cordenadas de destino del caballo (solo si fue posible moverse). Código: PosibilidadesDeMovimiento = funcion PosicionarCaballoSobre(byte x, byte y, byte Posibles, byte BitPosicion, array sByte Tablero() ) Luego el código de las llamadas sería algo como: Código: array sByte tablero(0 a 7, 0 a 7) //el array del estado del tablero está definidio a nivel del módulo/clase Los bits que definen la posición del movimiento serían así: (https://i.imgur.com/Wj0BHj4.gif) Título: Re: matriz de movimiento del caballo en c++ Publicado por: fefeelcrack en 25 Abril 2020, 00:05 am me puedes pasar el codigo completo
|