Urmăriți-vă abilitățile cognitive construind acest joc cu plăci de memorie.

Tigla de memorie sau jocul de potrivire este o modalitate excelentă și distractivă de a crește abilitățile cognitive, de a îmbunătăți memoria și de a îmbunătăți concentrarea. Jocul are un set de piese pe care trebuie să le răsturnați una câte una, să le memorați și să le selectați pe cele care se potrivesc. La potrivirea corectă a tuturor pieselor, câștigi jocul.

Deci, cum poți dezvolta acest joc uimitor folosind Python?

Modulele Tkinter și Random

Puteți construi jocul cu plăci de memorie folosind modulele Tkinter și Random. Tkinter vă permite să creați aplicații desktop. Oferă o varietate de widget-uri, cum ar fi butoane, etichete și casete de text, care ușurează dezvolta aplicații precum calendare, calculatoare și liste de activități. Pentru a instala Tkinter, deschideți terminalul și rulați:

pip install tkinter

Modulul Random este un modul Python încorporat folosit pentru generarea de numere pseudoaleatoare. Folosind aceasta,

instagram viewer
puteți construi un generator de parole aleatorii, o aplicație de simulare a aruncării de zaruri sau un amestecător de liste. În plus, poți și tu dezvolta jocuri interesante precum cricketul de mână și jocuri de ghicire a numerelor.

Cum să construiți jocul Memory Tile folosind Python

Puteți găsi codul sursă pentru construirea jocului de memorie folosind Python în aceasta Depozitul GitHub.

Începeți prin a importa Tkinter și modulul Random. Inițializați fereastra rădăcină și setați titlul și dimensiunile în pixeli.

din tkinter import *
import Aleatoriu
din tkinter import caseta de mesaje

rădăcină = Tk()
root.title(„Joc cu plăci de memorie”)
root.geometry(„760x550”)

Definiți două variabile globale și inițializați variabila câștigătoare la zero. Declarați o listă de articole care vor apărea pe plăci. Reordonați lista folosind modulele aleatorii amesteca() metodă. Definiți un cadru în fereastra rădăcină și adăugați o umplutură de 10 în direcția verticală.

Inițializați o variabilă de numărare la 0 și declarați o listă de răspunsuri și, respectiv, un dicționar.

global câștigător, meciuri
câștigător = 0
potriviri = ["măr","măr","banană","banană", "portocale","portocale", "coacăze","coacăze","dud","dud", "struguri","struguri"]
random.shuffle (potriviri)
my_frame = cadru (rădăcină)
my_frame.pack (pady=10)
numără = 0
lista_raspunsuri = []
answer_dict = {}

Definiți o funcție, reset(). Setați textul etichetei la un șir gol folosind butonul config() funcţie. Definiți o listă de butoane, câte una pentru fiecare plăci. Repetați lista și setați textul de pe țiglă buton la un șir gol, culoarea de fundal la implicit (SystemButtonFace), iar starea la normal.

defresetare():
my_label.config (text="")
listă_butoane = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
pentru buton în listă_butoane:
button.config (text=" ", bg=„SystemButtonFace”, stare="normal")

Definiți o funcție, victorie(). Setați un mesaj câștigător în parametrul text al etichetei folosind config() funcţie. Definiți lista de butoane ca mai devreme și repetați-o pentru a seta culoarea de fundal a plăcii la verde deschis.

defvictorie():
my_label.config (text="Felicitări! Ai castigat!")
listă_butoane = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
pentru buton în listă_butoane:
button.config (bg=„#90EE90”)

Definiți o funcție, butonul_click() care ia butonul și numărul acestuia ca parametri de intrare. Faceți referire la variabilele globale, lista și dicționarul. Dacă textul butonului este egal cu un spațiu și numărul este mai mic de doi, atunci introduceți și afișați textul butonului. Adăugați numărul butonului la lista de răspunsuri și numele la dicționarul de răspunsuri. Creșteți variabila de numărare cu una.

defbutonul_clic(b, număr):
global count, answer_list, answer_dict, câștigător
dacă b["text"] == ' 'și numără < 2:
b["text"] = potrivește[număr]
answer_list.append (număr)
answer_dict[b] = se potrivește[number]
numără += 1

Dacă lungimea listei de răspunsuri este de două, înseamnă că utilizatorul a selectat două piese. Dacă textul primei plăci se potrivește cu celălalt, configurați eticheta pentru a afișa că ambele se potrivesc corect. Rotiți starea butonului la dezactivat. Setați numărul la zero și goliți lista și dicționarul. Creșteți variabila câștigător cu una și dacă aceasta se transformă în șase, apelați funcția de câștig declarată mai devreme.

dacă len (listă_răspunsuri) == 2:
dacă potriviri[listă_răspuns[0]] == se potrivește[listă_răspuns[[1]]:
my_label.config (text="E o potrivire!")
pentru cheie în answer_dict:
cheie["stat"] = "dezactivat"
numără = 0
lista_raspunsuri = []
answer_dict = {}
câștigător += 1
dacă câștigător == 6:
victorie()

În caz contrar, resetați variabila de numărare și lista. Afișați o casetă de mesaj cu titlul și conținutul care îl descrie ca o potrivire incorectă. Repetați lista de răspunsuri și setați textul plăcii la un spațiu. Resetați eticheta și goliți dicționarul. Acest lucru asigură că nu există text vizibil pe buton și pe etichetă după ce utilizatorul a selectat plăci incorecte.

altfel:
numără = 0
lista_raspunsuri = []
messagebox.showinfo("Incorect!", "Incorect")
pentru cheie în answer_dict:
cheie["text"] = " "
my_label.config (text=" ")
answer_dict = {}

Definiți 12 butoane. Setați fereastra părinte în care doriți să le plasați, textul pe care ar trebui să-l afișeze, stilul de font pe care ar trebui să-l aibă, înălțimea și lățimea lor și comanda de executat când faceți clic. Nu uitați să utilizați funcția lambda pentru a transmite datele către butonul_click() funcţie. Seteaza relief parametru la canelură pentru a crea un efect de adâncime 3-D în jurul butonului.

b0 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b0, 0), relief="canelură")
b1 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b1, 1), relief="canelură")
b2 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b2, 2), relief="canelură")
b3 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b3, 3), relief="canelură")
b4 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b4, 4), relief="canelură")
b5 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b5, 5), relief="canelură")
b6 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b6, 6), relief="canelură")
b7 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b7, 7), relief="canelură")
b8 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b8, 8), relief="canelură")
b9 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b9, 9), relief="canelură")
b10 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b10, 10), relief="canelură")
b11 = Buton (my_frame, text=' ', font=("Helvetica", 20), înălțime=4, latime=8, comanda=lambda: button_click (b11, 11), relief="canelură")

