Ejercicio 05: Juego de Memoria en Python usando Tkinter

Posted by


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!