Preverite svoje kognitivne sposobnosti tako, da sestavite to igro spominskih ploščic.

Spominska ploščica ali igra ujemanja je odličen in zabaven način za krepitev kognitivnih sposobnosti, izboljšanje spomina in izboljšanje osredotočenosti. Igra ima niz ploščic, ki jih morate obrniti eno za drugo, si zapomniti in izbrati tiste, ki se ujemajo. Če pravilno ujemate vse ploščice, zmagate v igri.

Kako lahko torej razvijete to neverjetno igro z uporabo Pythona?

Moduli Tkinter in Random

Igro spominske ploščice lahko sestavite z moduloma Tkinter in Random. Tkinter omogoča ustvarjanje namiznih aplikacij. Ponuja različne pripomočke, kot so gumbi, oznake in besedilna polja, ki olajšajo razvijati aplikacije, kot so koledarji, kalkulatorji in seznami opravil. Če želite namestiti Tkinter, odprite terminal in zaženite:

pip namestite tkinter

Modul Random je vgrajen modul Python, ki se uporablja za generiranje psevdonaključnih števil. Z uporabo tega, lahko sestavite generator naključnih gesel, aplikacija za simulacijo metanja kock ali mešalnik seznamov. Poleg tega lahko tudi

instagram viewer
razvijati zanimive igre, kot je ročni kriket in igre ugibanja številk.

Kako zgraditi igro Memory Tile z uporabo Pythona

Tukaj lahko najdete izvorno kodo za gradnjo igre spominske ploščice z uporabo Pythona Repozitorij GitHub.

Začnite z uvozom modula Tkinter in Random. Inicializirajte korensko okno in nastavite naslov in dimenzije v slikovnih pikah.

od tkinter uvoz *
uvoz naključen
od tkinter uvoz sporočilno polje

koren = Tk()
root.title('Igra spominskih ploščic')
root.geometry("760x550")

Definirajte dve globalni spremenljivki in inicializirajte zmagovalno spremenljivko na nič. Navedite seznam elementov, ki bodo prikazani na ploščicah. Preuredite seznam z uporabo naključnih modulov premešaj() metoda. Določite okvir v korenskem oknu in dodajte oblazinjenje 10 v navpični smeri.

Inicializirajte spremenljivko štetja na 0 in deklarirajte seznam odgovorov oziroma slovar.

globalno zmagovalec, tekme
zmagovalec = 0
ujema se = ["jabolko","jabolko","banana","banana", "oranžna","oranžna", "borovnica","borovnica","murva","murva", "grozdje","grozdje"]
random.shuffle (ujema se)
my_frame = Okvir (koren)
moj_okvir.pack (pady=10)
štetje = 0
seznam_odgovorov = []
answer_dict = {}

Definirajte funkcijo, ponastaviti(). Nastavite besedilo oznake na prazen niz z uporabo config() funkcijo. Določite seznam gumbov, enega za vsako ploščico. Iterirajte po seznamu in nastavite besedilo na ploščici gumba na prazen niz, barvo ozadja na privzeto (SystemButtonFace), in stanje v normalno stanje.

defponastaviti():
my_label.config (besedilo="")
gumb_seznam = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
za gumb v gumb_seznam:
button.config (text=" ", bg="SystemButtonFace", stanje="normalno")

Definirajte funkcijo, zmaga(). Nastavite zmagovalno sporočilo v besedilnem parametru oznake z uporabo config() funkcijo. Določite seznam gumbov kot prej in se pomikajte po njem, da nastavite barvo ozadja ploščice na svetlo zeleno.

