Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Battlefield2, World of Tanks, The Sims4 och Freedom Force är några av de tusentals fantastiska spel som utvecklades med Python.

Tkinter, Python-standardgränssnittet till Tk GUI-verktygssatsen, är en kraftfull modul som gör det enkelt och roligt att skapa grafiska användargränssnitt. Använd den här modulen för att utveckla ett sinnesvridande färgspel. Lär dig också hur du använder modulen på vägen.

Vad är färgspelet?

I färgspelet visar programmet namnet på en färg på skärmen men i en annan typsnittsfärg. Till exempel visar den ordet Gul använder en röd typsnittsfärg och spelaren måste skriva in färgen på texten.

Denna obalans av information tillsammans med timern skapar en mängd förvirring och skapar en underhållande spelupplevelse.

Tkinter och Random-modulen

För att bygga färgspelet använder du tkinter modulen och slumpmässig modul. Tkinter är en plattformsoberoende, enkel och användarvänlig GUI-modul som du kan använda för att snabbt skapa grafiska användargränssnitt.

instagram viewer

Den har några användbara verktyg som etikett- och postwidgetar och layouthanterare som pack, rutnät och plats. Funktionerna som tillhandahålls är ganska enkla vilket gör det enkelt för nybörjarprogrammerare att designa appar utan större ansträngning. För att installera tkinter i ditt system, kör följande kommando i terminalen:

pip installera tkinter

Slumpmodulen är ett inbyggt bibliotek med vilket du kan generera slumpmässiga val. Med den här modulen, du kan utveckla handcricketspel, gissningsspel, magiska åttabollsspel, slumpmässiga lösenordsgeneratorer, och många fler.

Hur man bygger ett färgspel med Python

Källkoden för färgspelet är tillgänglig i en GitHub-förråd och är gratis för dig att använda under MIT-licensen.

Börja med att importera tkintern och den slumpmässiga modulen. Lagra namnet på färgerna som en lista med strängar och initiera Göra variabel till 0 och återstående tid till 60.

från tkinter importera *
importera slumpmässig

färger = ['Röd', 'Grön', 'Blå', 'Svart', 'Rosa', 'Vit', 'Lila', 'Gul', 'Brun']
poäng = 0
tid_återstående = 60

Definiera en funktion som heter beginGame() som tar händelse som ett ingångsargument. Funktionen utför två uppgifter. Först kontrollerar den om återstående tid är lika med 60. Om ja, anropar och kör den nedräkning() fungera. För det andra kallar det nästa färg() funktion som slumpmässigt blandar och visar färgen och poängen när spelet pågår.

defbörja spel(händelse):
om tid_återstående == 60:
nedräkning()
nextColour()

Definiera en funktion som heter nextColour() och referera till variablerna globalt. Om den återstående tiden är större än 0, ställ in fokus på inmatningsfältet med hjälp av focus_set() metod på inmatningsetiketten (lagrad i variabel e) definieras i den senare hälften av koden.

Använd skaffa sig() metod för att hämta postens aktuella text som en sträng och omvandla den till gemener för att undvika skiftlägesöverensstämmelse. Om detta är lika med färgen som visas på skärmen, öka poängen med ett. Använd radera() funktion från 0 till det sista indexet på inmatningswidgeten för att rensa innehållet.

defnästa Färg():
global Göra
global återstående tid
om tid_återstående > 0:
e.focus_set()
om e.get().lower() == färger[1].lägre():
poäng += 1
e.delete(0, SLUTET)

Använd blanda() funktion för att ordna om objekt i listan och visa färgetiketten med texten som den första färgen i listan och teckensnittsfärgen som den andra färgen i listan. Använd config() funktion på poängLabel (som ber om att trycka på Enter) för att visa poängen när spelet pågår.

 random.shuffle (färger)
label.config (fg=str (färger[1]), text=str (färger[0]))
scoreLabel.config (text="Göra: " + str (poäng))

Definiera en funktion som heter nedräkning() som refererar till variabeln för återstående tid och minskar den med ett. Använd config() funktion på tidsetikett för att visa återstående tid på skärmen och efter() funktion för att ringa tillbaka nedräkning funktion efter en fördröjning på 1000 millisekunder eller en sekund.

defnedräkning():
global återstående tid
om tid_återstående > 0:
tid_återstående -= 1
timeLabel.config (text="Tid kvar: " + str (återstående tid))
timeLabel.after(1000, nedräkning)

Initiera tkinter-instansen och visa rotfönstret. Ställ in titel, mått i pixlar och bakgrundsfärg för fönstret.

root = Tk()
root.title("Färgspel med en twist")
root.geometry("750x450")
root.configure (bakgrund='Orange')

Använd Märka widget för att instruera spelaren om spelinstruktionen. Den accepterar det överordnade fönstret där du skulle placera det. Texten ska visa teckensnittstyp och storlek tillsammans med etikettens bakgrundsfärg. Använd packa() funktion för att organisera etikettwidgeten i block innan du placerar dem i den överordnade widgeten.

På samma sätt definierar du notetiketten för att instruera användaren att trycka Stiga på för att starta spelet samt en tidsetikett för att visa återstående tid. Se till att alla etiketterna har en orange bakgrundsfärg, så att de smälter in i bakgrunden. Definiera en tom etikett som kommer att innehålla färgnamnen i nextColour() fungera.

instruktioner = Etikett (root, text="Skriv färgen på ordet inte texten ;)", typsnitt=('Arial', 24), bg="orange")
instruktioner.pack()
scoreLabel = Etikett (root, text="Tryck på Enter för att börja", typsnitt=('Arial', 24), bg="orange")
scoreLabel.pack()
timeLabel = Etikett (root, text="Återstående tid: " + str (återstående tid), font=('Arial', 24), bg="orange")
timeLabel.pack()
label = Etikett (root, font=('Arial', 90), bg="orange")

Som nämnts tidigare, använd inträdeswidgeten för att fånga spelarens svar. Ett viktigt steg är att binda Enter-tangenten med en händelse i tkinter-fönstret så att när spelaren trycker på den, kommer en viss funktion att utföras.

För att uppnå detta, passerar du nyckeln och beginGame() fungerar som parametrar till binda() fungera. Använd dessutom packa() och focus_set() metoder för att organisera och sätta fokus på inmatningsetiketten när du trycker på Enter-tangenten.

e = Entry (font=20)
root.bind('', börja spel)
e.pack()
e.focus_set()

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

root.mainloop()

Sätt ihop all kod så har du färgspelet med en twist redo att spela till hands.

Utdata från färgspel med Python

När du kör programmet Color Game visas ett fönster på skärmen. När du trycker på Enter börjar nedräkningen och spelaren måste börja skriva färgen på ordet. För varje rätt svar ökar poängen med ett och i slutändan visar den slutpoängen.

Utveckla spel med Python

Python är ett fantastiskt språk för spelutveckling. Språket är inte bara enkelt att förstå och använda, utan det gör det också möjligt för spelutvecklare på alla erfarenhetsnivåer att skapa fantastiska spelvärldar som är intressanta och underhållande.

Dessutom har kreatörer ett brett utbud av alternativ när det gäller att förverkliga idéer, tack vare de olika spelutvecklingsplattformarna som finns på marknaden, som PyGame eller Kivy.