Håll koll på dina kognitiva förmågor genom att bygga detta minnesbrickaspel.

Minnesbrickan eller matchningsspelet är ett utmärkt och roligt sätt att öka kognitiva förmågor, förbättra minnet och förbättra fokus. Spelet har en uppsättning brickor som du måste vända en efter en, memorera och välja de som matchar. Om du matchar alla brickor korrekt vinner du spelet.

Så hur kan du utveckla detta fantastiska spel med Python?

Modulerna Tkinter och Random

Du kan bygga minnesbrickorna med modulerna Tkinter och Random. Tkinter låter dig skapa skrivbordsapplikationer. Den erbjuder en mängd olika widgets som knappar, etiketter och textrutor som gör det lättare att utveckla applikationer som kalendrar, miniräknare och att göra-listor. För att installera Tkinter, öppna terminalen och kör:

pip installera tkinter

Random-modulen är en inbyggd Python-modul som används för att generera pseudoslumptal. Med hjälp av detta, du kan bygga en slumpmässig lösenordsgenerator, en applikation för simulering av tärningskast eller en listblandare. Dessutom kan du också

instagram viewer
utveckla intressanta spel som handcricket och gissningsspel.

Hur man bygger spelet Memory Tile med Python

Du kan hitta källkoden för att bygga minnesbrickspelet med Python i detta GitHub-förråd.

Börja med att importera Tkinter och Random-modulen. Initiera rotfönstret och ställ in titel och dimensioner i pixlar.

från tkinter importera *
importera slumpmässig
från tkinter importera meddelandebox

root = Tk()
root.title("Memory Tile Game")
root.geometry("760x550")

Definiera två globala variabler och initiera vinnarvariabeln till noll. Deklarera en lista över objekt som kommer att visas på brickorna. Ordna om listan med hjälp av de slumpmässiga modulerna blanda() metod. Definiera en ram i rotfönstret och lägg till en utfyllnad på 10 i vertikal riktning.

Initiera en räknevariabel till 0 och deklarera en svarslista respektive ordbok.

global vinnare, matcher
vinnare = 0
matchar = ["äpple","äpple","banan","banan", "orange","orange", "blåbär","blåbär","mullbär","mullbär", "druvor","druvor"]
random.shuffle (matchar)
my_frame = Ram (rot)
my_frame.pack (pady=10)
räkna = 0
svarslista = []
answer_dict = {}

Definiera en funktion, återställa(). Ställ in etikettens text till en tom sträng med hjälp av config() fungera. Definiera en knapplista, en för var och en av brickorna. Iterera över listan och ställ in texten på knappbrickan till en tom sträng, bakgrundsfärgen till standard (SystemButtonFace), och tillståndet till det normala.

defåterställa():
my_label.config (text="")
button_list = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
för knapp i button_list:
button.config (text=" ", bg="SystemButtonFace", state="vanligt")

Definiera en funktion, vinna(). Ställ in ett vinnande meddelande i textparametern för etiketten med hjälp av config() fungera. Definiera knapplistan som tidigare och iterera genom den för att ställa in brickans bakgrundsfärg till ljusgrön.

defvinna():
my_label.config (text="Grattis! Du vinner!")
button_list = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
för knapp i button_list:
button.config (bg="#90EE90")

Definiera en funktion, button_click() som tar knappen och dess nummer som inmatningsparametrar. Referera till de globala variablerna, listan och ordlistan. Om texten på knappen är lika med ett mellanslag och antalet är mindre än två, infoga och visa knappens text. Lägg till knappnumret i svarslistan och namnet i svarslexikonet. Öka räknevariabeln med en.

defbutton_click(b, nummer):
global count, answer_list, answer_dict, vinnare
om b["text"] == ' 'och räkna < 2:
b["text"] = matchar[nummer]
answer_list.append (nummer)
answer_dict[b] = matchar[nummer]
räkna += 1

Om längden på svarslistan är två betyder det att användaren har valt två brickor. Om texten i den första brickan stämmer överens med den andra, konfigurera etiketten för att visa att båda matchar korrekt. Vrid knappens status till inaktiverad. Ställ in antalet till noll och töm listan och ordlistan. Öka vinnarvariabeln med en och om den blir sex, anropa vinstfunktionen som deklarerades tidigare.

om len (answer_list) == 2:
om matchar[answer_list[0]] == matchar[answer_list[1]]:
my_label.config (text="Det är en match!")
för nyckel i answer_dict:
nyckel["stat"] = "Inaktiverad"
räkna = 0
svarslista = []
answer_dict = {}
vinnare += 1
om vinnare == 6:
vinna()

Annars återställer du räknevariabeln och listan. Visa en meddelanderuta med titeln och innehållet som visar det som en felaktig matchning. Iterera över svarslistan och ställ in texten på brickan till ett mellanslag. Återställ etiketten och töm ordlistan. Detta säkerställer att det inte finns någon synlig text på knappen och etiketten efter att användaren har valt felaktiga brickor.

annan:
räkna = 0
svarslista = []
messagebox.showinfo("Felaktig!", "Felaktig")
för nyckel i answer_dict:
nyckel["text"] = " "
my_label.config (text=" ")
answer_dict = {}

Definiera 12 knappar. Ställ in det överordnade fönstret du vill placera dem i, texten de ska visa, typsnittsstilen de ska ha, deras höjd och bredd och kommandot som ska köras när du klickar på dem. Kom ihåg att använda lambdafunktionen för att skicka data till button_click() fungera. Ställ in lättnad parameter till räffla för att skapa en 3D-djupeffekt runt knappen.

b0 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b0, 0), lättnad="räffla")
b1 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b1, 1), lättnad="räffla")
b2 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b2, 2), lättnad="räffla")
b3 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b3, 3), lättnad="räffla")
b4 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b4, 4), lättnad="räffla")
b5 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b5, 5), lättnad="räffla")
b6 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b6, 6), lättnad="räffla")
b7 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b7, 7), lättnad="räffla")
b8 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b8, 8), lättnad="räffla")
b9 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b9, 9), lättnad="räffla")
b10 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b10, 10), lättnad="räffla")
b11 = Knapp (min_ram, text=' ', typsnitt=("Helvetica", 20), höjd=4, bredd=8, kommando=lambda: button_click (b11, 11), lättnad="räffla")

Organisera knapparna i ett tabellformat som består av tre rader och fyra kolumner med hjälp av Tkinters rutnätshanterare. För att göra det, ring rutnät() metod och skicka raden tillsammans med kolumnnumret du vill placera den i.

b0.grid (rad=0, kolumn=0)
b1.grid (rad=0, kolumn=1)
b2.grid (rad=0, kolumn=2)
b3.grid (rad=0, kolumn=3)
b4.grid (rad=1, kolumn=0)
b5.grid (rad=1, kolumn=1)
b6.grid (rad=1, kolumn=2)
b7.grid (rad=1, kolumn=3)
b8.grid (rad=2, kolumn=0)
b9.grid (rad=2, kolumn=1)
b10.grid (rad=2, kolumn=2)
b11.grid (rad=2, kolumn=3)

Definiera en etikett som visar en tom sträng och lägg till en utfyllnad på 20 i vertikal riktning. Definiera en toppnivåmeny i rotfönstret och bifoga den genom att vrida på riva av parameter till Falsk. Lägg till ett undermenyalternativ, alternativ använda add_cascade parameter.

Lägg till två menyalternativ tillsammans med de kommandon som de ska utföra när de klickas på i undermenyn med namnet Återställ spel och Avsluta spelet. Lägg till en avskiljare mellan dem för avgränsning.

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="Alternativ", menu=option_meny)
option_menu.add_command (etikett="Återställ spel", kommando=återställ)
option_menu.add_separator()
option_menu.add_command (etikett="Avsluta spelet", command=root.quit)

De mainloop() funktionen säger åt Python att köra Tkinter-händelsslingan och lyssna efter händelser tills du stänger fönstret.

root.mainloop()

Sätt ihop all kod. Nu är minnesbrickaspelet klart att spela.

Utdata från Memory Tile Game

När du kör programmet visas 12 knappar med tom text tillsammans med alternativ meny. På att klicka Återställ spel, visas fönstret på samma sätt.

När du väljer två matchande brickor visas knapparna inaktiverade och etiketten visar att valet är korrekt.

När du väljer två brickor som inte matchar, visas en meddelanderuta som indikerar att valet var felaktigt. Knapparna och etiketten återgår till sitt ursprungliga tomma tillstånd.

När alla val har matchats, gör programmet alla brickor gröna och visar det vinnande meddelandet.

Spel du kan bygga med Python

Python erbjuder en mängd olika moduler för att bygga spel. För att skapa enkla ord- eller valbaserade spel som Hangman, Tic-Tac-Toe eller Rock Paper Scissors kan du använda modulerna Tkinter och Random. För att utveckla spel som behöver mer grafik kan du använda Pygame.

Pygame är en uppsättning Python-moduler som fungerar på alla plattformar. Det innehåller datorgrafik och ljudbibliotek som gör spelen mer interaktiva. Några av de spel du kan bygga med Pygame inkluderar Snake-spelet, minnespusselspelet och Sudoku.