Hold en sjekk av dine kognitive evner ved å bygge dette minnebrikkespillet.
Minneflisen eller matchende spillet er en utmerket og morsom måte å øke kognitive evner på, forbedre hukommelsen og forbedre fokus. Spillet har et sett med fliser som du må snu én etter én, huske og velge de som passer. Når du matcher alle brikkene riktig, vinner du spillet.
Så hvordan kan du utvikle dette fantastiske spillet ved å bruke Python?
Tkinter- og Random-modulene
Du kan bygge minnebrikkespillet ved å bruke modulene Tkinter og Random. Tkinter lar deg lage skrivebordsapplikasjoner. Den tilbyr en rekke widgets som knapper, etiketter og tekstbokser som gjør det enklere å utvikle applikasjoner som kalendere, kalkulatorer og gjøremålslister. For å installere Tkinter, åpne terminalen og kjør:
pip installer tkinter
Random-modulen er en innebygd Python-modul som brukes til å generere pseudo-tilfeldige tall. Ved å bruke dette, du kan bygge en tilfeldig passordgenerator, en simuleringsapplikasjon for terningkast eller en listestokker. I tillegg kan du også
utvikle interessante spill som håndcricket og antall gjettespill.Hvordan bygge minneflisspillet ved hjelp av Python
Du kan finne kildekoden for å bygge minnebrikkespillet ved å bruke Python i denne GitHub-depot.
Begynn med å importere Tkinter og Random-modulen. Initialiser rotvinduet, og angi tittel og dimensjoner i piksler.
fra tkinter import *
import tilfeldig
fra tkinter import meldingsboks
root = Tk()
root.title("Memory Tile Game")
root.geometry("760 x 550")
Definer to globale variabler og initialiser vinnervariabelen til null. Erklær en liste over elementer som vil vises på flisene. Omorganiser listen ved å bruke tilfeldige moduler tilfeldig rekkefølge() metode. Definer en ramme i rotvinduet og legg til en polstring på 10 i vertikal retning.
Initialiser en tellevariabel til 0 og erklær en svarliste og en ordbok.
global vinner, kamper
vinner = 0
matcher = ["eple","eple","banan","banan", "oransje","oransje", "blåbær","blåbær","mulberry","mulberry", "druer","druer"]
random.shuffle (treffer)
my_frame = Ramme (root)
my_frame.pack (pady=10)
telle = 0
svarliste = []
svar_dikt = {}
Definer en funksjon, nullstille(). Sett etikettens tekst til en tom streng ved å bruke config() funksjon. Definer en knappeliste, en for hver av flisene. Iterer over listen og sett teksten på knappeflisen til en tom streng, bakgrunnsfargen til standard (SystemButtonFace), og staten til normal.
defnullstille():
my_label.config (text="")
button_list = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
til knapp i button_list:
button.config (tekst=" ", bg="SystemButtonFace", stat="normal")
Definer en funksjon, vinne(). Angi en vinnende melding i tekstparameteren til etiketten ved å bruke config() funksjon. Definer knappelisten som tidligere og gjenta den for å sette flisens bakgrunnsfarge til lysegrønn.
defvinne():
my_label.config (text="Gratulerer! Du vinner!")
button_list = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
til knapp i button_list:
button.config (bg="#90EE90")
Definer en funksjon, button_click() som tar knappen og nummeret som inngangsparametere. Referer til de globale variablene, listen og ordboken. Hvis teksten på knappen tilsvarer et mellomrom og antallet er mindre enn to, setter du inn og viser teksten til knappen. Legg knappenummeret til svarlisten og navnet til svarordboken. Øk tellevariabelen med én.
defbutton_click(b, tall):
global telle, svar_liste, svar_dikt, vinner
hvis b["tekst"] == ' 'og telle < 2:
b["tekst"] = samsvarer[nummer]
answer_list.append (nummer)
answer_dict[b] = samsvarer[nummer]
telle += 1
Hvis lengden på svarlisten er to, betyr det at brukeren har valgt to fliser. Hvis teksten i den første flisen samsvarer med den andre, konfigurerer du etiketten til å vise at begge stemmer overens. Vri statusen til knappen til deaktivert. Sett antallet til null, og tøm listen og ordboken. Øk vinnervariabelen med én, og hvis den blir til seks, kall vinnerfunksjonen som ble erklært tidligere.
hvis len (answer_list) == 2:
hvis matcher[answer_list[0]] == samsvarer[answer_list[1]]:
my_label.config (text="Det er en kamp!")
til nøkkel i answer_dict:
nøkkel["stat"] = "funksjonshemmet"
telle = 0
svarliste = []
svar_dikt = {}
vinner += 1
hvis vinner == 6:
vinne()
Ellers tilbakestill tellevariabelen og listen. Vis en meldingsboks med tittel og innhold som viser det som et feiltreff. Iterer over svarlisten og sett teksten til flisen til et mellomrom. Tilbakestill etiketten og tøm ordboken. Dette sikrer at det ikke er synlig tekst på knappen og etiketten etter at brukeren har valgt feil fliser.
ellers:
telle = 0
svarliste = []
meldingsboks.visinfo("Stemmer ikke!", "Stemmer ikke")
til nøkkel i answer_dict:
nøkkel["tekst"] = " "
my_label.config (text=" ")
svar_dikt = {}
Definer 12 knapper. Angi det overordnede vinduet du vil plassere dem i, teksten de skal vise, skriftstilen de skal ha, høyden og bredden, og kommandoen som skal utføres når du klikker. Husk å bruke lambda-funksjonen for å sende dataene til button_click() funksjon. Sett lettelse parameter til spor for å lage en 3D-dybdeeffekt rundt knappen.
b0 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b0, 0), lettelse="spor")
b1 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b1, 1), lettelse="spor")
b2 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b2, 2), lettelse="spor")
b3 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b3, 3), lettelse="spor")
b4 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b4, 4), lettelse="spor")
b5 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b5, 5), lettelse="spor")
b6 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b6, 6), lettelse="spor")
b7 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b7, 7), lettelse="spor")
b8 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b8, 8), lettelse="spor")
b9 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b9, 9), lettelse="spor")
b10 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b10, 10), lettelse="spor")
b11 = Knapp (min_ramme, tekst=' ', font=("Helvetica", 20), høyde=4, bredde=8, kommando=lambda: button_click (b11, 11), lettelse="spor")
Organiser knappene i et tabellformat som består av tre rader og fire kolonner ved å bruke Tkinters rutenettbehandling. For å gjøre det, ring Nett() metoden og send raden sammen med kolonnenummeret du vil plassere den i.
b0.grid (rad=0, kolonne=0)
b1.grid (rad=0, kolonne=1)
b2.grid (rad=0, kolonne=2)
b3.grid (rad=0, kolonne=3)
b4.grid (rad=1, kolonne=0)
b5.grid (rad=1, kolonne=1)
b6.grid (rad=1, kolonne=2)
b7.grid (rad=1, kolonne=3)
b8.grid (rad=2, kolonne=0)
b9.grid (rad=2, kolonne=1)
b10.grid (rad=2, kolonne=2)
b11.grid (rad=2, kolonne=3)
Definer en etikett som viser en tom streng og legg til en utfylling på 20 i vertikal retning. Definer en meny på toppnivå i rotvinduet og fest den ved å vri på rive av parameter til Falsk. Legg til et undermenyelement, Alternativer bruker add_cascade parameter.
Legg til to menyelementer sammen med kommandoene de skal utføre når de klikkes i undermenyen som heter Tilbakestill spillet og Avslutt spillet. Legg til en skilletegn mellom dem for avgrensning.
my_label = Etikett (root, text="")
my_label.pack (pady=20)
my_menu = Meny (root)
root.config (menu=min_meny)
option_menu = Meny (min_meny, tearoff=Falsk)
my_menu.add_cascade (label="Alternativer", meny=opsjonsmeny)
option_menu.add_command (label="Tilbakestill spillet", kommando=reset)
option_menu.add_separator()
option_menu.add_command (label="Avslutt spillet", kommando=root.quit)
De mainloop() funksjonen forteller Python å kjøre Tkinter-hendelsesløkken og lytte etter hendelser til du lukker vinduet.
root.mainloop()
Sett all koden sammen. Nå er minnebrikkespillet klart til å spilles.
Utdata fra Memory Tile Game
Når du kjører programmet, vises 12 knapper med tom tekst sammen med Alternativer Meny. Ved å klikke Tilbakestill spillet, vises vinduet på samme måte.
Når du velger to samsvarende fliser, vises knappene deaktivert og etiketten viser at valget er riktig.
Når du velger to fliser som ikke samsvarer, vises en meldingsboks som indikerer at valget var feil. Knappene og etiketten går tilbake til sin opprinnelige tomme tilstand.
Etter vellykket matching av alle valgene, gjør programmet alle brikkene grønne og viser vinnermeldingen.
Spill du kan bygge med Python
Python tilbyr en rekke moduler for å bygge spill. For å lage enkle ord- eller valgbaserte spill som Hangman, Tic-Tac-Toe eller Rock Paper Scissors kan du bruke modulene Tkinter og Random. For å utvikle spill som trenger mer grafikk, kan du bruke Pygame.
Pygame er et sett med Python-moduler som fungerer på alle plattformer. Det inkluderer datagrafikk og lydbiblioteker som gjør spillene mer interaktive. Noen av spillene du kan bygge med Pygame inkluderer Snake-spillet, minnepuslespillet og Sudoku.