Ir al contenido

publicidad

Foto

Curso MM: 7 Juego de ejemplo Brainiac


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
No hay respuestas en este tema

#1

Escrito 08 agosto 2009 - 15:49

Juego de ejemplo: Brainiac
No hay mucho que destacar en éste ejemplo de buscar parejas: Brainiac.h , Brainiac.cpp

En Brainiac.h vemos la variable _pTiles que sirve para almacenar 9 bitmaps. Una tabla de valores booleanos _bTileStates[4][4] para almacenar el estado de las celdas. Una tabla de valores enteros para las casillas _iTiles[4][4]. Dos variables para guardar las coordenadas de las dos casillas que se muestran en cada turno. La variable _iMatches para contar las parejas que hemos encontrado y otra _iTries para contar los intentos.

En Brainiac.cpp vemos como en GameStart() llenamos la tabla con valores del 1 al 8 , cogemos los números desde el uno hasta el ocho y por cada uno buscamos una celda vacía y lo metemos ahí. Lo hacemos 2 veces porque queremos meter cada imagen 2 veces en la tabla. Se inicializan las variables: a 0 los contadores y a -1 las que indican la casilla seleccionada para que ninguna esté seleccionada.
En GamePaint() hay un if enrevesado. Lo que significa es que si la casilla está marcada como TRUE (_bTileStates[i][j]) o es una de las dos que se han seleccionado para ver si son pareja entonces se muestra la imagen. En caso contrario se muestra la imagen que tapa las casillas.
En MouseButtonDown() determinamos la casilla pulsada y comprobamos que no esté marcada ya como acierto. En ese caso comprobamos si es la primera seleccionada y si lo es comprobamos si es la segunda seleccionada. En cualquiera de los dos casos obtenemos sus coordenadas en la tabla para comprobar (si es la segunda) si las dos contienen la misma imagen. Aumentamos el número de intentos _iTries++. Si son iguales aumentamos _iMatches y si es igual a 8 mostramos el mensaje de Ganador.
En caso contrario limpiamos la selección volviendo a asignar a las variables el valor -1. También forzamos un redibujado con InvalidateRect().

Código fuente


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad