Hold styr på dine kognitive evner ved at bygge dette hukommelsesspil.

Hukommelsesflisen eller matchende spil er en fremragende og sjov måde at booste kognitive evner, forbedre hukommelsen og forbedre fokus. Spillet har et sæt fliser, som du skal vende en efter en, huske og vælge dem, der matcher. Når du matcher alle brikkerne korrekt, vinder du spillet.

Så hvordan kan du udvikle dette fantastiske spil ved hjælp af Python?

Tkinter- og Random-modulerne

Du kan bygge hukommelsesflisespillet ved hjælp af modulerne Tkinter og Random. Tkinter giver dig mulighed for at oprette desktop-applikationer. Det tilbyder en række widgets som knapper, etiketter og tekstbokse, der gør det nemmere udvikle applikationer som kalendere, lommeregnere og huskelister. For at installere Tkinter skal du åbne terminalen og køre:

pip installer tkinter

Random-modulet er et indbygget Python-modul, der bruges til at generere pseudo-tilfældige tal. Ved at bruge dette, du kan bygge en tilfældig adgangskodegenerator, en applikation til simulering af terningkast eller en listeblander. Desuden kan du også

instagram viewer
udvikle interessante spil som håndcricket og tal gætte spil.

Sådan bygger du Memory Tile-spillet ved hjælp af Python

Du kan finde kildekoden til at bygge hukommelsesflisespillet ved hjælp af Python i dette GitHub-depot.

Begynd med at importere Tkinter og Random-modulet. Initialiser rodvinduet, og indstil titlen og dimensionerne i pixels.

fra tkinter importere *
importere tilfældig
fra tkinter importere beskedboks

root = Tk()
root.title('Memory Tile Game')
root.geometry("760 x 550")

Definer to globale variable og initialiser vindervariablen til nul. Erklær en liste over elementer, der vil blive vist på fliserne. Omarranger listen ved hjælp af de tilfældige moduler blande() metode. Definer en ramme i rodvinduet og tilføj en polstring på 10 i lodret retning.

Initialiser en tællevariabel til 0 og erklær en svarliste og en ordbog.

global vinder, kampe
vinder = 0
matcher = ["æble","æble","banan","banan", "orange","orange", "blåbær","blåbær","mulberry","mulberry", "druer","druer"]
random.shuffle (matches)
my_frame = Ramme (rod)
my_frame.pack (pady=10)
tælle = 0
svarliste = []
svar_dikt = {}

Definer en funktion, Nulstil(). Indstil etikettens tekst til en tom streng ved hjælp af config() fungere. Definer en knapliste, en for hver af fliserne. Gentag over listen og indstil teksten på knapfeltet til en tom streng, baggrundsfarven til standard (SystemButtonFace), og tilstanden til normal.

defNulstil():
my_label.config (text="")
knapliste = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
til knap i button_list:
button.config (tekst=" ", bg="SystemButtonFace", tilstand="normal")

Definer en funktion, vinde(). Indstil en vindende besked i tekstparameteren for etiketten ved hjælp af config() fungere. Definer knaplisten som tidligere, og gentag gennem den for at indstille flisens baggrundsfarve til lysegrøn.

defvinde():
my_label.config (text="Tillykke! Du vinder!")
knapliste = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
til knap i button_list:
button.config (bg="#90EE90")

Definer en funktion, button_click() der tager knappen og dens nummer som inputparametre. Henvis til de globale variabler, liste og ordbog. Hvis teksten på knappen er lig med et mellemrum, og antallet er mindre end to, skal du indsætte og vise knappens tekst. Føj knapnummeret til svarlisten og navnet til svarordbogen. Forøg tællevariablen med én.

defknap_klik(b, nummer):
global tælle, svar_liste, svar_dikt, vinder
hvis b["tekst"] == ' 'og tælle < 2:
b["tekst"] = matcher[nummer]
answer_list.append (nummer)
svar_dikt[b] = matcher[tal]
tælle += 1

Hvis længden af ​​svarlisten er to, betyder det, at brugeren har valgt to felter. Hvis teksten i den første flise matcher den anden, skal du konfigurere etiketten til at vise, at de begge matcher korrekt. Drej knappens tilstand til deaktiveret. Indstil tælleren til nul, og tøm listen og ordbogen. Forøg vindervariablen med én, og hvis den bliver til seks, skal du kalde den tidligere erklærede vinderfunktion.

hvis len (answer_list) == 2:
hvis matcher[svar_liste[0]] == matcher[answer_list[1]]:
my_label.config (text="Det er en Match!")
til nøgle i answer_dict:
nøgle["stat"] = "handicappet"
tælle = 0
svarliste = []
svar_dikt = {}
vinder += 1
hvis vinder == 6:
vinde()

