Import random
Import os
Import platform
Import time
‘’’
Esta lista contendrá las cartas que se van a utilizar en el juego.
‘’’
Figuritas = [“💝”, “⭐”, “🐻”, “🍰”, “🍹”, “🌻”]
‘’’
En una variable guardo la cantidad de figuritas, para más adelante.
Creo una nueva lista duplicando figuritas para crear las parejas
Y la mezclo con [Link](…)
‘’’
Num_figuritas = len(figuritas)
Pares = figuritas + figuritas
[Link](pares)
‘’’
Creo una estructura, con un diccionario.
La “llave” será un índice de carta, comenzando desde 1,
Para esto usamos enumerate(…) y la “comprensión de listas” (el for que
está ahí)
El “valor” será una lista de dos elementos:
- la carta (figurita o emoji)
- el estado de la carta, si encontró su pareja: True o False
‘’’
Pares_ocultos = {
Index: [figurita, False] for index, figurita in enumerate(pares, start=1)
‘’’
De momento esto no se ha visto, es una función.
Es para limpiar la pantalla, pero depende si es windows o linux/unix,
Se usa diferente.
El extraño if, se llama “operador ternario”:
Valor_si_condicion_verdadera if condicion else valor_si_condicion_falsa
‘’’
Def clean():
[Link](“cls” if [Link]() == “Windows” else “clear”)
##-----------------
‘’’
Ya comienza el juego.
Inicializamos las variables que vamos a utilizar:
- contador_fin: contador de parejas encontradas
- contador_movimientos: contador de intentos o movimientos
- carta_1 y _2: cartas seleccionadas por el usuario
‘’’
Carta_1 = “”
Carta_2 = “”
Contador_fin = 0
Contador_movimientos = 0
‘’’
Mientras no se hayan encontrado todas las parejas, el juego sigue.
A menos que se detenga con la palabra exit.
‘’’
While True:
Clean()
Print(“-------- 👑 ENCUENTRA LA PAREJA 👑 ---------\n”)
‘’’
Muestra las cartas ocultas
Es decir, de la estructura diccionario, mostraremos los índices
O identificaciones de las cartas, las llaves.
Pero, si la carta ya encontró su pareja, en vez de mostrar el índice,
Mostraremos el valor o figurita.
El separador es para que haya un salto de línea, a la mitad de la lista
Para hacer mas cómoda la visualización. De nuevo, usa el operador
ternario.
‘’’
For key, value in pares_ocultos.items():
Separador=’\n’ if key % num_figuritas == 0 else ‘’
If value[1]: #-- ya encontró su pareja
Print(f”[ {value[0]} ]”, end=separador)
Else:
Print(f”[ {key} ]”, end=separador)
‘’’
En esta parte, se hace la captura de las dos cartas
Seleccionadas por el usuario en cada turno.
Se usa strip() para eliminar los espacios en blanco al inicio y al final,
Y lower() para convertir a minúsculas.
Se hacen varias validaciones:
- si es exit, sale del juego con break,
- si no es un valor numérico,
O lo es pero no está en el rango de índices válidos,
O sí está pero es una carta que ya encontró su pareja,
Se salta a la siguiente iteración con continue.
- Si digitó el mismo número como carta 1 y 2, se muestra un mensaje
de alerta y
Se salta a la siguiente iteración con continue.
‘’’
Carta_1 = input(
“\nEscoge la primera carta (exit para salir): “).strip().lower()
If carta_1 == “exit”:
Break
If not carta_1.isdigit() or int(carta_1) not in pares_ocultos.keys() or
pares_ocultos[int(carta_1)][1]:
Continue
Carta_2 = input(
“Escoge la segunda carta (exit para salir): “).strip().lower()
If carta_2 == “exit”:
Break
If not carta_2.isdigit() or int(carta_2) not in pares_ocultos.keys() or
pares_ocultos[int(carta_2)][1]:
Continue
If carta_1 == carta_2:
Print(“😱 No puedes elegir la misma carta dos veces!”)
[Link](1.5)
Continue
‘’’
Una vez pasó las validaciones, se van a revelar las cartas
seleccionadas!
Para ello limpiamos primero pantalla, repetimos el título del juego,
Aumentamos el contador de movimientos,
E iteramos los items de la estructura (diccionario) mostrando los
índices,
Pero para las cartas seleccionadas por el usuario,
Y para las cartas que ya han encontrado su pareja,
Se muestran son los valores o figuritas.
‘’’
Clean()
Print(“-------- 👑 ENCUENTRA LA PAREJA 👑 ---------\n”)
Contador_movimientos+=1
For key, value in pares_ocultos.items():
Separador=’\n’ if key % num_figuritas == 0 else ‘’
If key == int(carta_1) or key == int(carta_2) or pares_ocultos[key]
[1]:
Print(f”[ {value[0]} ]” , end=separador)
Else:
Print(f”[ {key} ]”, end=separador)
‘’’
Ahora validaremos si se ha encontrado una pareja.
Para ello, comparamos los valores de las cartas seleccionadas.
Si coinciden, marcamos en la lista de la estructura diccionario,
El segundo valor o posición[1] como True,
Y aumentamos el contador de parejas encontradas y salimos del ciclo.
Pero antes de seguir el ciclo, verificamos si se han encontrado todas
las parejas,
En cuyo caso, se muestra un mensaje de felicitación y se termina el
juego.
‘’’
If pares_ocultos[int(carta_1)] == pares_ocultos[int(carta_2)]:
Pares_ocultos[int(carta_1)][1] = True
Pares_ocultos[int(carta_2)][1] = True
Contador_fin+=1
If contador_fin == num_figuritas:
Print(“\n🥳👋👋👋 – LO HAS LOGRADO -- 👋👋👋🥳”)
Print(f”… en {contador_movimientos} movimientos\n”)
Break
Else:
Print(“\n😎 Felicidades, encontraste una pareja!”)
[Link](1.8)
Print(“------------ 👑 GAME OVER 👑 -------------\n\n”)