Mundo em Python

Jogo da Memória

import tkinter as tk
import random
class MemoryGame:
def __init__(self, root):
self.root = root
self.root.title("Jogo da Memória") self.cards = [
"A", "A", "B", "B", "C", "C", "D", "D",
"E", "E", "F", "F", "G", "G", "H", "H"
]
random.shuffle(self.cards) self.buttons = []
self.selected = []
self.turns = 0 # Inicializando o número de tentativas

# Criando os botões das cartas
for i in range(4):
row = []
for j in range(4):
btn = tk.Button(self.root, text="", width=4, height=2, command=lambda i=i, j=j: self.select_card(i, j))
btn.grid(row=i, column=j)
row.append(btn)
self.buttons.append(row) # Exibindo número de tentativas
self.texto_sub1 = tk.Label(self.root, text="NÚMERO DE TENTATIVAS", font=("Arial", 15, "bold"),
bg="#103030", fg="#49e3e3")
self.texto_sub1.place(relx=0.05, rely=0.7) self.texto_sub2 = tk.Label(self.root, text=str(self.turns), font=("Arial", 18, "bold"),
bg="#103030", fg="#49e3e3")
self.texto_sub2.place(relx=0.35, rely=0.8) def select_card(self, i, j):
# Controla a seleção de cartas
if len(self.selected) < 2 and self.buttons[i][j]["text"] == "":
self.buttons[i][j]["text"] = self.cards[i * 4 + j]
self.selected.append((i, j)) if len(self.selected) == 2:
self.root.after(1000, self.check_match) def check_match(self):
i1, j1 = self.selected[0]
i2, j2 = self.selected[1] # Verificando se as cartas selecionadas são iguais
if self.cards[i1 * 4 + j1] != self.cards[i2 * 4 + j2]:
self.buttons[i1][j1]["text"] = ""
self.buttons[i2][j2]["text"] = ""
else:
self.buttons[i1][j1]["state"] = "disabled"
self.buttons[i2][j2]["state"] = "disabled"

# Limpa a seleção e incrementa o número de tentativas
self.selected = []
self.turns += 1
self.atualizar_tentativas() # Verifica se o jogo terminou
if all(btn["state"] == "disabled" for row in self.buttons for btn in row):
print(f"Você ganhou em {self.turns} tentativas!") def atualizar_tentativas(self):
# Atualiza o rótulo com o número de tentativas
self.texto_sub2.config(text=str(self.turns)) def reset_game(self):
# Reinicia o jogo
random.shuffle(self.cards)
self.turns = 0
self.selected = []
for i in range(4):
for j in range(4):
self.buttons[i][j]["text"] = ""
self.buttons[i][j]["state"] = "normal"
self.atualizar_tentativas()
if __name__ == "__main__":
root = tk.Tk()
root.geometry("300x300")
root.title("Jogo da Memória")
root.resizable(0, 0)
root.config(bg="#103030") # Instanciando o jogo
game = MemoryGame(root) # Botão para reiniciar o jogo
but1 = tk.Button(root, text="Novo Jogo", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=game.reset_game)
but1.place(relx=0.55, rely=0.2, relwidth=0.35, relheight=0.15) root.mainloop()
0