defzmaga():
my_label.config (besedilo=»Čestitam! Zmagal si!")
gumb_seznam = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
za gumb v gumb_seznam:
button.config (bg="#90EE90")

Definirajte funkcijo, button_click() ki vzame gumb in njegovo številko kot vhodna parametra. Sklicevanje na globalne spremenljivke, seznam in slovar. Če je besedilo gumba enako presledku in je število manjše od dveh, vstavite in prikažite besedilo gumba. Dodajte številko gumba na seznam odgovorov in ime v slovar odgovorov. Povečaj spremenljivko štetja za eno.

defgumb_klik(b, številka):
globalno count, answer_list, answer_dict, zmagovalec
če b["besedilo"] == ' 'in štetje < 2:
b["besedilo"] = ujema se [število]
answer_list.append (število)
answer_dict[b] = ujema se [število]
štetje += 1

Če je dolžina seznama odgovorov dve, pomeni, da je uporabnik izbral dve ploščici. Če se besedilo prve ploščice ujema z drugo, konfigurirajte oznako tako, da prikazuje, da se obe pravilno ujemata. Obrnite stanje gumba na onemogočeno. Nastavite štetje na nič ter izpraznite seznam in slovar. Povečajte zmagovalno spremenljivko za eno in če se spremeni na šest, pokličite prej deklarirano funkcijo zmagovalca.

če len (seznam_odgovorov) == 2:
če ujema se [seznam_odgovorov[0]] == se ujema z [answer_list[1]]:
my_label.config (besedilo="To je tekma!")
za ključ v answer_dict:
ključ ["država"] = "onemogočeno"
štetje = 0
seznam_odgovorov = []
answer_dict = {}
zmagovalec += 1
če zmagovalec == 6:
zmaga()

V nasprotnem primeru ponastavite spremenljivko štetja in seznam. Prikažite okno s sporočilom z naslovom in vsebino, ki prikazuje nepravilno ujemanje. Preglejte seznam odgovorov in nastavite besedilo ploščice na presledek. Ponastavite oznako in izpraznite slovar. To zagotavlja, da na gumbu in oznaki ni vidnega besedila, potem ko uporabnik izbere napačne ploščice.

drugače:
štetje = 0
seznam_odgovorov = []
messagebox.showinfo("Napačno!", "nepravilno")
za ključ v answer_dict:
ključ ["besedilo"] = " "
my_label.config (besedilo=" ")
answer_dict = {}

Določite 12 gumbov. Nastavite nadrejeno okno, v katerega jih želite postaviti, besedilo, ki naj se prikaže, slog pisave, ki naj ga imajo, njihovo višino in širino ter ukaz, ki naj se izvede ob kliku. Ne pozabite uporabiti funkcije lambda za prenos podatkov v button_click() funkcijo. Nastavite olajšanje parameter za utor da ustvarite učinek 3-D globine okrog gumba.

b0 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b0, 0), relief="utor")
b1 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b1, 1), relief="utor")
b2 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b2, 2), relief="utor")
b3 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b3, 3), relief="utor")
b4 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b4, 4), relief="utor")
b5 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b5, 5), relief="utor")
b6 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b6, 6), relief="utor")
b7 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b7, 7), relief="utor")
b8 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b8, 8), relief="utor")
b9 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b9, 9), relief="utor")
b10 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b10, 10), relief="utor")
b11 = Gumb (my_frame, text=' ', pisava=("Helvetica", 20), višina=4, širina=8, ukaz=lambda: gumb_klik (b11, 11), relief="utor")

Organizirajte gumbe v obliki tabele, ki je sestavljena iz treh vrstic in štirih stolpcev, z uporabo Tkinterjevega upravitelja omrežij. Če želite to narediti, pokličite mreža() in posredujte vrstico skupaj s številko stolpca, v katerega jo želite postaviti.

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

Določite oznako, ki prikazuje prazen niz, in dodajte odmik 20 v navpični smeri. Določite meni najvišje ravni v korenskem oknu in ga pritrdite tako, da zavrtite odtrgati parameter za False. Dodajte element podmenija, Opcije uporabljati add_cascade parameter.

Dodajte dva elementa menija skupaj z ukazi, ki naj bi jih izvršili ob kliku v imenovanem podmeniju Ponastavi igro in Izhod iz igre. Med njimi dodajte ločilo za razmejitev.

my_label = Oznaka (koren, besedilo="")
moja_oznaka.pack (pady=20)

my_menu = Meni (koren)
root.config (meni=moj_meni)
option_menu = Meni (my_menu, tearoff=False)
moj_meni.dodaj_kaskado (oznaka="Opcije", meni=meni_možnosti)
option_menu.add_command (label="Ponastavi igro", ukaz=ponastavi)
option_menu.add_separator()
option_menu.add_command (label="Izhod iz igre", ukaz=root.quit)

The glavna zanka() funkcija pove Pythonu, naj zažene zanko dogodkov Tkinter in posluša dogodke, dokler ne zaprete okna.

root.mainloop()

Sestavite vso kodo. Zdaj je igra spominske ploščice pripravljena za igranje.

Rezultat igre Memory Tile

Med zagonom programa se prikaže 12 gumbov s praznim besedilom skupaj z Opcije meni. Ob kliku Ponastavi igro, se okno prikaže na enak način.

Ko izberete dve ujemajoči se ploščici, sta gumba prikazana onemogočena in oznaka prikazuje, da je izbira pravilna.

Ko izberete dve ploščici, ki se ne ujemata, se prikaže okno s sporočilom, ki nakazuje, da je bila izbira napačna. Gumbi in nalepka se vrnejo v prvotno prazno stanje.

Po uspešnem ujemanju vseh izbir program obarva vse ploščice zelene in prikaže zmagovalno sporočilo.

Igre, ki jih lahko sestavite s Pythonom

Python ponuja različne module za izdelavo iger. Za ustvarjanje preprostih besednih ali izbirnih iger, kot so Hangman, Tic-Tac-Toe ali Rock Paper Scissors, lahko uporabite modula Tkinter in Random. Za razvoj iger, ki potrebujejo več grafike, lahko uporabite Pygame.

Pygame je nabor modulov Python, ki deluje na vseh platformah. Vključuje računalniško grafiko in zvočne knjižnice, zaradi katerih so igre bolj interaktivne. Nekaj ​​iger, ki jih lahko sestavite s Pygame, vključuje igro Snake, uganko spomina in sudoku.