Ellers skal du nulstille tællevariablen og listen. Vis en beskedboks med titlen og indholdet, der viser det som et forkert match. Gentag over svarlisten, og sæt flisens tekst til et mellemrum. Nulstil etiketten og tøm ordbogen. Dette sikrer, at der ikke er synlig tekst på knappen og etiketten, efter at brugeren har valgt forkerte fliser.

andet:
tælle = 0
svarliste = []
messagebox.showinfo("Ukorrekt!", "Ukorrekt")
til nøgle i answer_dict:
nøgle["tekst"] = " "
my_label.config (text=" ")
svar_dikt = {}

Definer 12 knapper. Indstil det overordnede vindue, du vil placere dem i, den tekst, de skal vise, den skrifttype, de skal have, deres højde og bredde, og den kommando, der skal udføres, når der klikkes på. Husk at bruge lambda-funktionen til at videregive data til button_click() fungere. Indstil lettelse parameter til rille for at skabe en 3D-dybdeeffekt omkring knappen.

b0 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b0, 0), lettelse="rille")
b1 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b1, 1), lettelse="rille")
b2 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b2, 2), lettelse="rille")
b3 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b3, 3), lettelse="rille")
b4 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b4, 4), lettelse="rille")
b5 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b5, 5), lettelse="rille")
b6 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b6, 6), lettelse="rille")
b7 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b7, 7), lettelse="rille")
b8 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b8, 8), lettelse="rille")
b9 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b9, 9), lettelse="rille")
b10 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b10, 10), lettelse="rille")
b11 = Knap (min_ramme, tekst=' ', skrifttype=("Helvetica", 20), højde=4, bredde=8, kommando=lambda: button_click (b11, 11), lettelse="rille")

Organiser knapperne i et tabelformat bestående af tre rækker og fire kolonner ved hjælp af Tkinters grid manager. For at gøre det, ring til gitter() metode, og send rækken sammen med det kolonnenummer, du vil placere den i.

b0.gitter (række=0, kolonne=0)
b1.gitter (række=0, kolonne=1)
b2.gitter (række=0, kolonne=2)
b3.gitter (række=0, kolonne=3)
b4.gitter (række=1, kolonne=0)
b5.gitter (række=1, kolonne=1)
b6.gitter (række=1, kolonne=2)
b7.gitter (række=1, kolonne=3)
b8.gitter (række=2, kolonne=0)
b9.grid (række=2, kolonne=1)
b10.gitter (række=2, kolonne=2)
b11.gitter (række=2, kolonne=3)

Definer en etiket, der viser en tom streng, og tilføj en polstring på 20 i lodret retning. Definer en menu på øverste niveau på rodvinduet og vedhæft den ved at dreje på afrivning parameter til Falsk. Tilføj et undermenupunkt, Muligheder bruger add_cascade parameter.

Tilføj to menupunkter sammen med de kommandoer, de skal udføre, når de klikkes i den navngivne undermenu Nulstil spil og Afslut spil. Tilføj en separator mellem dem til afgrænsning.

my_label = Etiket (rod, tekst="")
my_label.pack (pady=20)

my_menu = Menu (rod)
root.config (menu=min_menu)
option_menu = Menu (min_menu, tearoff=Falsk)
my_menu.add_cascade (label="Muligheder", menu=option_menu)
option_menu.add_command (label="Nulstil spil", kommando=nulstil)
option_menu.add_separator()
option_menu.add_command (label="Afslut spil", kommando=root.quit)

Det mainloop() funktion fortæller Python at køre Tkinter-hændelsesløkken og lytte efter hændelser, indtil du lukker vinduet.

root.mainloop()

Sæt hele koden sammen. Nu er hukommelsesflisespillet klar til at spille.

Output af Memory Tile Game

Når du kører programmet, vises 12 knapper med tom tekst sammen med Muligheder menu. Ved at klikke Nulstil spil, vises vinduet på samme måde.

Når du vælger to matchende felter, vises knapperne deaktiverede, og etiketten viser, at valget er korrekt.

Når du vælger to felter, der ikke stemmer overens, vises en meddelelsesboks, der angiver, at valget var forkert. Knapperne og etiketten vender tilbage til deres oprindelige tomme tilstand.

Når alle valgene er blevet matchet, gør programmet alle fliserne grønne og viser vindermeddelelsen.

Spil du kan bygge med Python

Python tilbyder en række moduler til at bygge spil. For at skabe enkle ord- eller valgbaserede spil som Hangman, Tic-Tac-Toe eller Rock Paper Scissors kan du bruge modulerne Tkinter og Random. For at udvikle spil, der har brug for mere grafik, kan du bruge Pygame.

Pygame er et sæt Python-moduler, der fungerer på alle platforme. Det inkluderer computergrafik og lydbiblioteker, der gør spillene mere interaktive. Et par af de spil, du kan bygge med Pygame, inkluderer Snake-spillet, memory-puslespil og Sudoku.