En este tutorial aprenderás a crear un juego de memoria mental en Python utilizando la biblioteca Tkinter. Este juego consiste en mostrar una cuadrÃcula de cartas boca abajo y descubrir dos cartas a la vez para intentar encontrar las parejas que coincidan.
Paso 1: Importar las bibliotecas necesarias
Lo primero que debemos hacer es importar las bibliotecas necesarias para crear la interfaz gráfica y gestionar la lógica del juego. Necesitaremos Tkinter para la interfaz gráfica y random para mezclar las cartas.
from tkinter import *
import random
Paso 2: Crear la ventana principal
A continuación, vamos a crear la ventana principal del juego donde se mostrará la cuadrÃcula de cartas. También definiremos algunas variables globales que usaremos más adelante.
root = Tk()
root.title("Juego de Memoria")
root.resizable(False, False)
# Variables globales
num_rows = 4
num_cols = 4
selected = []
cards = [i for i in range(1, int((num_rows * num_cols) / 2) + 1)] * 2
random.shuffle(cards)
Paso 3: Crear las funciones del juego
Ahora vamos a crear algunas funciones necesarias para gestionar la lógica del juego. Primero, una función para voltear una carta cuando se hace clic en ella.
def flip_card(row, col):
if (row, col) not in selected:
selected.append((row, col))
label = Label(board, text=cards[row * num_cols + col], font=('Helvetica', 16))
label.grid(row=row, column=col)
if len(selected) == 2:
root.after(1000, check_match)
También necesitaremos una función para verificar si las dos cartas seleccionadas coinciden.
def check_match():
r1, c1 = selected[0]
r2, c2 = selected[1]
if cards[r1 * num_cols + c1] != cards[r2 * num_cols + c2]:
label1 = Label(board, text='', font=('Helvetica', 16))
label2 = Label(board, text='', font=('Helvetica', 16))
label1.grid(row=r1, column=c1)
label2.grid(row=r2, column=c2)
selected.clear()
Paso 4: Crear la cuadrÃcula de cartas
Ahora vamos a crear la cuadrÃcula de cartas que se mostrará en la ventana principal. Utilizaremos un widget Frame para contener las cartas.
board = Frame(root)
board.pack()
for i in range(num_rows):
for j in range(num_cols):
label = Label(board, text='', font=('Helvetica', 16))
label.grid(row=i, column=j)
label.bind('<Button-1>', lambda event, row=i, col=j: flip_card(row, col))
Paso 5: Iniciar el juego
Finalmente, vamos a iniciar el juego mostrando la ventana principal y ejecutando el bucle principal de la aplicación.
root.mainloop()
¡Y eso es todo! Ahora deberÃas tener un juego de memoria mental funcional en Python utilizando la biblioteca Tkinter. Puedes personalizar el juego agregando más cartas, cambiando el diseño de la cuadrÃcula o mejorando la interfaz gráfica. ¡Diviértete jugando y mejorando tu memoria!