Ejercicio para aprender a programar 02 - Crear un juego de memoria
Tags: aprenderaprogramar, español, principiante
Published: 2019-05-20 03:20:39

---
title: Ejercicio para aprender a programar 02 - Crear un juego de memoria
published: true
description:  Ejercicio para aprender a programar. Post de la serie "en que pienso cuando pienso acerca de programar".
series: En que pienso cuando pienso acerca de programar
tags: aprenderaprogramar, español, principiante
---



###Problema:
####Hacer un juego de memorama para una sola persona


###¿Como hacer el programa? 

####Paso 1: Entender el problema.

Necesitamos crear una interfaz gráfica que represente las cartas de un memorama. EL modo de juego es que al inicio se revuelven las cartas y después debemos de buscar los pares haciendo click en dos cartas distintas. Si las cartas coinciden se quedan “abiertas” si no coinciden las cartas vuelven a su posición de “oculta”. El juego termina cuando ya no hay pares de cartas por encontrar.

####Paso 2: Resolver el problema de forma manual/ personal

El juego es un proceso de “espera” donde estaremos esperando que el jugador haga click en una carta y la evaluamos, luego volvemos a esperar que haga click en otra carta. Hasta el momento que tenemos dos cartas válidas podemos determinar si son o no son pares. Lo único que necesitamos hacer es comparar dos cartas y luego anotar si son pares o no. Cada vez que se encuentre un par evaluamos si ya son todos los pares. En caso de tener todos los pares terminamos el juego.

La comparación de las cartas la haremos con una propiedad que puede ser id, imagen, nombre, etc.

####Paso 3: Definir las etapas de cómo resolvemos el problema.


Definimos la secuencia de pasos siguiente:
1)Es el inicio donde se prepara el juego (se barajean cartas y se inicia el score)
2)Propiamente el juego, que es la secuencia de jugadas
3)Fin del juego

![image](http://productividadti.com.mx/blog/2019/bpm_02_memorama1.png)

####Paso 4 .- Decidir que paso vamos a resolver

¿Como saber cual es el paso más difícil de realizar? 
El paso más complejo es “Definir una jugada”, la jugada se compone de dos elementos:
Carta1 y Carta 2 y tiene varias validaciones para determinar que la elección de una carta es correcta.

Entonces tenemos este ente llamado jugada que representa un turno donde el jugador nos proporciona dos cartas válidas.

#####¿Que es una carta válida?

Si la carta ya se resolvió, es decir si ya se encontró su par no es válida para jugar.
Si la segunda carta que nos den es la misma que la primera tampoco es válida (un doble click en la misma carta)
Cuando un par de cartas no coincidan se volverán a ocultar , en ese lapso de tiempo donde se muestran las cartas el usuario no puede seleccionar cartas. Ninguna carta es válida si estamos viendo un par que no coincide.

A continuación muestro el proceso

Estas reglas las podemos representar de la siguiente manera
![image](http://productividadti.com.mx/blog/2019/bpm_02_jugada1.png)

Al hacer click en una carta válida se muestra la carta -llamemosle carta 1- después aal hacer click en la siguiente carta válida la mostramos -llamemosle carta 2-. Si las cartas no son "iguales" las ocultamos después de unos segundos.

El siguiente paso a resolver es el inicio, donde barajeamos las cartas y presentamos el score. 

La parte mas sencilla es el final del juego.

Ejemplo

![](https://thepracticaldev.s3.amazonaws.com/i/8qt4ney445prd8kvn5c1.png)

####El click de una carta

![](https://thepracticaldev.s3.amazonaws.com/i/wonzmwt8bnif5bazfoar.png)