Juego de Damas en AppInventor






Objetivo: Manejo de SpriteImagen

Desarrollo

Las damas es un juego de mesa para dos contrincantes. El juego consiste en mover las piezas en diagonal a través de los cuadros negros o blancos de un tablero de 64 ó 100 cuadros con la intención de capturar (comer) las piezas del jugador contrario pasando por encima de dichas piezas.
Existen varias modalidades, con distintos tableros y número de piezas. La versión internacional, también llamada «damas polacas», está reglada por la Fédération Mondiale du Jeu de Dames (FMJD) y se juega en un tablero de 10×10 cuadros con dos jugadores con 20 piezas cada uno.
El 20 de julio de 2007, en un artículo publicado en la revista Science,​ se encontró la resolución matemática para el juego de damas, siendo su resultado el de tablas. Es decir, si ambos contrincantes juegan siempre la partida perfecta en base al análisis completo y perfecto, las tablas están garantizadas. Chinook es el nombre del software creado por Jonathan Schaeffer, el primer programa que primero jugó a las damas a nivel de torneo, llegando a ganar al campeón del mundo de la época, Don Lafferty, que finalmente resolvió el desarrollo de la partida hacia el empate ineludiblemente.

IMPORTANTE Para nuestro juego usaremos un tablero de ajedrez de 8x8 celdas con 8 fichas roja y 8 fichas azules.


DISEÑO Y CONSTRUCCIÓN DE TABLERO Y FICHAS

1º crear la tabla en Paint.  En Archivo /propiedades de Paint modificar los atributos de ancho y alto por 320x320 pixel. 




Buscamos en Google Imagenes, una de un tablero de damas la cual luego adaptamos en paint con le medida de 320x320 pixeles. 



*Cada cuadro negro o blanco debe ser de 40x40 pixel*


2º Construir una ficha roja y otra azul de 40x40 pixel 

Utilizando el lienzo y SpriteImagen  de app-inventor  diseñar el tablero con sus fichas. En propiedades de Lienzo1  cambiar el ancho y alto por 320x320 pixel. Subir la foto del tablero que hicimos en Paint. 




Cada ficha cambiar el ancho y alto por 40x40 pixel crearemos las fichas en Paint. Para luego agregarlas al Lienzo llamado Tablero, mediante un SpriteImagen. Por cada ficha, usaremos un SpriteImagen, debemos fijarnos que cada una tengo la dimensión de 40x40 pixeles. Además, para facilitar la programación las nombraremos ficharoja_1...,ficharoja_8 y fichazul_1,...;fichazul_8.



Luego, completamos el tablero de la siguiente forma.

¡






PROGRAMACIÓN EN BLOQUES

1º Los elementos del juego los almacenaremos en dos listas; lista para las fichas rojas y otra para las azules. Hay que crear dos listas vacías para cada tipo de ficha, como se muestra a continuación.

2º Debemos programar el screen1, para que cuando se inicializa el juego se creer las listas con sus elementos, de siguiente forma. Debemos agregar 8 elementos en cada construye una lista, ya que corresponde a cada ficha.






3º Para el manejo de eventos, debemos lograr que al presionar una ficha seleccionada para arrastrarla en forma diagonal a la siguiente posición. Cada vez que se presione una ficha las demás deben permanecer deshabilitadas para moverse. Para esto, necesitamos el siguiente algoritmo:

Cuando fichaRojaN es presionada
                Para cada elemento de la lista de fichas rojas  HACER
Poner cualquierSpriteImagen del elemento de la lista la habilitación como falso
                Fin_Para
Poner la fichaRojaN su habilitación como cierta.


"Poner cualquierSpriteImagen " este bloque lo encontraremos en la sección cualquier componente que está al final de Bloques.



Este algoritmo debe ser para cada una de las fichas rojas y azules, pero con que hagamos solo uno y luego lo dupliquemos, poniendo atención de todas las fichas rojas y todas las fichas azules tengan su bloque.

El bloque es el siguiente: 


 IMPORTANTE Debes duplicar este bloque hasta obtener 16, que corresponden  las 8 fichas rojas más las 8 fichas azules. NO olvides cambiar la ficha según corresponda. 



4º Debemos programar que cada ficha se mueva de 40 en 40 (pixeles) ya que así definimos el tablero en un comienzo. El algoritmo corresponde a:


Si el valor de X de nueva posición >  valor de X de la posición actual entonces  actualizar nuevo valor de X por Valor anterior de X +40
Si no es  mayor  actualizar nuevo valor de X por Valor anterior de X - 40
Fin_si


*Cambiar el valor actual de Y por Valor Actual + 40. (Nótese que la ficha roja siempre avanza en 40 pixel en el eje de las Y)

*Como este algoritmo se debe realizar para cada ficha que se mueva , es necesario crear un procedimiento que recibe la posición nueva de la ficha y la ficha

*Una vez que se ha cambiado la posición x e y de la fichaRojaN por los nuevos valores se deben modificar las habilitaciones de cada ficha para poder ser seleccionadas.


COMENCEMOS CON EL BLOQUE

Crear tres entradas: x, y, ficha






SpriteImagenX lo buscamos en Cualquier Componente en Bloques.










Este mismo bloque nos servirá para las fichas azules, sin embargo, debe ser de sentido contrario. Nos queda de la siguiente forma:




·       

                Cada vez que soltamos la ficha al ser arrastrada a una nueva posición  se llama al procedimiento
    moverFichaRoja.  Observe que se envía la nueva posición y el elemento ficha. Llamada al       procedimiento para la ficha a mover: 

Debemos repetir el proceso con todas las demás fichas.

IMPORTANTE No olvidar que para las fichas azules cambiar MoverFichaRoja a MoverFichaAzul.



INTERFAZ DE USUARIO





l

No hay comentarios:

Publicar un comentario