Organizați butoanele într-un format tabelar format din trei rânduri și patru coloane folosind managerul de grilă Tkinter. Pentru a face acest lucru, sunați la grilă() metoda și treceți rândul împreună cu numărul coloanei în care doriți să îl plasați.

b0.grilă (rând=0, coloana=0)
b1.grilă (rând=0, coloana=1)
b2.grilă (rând=0, coloana=2)
b3.grilă (rând=0, coloana=3)
b4.grilă (rând=1, coloana=0)
b5.grilă (rând=1, coloana=1)
b6.grilă (rând=1, coloana=2)
b7.grilă (rând=1, coloana=3)
b8.grilă (rând=2, coloana=0)
b9.grilă (rând=2, coloana=1)
b10.grilă (rând=2, coloana=2)
b11.grilă (rând=2, coloana=3)

Definiți o etichetă care să arate un șir gol și adăugați o umplutură de 20 în direcția verticală. Definiți un meniu de nivel superior în fereastra rădăcină și atașați-l rotind butonul rupt parametru la Fals. Adăugați un element de submeniu, Opțiuni folosind add_cascade parametru.

Adăugați două elemente de meniu împreună cu comenzile pe care ar trebui să le execute atunci când faceți clic în submeniul numit Resetează jocul și Ieșire din joc. Adăugați un separator între ele pentru demarcare.

my_label = Etichetă (rădăcină, text="")
my_label.pack (pady=20)

my_menu = Meniu (rădăcină)
root.config (meniu=meniul_meu)
option_menu = Meniu (meniul_meu, tearoff=Fals)
meniul_meu.adăugați_cascade (etichetă="Opțiuni", menu=option_menu)
option_menu.add_command (etichetă=„Resetează jocul”, comandă=resetare)
option_menu.add_separator()
option_menu.add_command (etichetă="Ieși din joc", command=root.quit)

The mainloop() funcția îi spune lui Python să ruleze bucla de evenimente Tkinter și să asculte evenimente până când închideți fereastra.

root.mainloop()

Pune tot codul împreună. Acum, jocul cu plăci de memorie este gata de jucat.

Ieșirea jocului Memory Tile

La rularea programului, apar 12 butoane cu text gol împreună cu Opțiuni meniul. La clic Resetează jocul, fereastra apare în același mod.

La selectarea a două plăci potrivite, butoanele apar dezactivate, iar eticheta afișează că alegerea este corectă.

La selectarea a două plăci care nu se potrivesc, apare o casetă de mesaj care indică că selecția a fost incorectă. Butoanele și eticheta revin la starea lor inițială goală.

După potrivirea cu succes a tuturor opțiunilor, programul devine verde toate plăcile și afișează mesajul câștigător.

Jocuri pe care le puteți crea folosind Python

Python oferă o varietate de module pentru a construi jocuri. Pentru a crea jocuri simple bazate pe cuvinte sau alegeri, cum ar fi Hangman, Tic-Tac-Toe sau Rock Paper Scissors, puteți utiliza modulele Tkinter și Random. Pentru a dezvolta jocuri care au nevoie de mai multă grafică, puteți folosi Pygame.

Pygame este un set de module Python care funcționează pe toate platformele. Include grafică pe computer și biblioteci de sunet care fac jocurile mai interactive. Câteva dintre jocurile pe care le puteți crea folosind Pygame includ jocul Snake, jocul de puzzle de memorie și Sudoku.