Provjeravajte svoje kognitivne sposobnosti izgradnjom ove igre memorijskih pločica.

Memorijska pločica ili igra spajanja izvrstan je i zabavan način za jačanje kognitivnih sposobnosti, poboljšanje pamćenja i poboljšanje fokusa. Igra ima skup pločica koje morate okrenuti jednu po jednu, zapamtiti i odabrati one koje odgovaraju. Ako pravilno spojite sve pločice, pobjeđujete u igri.

Dakle, kako možete razviti ovu nevjerojatnu igru ​​pomoću Pythona?

Tkinter i Random moduli

Igru memorijskih pločica možete izraditi pomoću Tkinter i Random modula. Tkinter vam omogućuje stvaranje desktop aplikacija. Nudi razne widgete kao što su gumbi, oznake i tekstni okviri koji olakšavaju razvijati aplikacije poput kalendara, kalkulatore i popise obaveza. Da biste instalirali Tkinter, otvorite terminal i pokrenite:

pip instaliraj tkinter

Random modul je ugrađeni Python modul koji se koristi za generiranje pseudo-slučajnih brojeva. Koristeći ovo, možete napraviti generator slučajnih lozinki, aplikacija za simulaciju bacanja kockica ili miješanje popisa. Nadalje, također možete

instagram viewer
razviti zanimljive igre poput ručnog kriketa i igre pogađanja brojeva.

Kako izgraditi igru ​​Memory Tile koristeći Python

Ovdje možete pronaći izvorni kod za izradu igre memorijskih pločica pomoću Pythona GitHub spremište.

Započnite s uvozom Tkinter i Random modula. Inicijalizirajte korijenski prozor i postavite naslov i dimenzije u pikselima.

iz tkinter uvoz *
uvoz slučajan
iz tkinter uvoz okvir za poruke

korijen = Tk()
root.title('Igra memorijskih pločica')
root.geometry("760x550")

Definirajte dvije globalne varijable i inicijalizirajte pobjedničku varijablu na nulu. Deklarirajte popis stavki koje će se pojaviti na pločicama. Promijenite redoslijed popisa pomoću nasumičnog modula miješanje () metoda. Definirajte okvir u korijenskom prozoru i dodajte ispunu od 10 u okomitom smjeru.

Inicijalizirajte varijablu brojača na 0 i deklarirajte popis odgovora odnosno rječnik.

globalno pobjednik, utakmice
pobjednik = 0
odgovara = ["jabuka","jabuka","banana","banana", "naranča","naranča", "borovnica","borovnica","dud","dud", "grožđe","grožđe"]
random.shuffle (podudaranja)
my_frame = Okvir (korijen)
moj_okvir.pack (pady=10)
brojati = 0
lista_odgovora = []
answer_dict = {}

Definirajte funkciju, reset(). Postavite tekst oznake na prazan niz pomoću config() funkcija. Definirajte popis gumba, po jedan za svaku pločicu. Iterirajte po popisu i postavite tekst na pločici gumba na prazan niz, boju pozadine na zadanu (SystemButtonFace), a stanje u normalu.

defresetirati():
moja_oznaka.config (tekst="")
button_list = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
za dugme u gumb_popis:
button.config (text=" ", bg="SystemButtonFace", stanje="normalan")

Definirajte funkciju, pobijediti(). Postavite pobjedničku poruku u parametru teksta oznake pomoću config() funkcija. Definirajte popis gumba kao ranije i iterirajte kroz njega kako biste postavili boju pozadine pločice na svijetlozelenu.

defpobijediti():
moja_oznaka.config (tekst="Čestitamo! Pobjedio si!")
button_list = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
za dugme u gumb_popis:
button.config (bg="#90EE90")

Definirajte funkciju, button_click() koji uzima gumb i njegov broj kao ulazne parametre. Upućivanje na globalne varijable, popis i rječnik. Ako je tekst gumba jednak razmaku, a broj je manji od dva, umetnite i prikažite tekst gumba. Dodajte broj gumba na popis odgovora i naziv u rječnik odgovora. Povećajte varijablu brojanja za jedan.

defgumb_klik(b, broj):
globalno count, answer_list, answer_dict, pobjednik
ako b["tekst"] == ' 'i brojati < 2:
b["tekst"] = odgovara[broj]
answer_list.append (broj)
answer_dict[b] = odgovara[broj]
brojati += 1

Ako je duljina liste odgovora dva, to znači da je korisnik odabrao dvije pločice. Ako tekst prve pločice odgovara drugoj, konfigurirajte oznaku da prikazuje da se obje točno podudaraju. Okrenite stanje gumba na onemogućeno. Postavite brojač na nulu i ispraznite popis i rječnik. Povećajte varijablu pobjednika za jedan i ako se pretvori u šest, pozovite funkciju pobjednika deklariranu ranije.

ako len (popis_odgovora) == 2:
ako odgovara [popis_odgovora[0]] == odgovara[popis_odgovora[1]]:
moja_oznaka.config (tekst="To je utakmica!")
za ključ u answer_dict:
ključ["država"] = "onemogućeno"
brojati = 0
lista_odgovora = []
answer_dict = {}
pobjednik += 1
ako pobjednik == 6:
pobijediti()

U suprotnom, resetirajte varijablu brojanja i popis. Prikaži okvir s porukom s naslovom i sadržajem koji to prikazuje kao netočno podudaranje. Iterirajte po popisu odgovora i postavite tekst pločice na razmak. Ponovno postavite oznaku i ispraznite rječnik. Ovo osigurava da nema vidljivog teksta na gumbu i oznaci nakon što korisnik odabere netočne pločice.

