Simular el conocido juego de encontrar cartas iguales para formar pares utilizando la memoria para recordar la posición de las cartas ya volteadas llamado memorama
Enviado por laaau28 • 3 de Octubre de 2012 • Trabajo • 4.028 Palabras (17 Páginas) • 1.051 Visitas
PROYECTO MEMORAMA
Objetivo: Simular el conocido juego de encontrar cartas iguales para formar pares utilizando la memoria para recordar la posición de las cartas ya volteadas llamado memorama.
Las clases:
Graflib. Para inicializar los gráficos de nuestro programa y cerrar el modo grafico al termino del programa.
Ventana. Nos dibuja una ventana que iniciamos con un constructor determinando las coordenadas donde queremos dibujar la ventana y el color de fondo.
Además tiene una función llamada marco la cual nos dibuja un marco alrededor de la ventana si así lo queremos.
Raton. Aquí tenemos instrucciones que se dan directamente al procesador que nos permite manipular las funciones del “mouse”.
Las funciones que se utilizaron para la simulación del memorama son:
void aparece_rtn(int ixr,int iyr) A la que se le agregaron dos variables enteras para “aperecer” el cursor en la posición que deseamos.
void oculta_rtn(void) Para ocultar el cursor.
int edobtn_rtn (void) No regresa el estado del botón es decir si el botón izquierdo es presionado nos devuelve un 1.
void pscn_rtn(int &crx1, int &cry1) Guarda la dirección de la posición del cursor.
Boton En esta clase se creó un constructor para el color del botón (Boton (int icolor)) y se hicieron funciones para determinar la posición del botón (void lugar(int ibx1,int iby1,int ibx2,int iby2)), para dibujar la ventana (void pinta (void)), para dibujarle un marco (void marco(int mcolor)) si así lo queremos y dos funciones para dos botones específicos de decisión (void O (int Ocolor) y void X (int Xcolor)) Si y No respectivamente, la función X también se utiliza para dibujar una “X” en el botón que cierra el memorama.
Carta En esta clase se tiene un constructor que nos da el color de las cartas en parte de atrás.
Una función para asignar la posición de la carta (int posicion(int n)), esta clase recibe un valor entero y mediante un “switch” elige la posición con coordenadas determinadas, también regresa el mismo valor de entrada.
Una función para dibujar las cartas en la parte de atrás (void pinta ()) esta función se basa en los valores de las variables de la función posición para dibujar la carta en la posición correcta.
Se tiene una función (int escoge (int cartax,int cartay,int volteada[],int CuantasCartas)) que dos variables enteras que usaremos como coordenadas un arreglo de tipo entero y la última variable entera es para designar el tamaño de nuestro arreglo. Esta función nos servirá para determinar que cartas siguen “activas” en el juego y cuáles no, es decir en que aéreas seguirá devolviendo un valor entero.
Además para fines de visualización se tienen dos funciones (void gira() y void regresa()) que van dibujando la imagen de la carta en la parte trasera con un retraso (delay) entre imagen e imagen para dar el efecto de giro en las cartas.
FrenteCarta Que hereda de la función carta su parte publica
En esta última clase se tiene una función (void figura (int imagen)) que guarda un numero que se asignara a una figura predeterminada.
Tenemos una función (int *PAleatoria()) esta función se encarga de generar 18 números aleatorios entre el 1 y el 9 repitiendo solo una vez cada uno de ellos lo cual nos servirá para asignar una numero en cada una de las dieciocho posiciones del “tablero”
Para esto se guardan valores en un arreglo generados con la función rand limitadola a 9 numeros (del 0 al 8) más uno para generar números del 1 al 9 (aleatorio[vuelta] = (rand() % 9) + 1 ) evitando que se repitan, hacemos esto dos veces para obtener dos veces el mismo numero.
Al utilizar la función rand se generar un número pseudo-aleatorio, que cuando se ejecutar el programa, el algoritmo para generar el numero aleatorio toma como base siempre el mismo número esto nos daría siempre el mismo número para las mismas posiciones siempre que se ejecute el programa. Para solucionar esto utilizamos la función srand() que nos permite escoger el numero base para la generación de los números pseudoaleatorios, y para no tener que introducir siempre unn numero diferentre utilizamos la función time(0) que devuelve en segundos la hora calendario al momento de ser llamada, y la convierte a un entero.
Y finalmente para evitar unas cartas estén solo en la primera mitad de las posiciones y sus respectivos pares en la segunda mitad utilizamos un apuntador (que nos servirá para asignar un espacio de memoria y poder devolver esa dirección que utilizaremos en nuestro programa) en el guardamos la primera mitad de los números generados (del 1 al 9) en la posición inicial de nuestra memoria creada con nuestro apuntador y los espacios pares y la segunda mitad (también del 1 al 9) en los espacios nones de la memora reservada para nuestro apuntador.
Hay una función ( int posicion (int n)) que al igual que su clase base determina las coordenadas de la posición de la carta y devuelve el mismo valor que recibe.
La función (int pinta ()) dibuja una figura predeterminada dependiendo del valor recibido por la función de figura.
La función (void quita()) simula la desaparición da las cartas del “tablero”, dibujando un rectángulo negro en el área de la carta en la que se usa esta función, esto nos servirá para eliminar los pares correctos.
Al igual que la clase Carta, esta clase también tiene las funciones void gira () y void regresa (), para fines de visualización.
memorama.cpp
Empezamos llamando a nuestros archivos *.h
#include "graflib.h"
#include "raton.h"
#include "Ventana.h"
#include "Boton.h"
#include "Carta.h"
#include "FrenteCarta.h"
Las variables:
Para iniciar el código declaramos las variables enteras click, posrx y posry que serán donde se guardara el estado del botón izquierdo del mouse y las coordenadas de la posición del cursor respectivamente
La variable de tipo carácter estado, guardara el “estado” del juego
La variable entera retardo la usaremos para detener el programa cada vez que volteemos un par de cartas, lo que nos permitirá ver la imagen de cada una de ellas por un tiempo predeterminado.
Las variables enteras ic e icompara guardaran los valores que regresara la función pinta de la clase FrenteCarta que nos servirán para determinar
...