drugo:
brojati = 0
lista_odgovora = []
messagebox.showinfo("Netočno!", "Netočno")
za ključ u answer_dict:
ključ["tekst"] = " "
moja_oznaka.config (tekst=" ")
answer_dict = {}

Definirajte 12 gumba. Postavite nadređeni prozor u koji ih želite smjestiti, tekst koji trebaju prikazati, stil fonta koji trebaju imati, njihovu visinu i širinu te naredbu koja će se izvršiti kada se klikne. Ne zaboravite koristiti lambda funkciju za prosljeđivanje podataka u button_click() funkcija. Postavi olakšanje parametar za utor za stvaranje 3-D efekta dubine oko gumba.

b0 = Gumb (moj_okvir, tekst=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: button_click (b0, 0), reljef="utor")
b1 = Gumb (moj_okvir, tekst=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: klik_na gumb (b1, 1), reljef="utor")
b2 = Gumb (moj_okvir, tekst=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: button_click (b2, 2), reljef="utor")
b3 = Gumb (moj_okvir, tekst=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: button_click (b3, 3), reljef="utor")
b4 = Gumb (moj_okvir, tekst=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: button_click (b4, 4), reljef="utor")
b5 = Gumb (my_frame, text=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: button_click (b5, 5), reljef="utor")
b6 = Gumb (my_frame, text=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: button_click (b6, 6), reljef="utor")
b7 = Gumb (my_frame, text=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: button_click (b7, 7), reljef="utor")
b8 = Gumb (my_frame, text=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: button_click (b8, 8), reljef="utor")
b9 = Gumb (moj_okvir, tekst=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: klik_na gumb (b9, 9), reljef="utor")
b10 = Gumb (my_frame, text=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: button_click (b10, 10), reljef="utor")
b11 = Gumb (my_frame, text=' ', font=("Helvetica", 20), visina=4, širina=8, naredba=lambda: klik_na gumb (b11, 11), reljef="utor")

Organizirajte gumbe u tabelarnom formatu koji se sastoji od tri retka i četiri stupca pomoću Tkinterovog grid managera. Da biste to učinili, nazovite rešetka() i proslijedite red zajedno s brojem stupca u koji ga želite smjestiti.

b0.mreža (red=0, stupac=0)
b1.mreža (red=0, stupac=1)
b2.mreža (red=0, stupac=2)
b3.mreža (red=0, stupac=3)
b4.mreža (red=1, stupac=0)
b5.mreža (red=1, stupac=1)
b6.mreža (red=1, stupac=2)
b7.mreža (red=1, stupac=3)
b8.mreža (red=2, stupac=0)
b9.mreža (red=2, stupac=1)
b10.mreža (red=2, stupac=2)
b11.mreža (red=2, stupac=3)

Definirajte oznaku koja prikazuje prazan niz i dodajte ispunu od 20 u okomitom smjeru. Definirajte izbornik najviše razine na korijenskom prozoru i pričvrstite ga okretanjem otkinuti parametar za lažno. Dodajte stavku podizbornika, Mogućnosti koristiti dodaj_kaskadu parametar.

Dodajte dvije stavke izbornika zajedno s naredbama koje bi trebale izvršiti kada se klikne u podizborniku pod nazivom Resetiraj igru i Izađi iz igre. Dodajte razdjelnik između njih za razgraničenje.

my_label = Oznaka (korijen, tekst="")
moja_oznaka.pack (pady=20)

my_menu = Izbornik (root)
root.config (izbornik=moj_izbornik)
option_menu = Izbornik (my_menu, tearoff=lažno)
moj_izbornik.dodaj_kaskadu (oznaka="Opcije", izbornik=izbornik_opcija)
option_menu.add_command (label="Poništi igru", naredba=reset)
option_menu.add_separator()
option_menu.add_command (label="Izlaz iz igre", naredba=root.quit)

The glavna petlja() funkcija govori Pythonu da pokrene Tkinter petlju događaja i osluškuje događaje dok ne zatvorite prozor.

root.mainloop()

Sastavite sav kod. Sada je igra memorijskih pločica spremna za igranje.

Rezultat igre Memory Tile

Prilikom pokretanja programa pojavljuje se 12 gumba s praznim tekstom zajedno s Mogućnosti Jelovnik. Na klik Resetiraj igru, prozor se pojavljuje na isti način.

Nakon odabira dvije podudarne pločice, gumbi se prikazuju onemogućeni, a oznaka prikazuje da je odabir točan.

Nakon odabira dvije pločice koje se ne podudaraju, pojavljuje se okvir s porukom koji pokazuje da odabir nije bio točan. Gumbi i naljepnica vraćaju se u prvobitno prazno stanje.

Nakon uspješnog povezivanja svih izbora, program sve pločice pretvara u zelene i prikazuje pobjedničku poruku.

Igre koje možete napraviti koristeći Python

Python nudi razne module za izradu igara. Za stvaranje jednostavnih igara temeljenih na riječima ili izboru kao što su Hangman, Tic-Tac-Toe ili Rock Paper Scissors možete koristiti module Tkinter i Random. Za razvoj igara koje trebaju više grafike, možete koristiti Pygame.

Pygame je skup Python modula koji radi na svim platformama. Uključuje računalne grafike i knjižnice zvukova koje igre čine interaktivnijima. Neke od igara koje možete izraditi pomoću Pygamea uključuju igru ​​Snake, igru ​​slagalice pamćenja i Sudoku.