Bouw dit leuke numerologiespel in Python om stringmanipulatie te oefenen en meer te weten te komen over Tkinter.
VLAMMEN is een leuk spel voor kinderen dat staat voor Vrienden, Geliefden, Aanhankelijk, Huwelijk en Vijanden. De game neemt de namen van twee mensen en bepaalt met een reeks stappen hun relatie. Om FLAMES te spelen, noteer je de namen van de twee personen, elimineer je de overeenkomende letters en tel je het aantal resterende karakters op.
Herhaal de letters van het woord, VLAMMEN met behulp van de telling en verwijder die letter. Als de telling bijvoorbeeld vier is, verwijdert u de letter M. De telling begint weer bij E. Herhaal dit proces totdat er nog maar één letter over is, die de relatiestatus aangeeft.
De Tkinter-module
Om het FLAMES-spel te bouwen, gebruik je de Tkinter-module. Tkinter is een platformonafhankelijke, eenvoudige en gebruiksvriendelijke module waarmee u snel grafische gebruikersinterfaces kunt maken. Enkele van de applicaties die u als beginner met Tkinter kunt bouwen, zijn onder meer een
Muziekspeler, Kalender, Gewichtsconversietool, en een Woord allegaartje spel.Om tkinter in uw systeem te installeren, voert u de volgende opdracht uit in de terminal:
pip installeer tkinter
Hoe VLAMMEN-spel te bouwen met behulp van Python
Hierin vind je de broncode van het FLAMES-spel met behulp van Python GitHub-opslagplaats.
Importeer de Tkinter-module. Definieer een functie, verwijder_match_char() die twee lijsten als invoer accepteert. Gebruik een geneste for-lus om beide lijsten te herhalen. Controleer of er een overeenkomend karakter is; als dat zo is, verwijder het dan uit beide lijsten en maak een derde lijst die beide lijsten samenvoegt met een sterretje ertussen. Het sterretje fungeert als scheidingsteken.
Retourneer de derde lijst samen met de gevonden match als True. Als er geen letters overeenkomen, retourneert u de lijst zoals hierboven gemaakt.
van tkinter importeren *
defremove_match_char(lijst1, lijst2):
voor i in bereik (len (lijst1)):
voor J in bereik (len (lijst2)):
als lijst1[i] == lijst2[j]:
c = lijst1[i]
lijst1.verwijderen (c)
lijst2.verwijderen (c)
lijst3 = lijst1 + ["*"] + lijst2
opbrengst [lijst3, WAAR]
lijst3 = lijst1 + ["*"] + lijst2
opbrengst [lijst3, Vals]
Definieer een functie, vertel_status(). Haal de naam op van de persoon die de gebruiker heeft ingevoerd met behulp van de krijgen() methode op de invoerwidget. Converteer alle letters naar kleine letters en verwijder eventuele spaties ertussen. Zet de naam om in een lijst met tekens. Herhaal dit met de naam van de tweede persoon en stel de doorgaan variabel naar WAAR.
defvertel_status():
p1 = Persoon1_veld.get()
p1 = p1.lager()
p1.vervangen(" ", "")
p1_list = lijst (p1)
p2 = Persoon2_veld.get()
p2 = p2.lager()
p2.vervangen(" ", "")
p2_list = lijst (p2)
verder = WAAR
Totdat de waarde van doorgaan waar is, belt u de verwijder_match_char() functie en geef de twee lijsten door die u zojuist hebt gemaakt. Sla de samengevoegde lijst en de vlagstatus op die van de functie is ontvangen. Zoek de index van het sterretje dat u hebt ingevoegd en verdeel de tekenreeksen in twee lijsten ervoor en erna.
Tel het aantal karakters in de twee lijsten en definieer een lijst met de verschillende statussen die een relatie kan hebben volgens het FLAMES-spel.
terwijl doorgaan:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list[0]
doorgaan = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_list = con_list[star_index + 1:]
aantal = len (p1_lijst) + len (p2_lijst)
resultaat = ["Vrienden", "Liefde", "Affectie", "Huwelijk", "Vijand", "Broers of zussen"]
Sla de indexwaarde op van waaruit u de slicing moet uitvoeren totdat de letters in de resultatenlijst niet nul zijn. Als de index groter is dan of gelijk is aan nul, splitst u de lijsten in twee delen en slaat u de samengevoegde tekenreeks op met het rechterdeel als eerste toegevoegd in volgorde. Dit zorgt ervoor dat u tegen de klok in kunt tellen.
Voeg het resultaat in het statusveld in op de eerste tekenpositie om de relatiestatus weer te geven.
terwijl len (resultaat) > 1:
split_index = (tel % len (resultaat) - 1)als split_index >= 0:
rechts = resultaat[split_index + 1:]
links = resultaat[: split_index]
resultaat = rechts + links
anders:
resultaat = resultaat[: len (resultaat) - 1]
Statusveld.insert(0, resultaat[0])
Definieer een functie, wis alles(). Gebruik de functie delete() van de eerste tot de laatste index in de drie invoervelden om de inhoud die op het scherm wordt weergegeven, te wissen. Gebruik de methode focus_set() op het eerste invoerveld om de gebruiker te activeren en aan te geven om er waarden in in te voeren.
defwis alles():
Persoon1_veld.verwijderen(0, EINDE)
Persoon2_veld.verwijderen(0, EINDE)
Statusveld.verwijderen(0, EINDE)
Persoon1_veld.focus_set()
Initialiseer de Tkinter-instantie en geef het hoofdvenster weer door het door te geven aan de klasse. Stel de achtergrondkleur van uw keuze, de grootte en de titel van uw applicatie in.
wortel = Tk()
root.configure (achtergrond='#A020F0')
root.geometry("700x200")
hoofdmap.titel("VLAMMEN Spel")
Definieer drie labels om de twee personen en hun relatiestatus aan te duiden. Stel het bovenliggende venster in waarin u ze wilt plaatsen, de tekst die moet worden weergegeven, de letterkleur, de achtergrondkleur en de letterstijlen. Voeg wat opvulling toe in de horizontale richting.
label1 = Label (hoofdmap, tekst="Naam 1: ", fg='#ffffff',bg='#A020F0', lettertype=("arieel",20,"vetgedrukt"), padx='20')
label2 = Label (hoofdmap, tekst="Naam 2: ", fg='#ffffff',bg='#A020F0', lettertype=("arieel",20,"vetgedrukt"), padx='20')
label3 = Label (hoofdmap, tekst="Relatie status: ", fg='#ffffff', bg='#A020F0',lettertype=("arieel",20,"vetgedrukt"), padx='20')
Gebruik de rastermanager om de drie widgets in de eerste kolom te rangschikken. Plaats het eerste label in de tweede rij, het tweede label in de derde rij en het derde label in de vierde rij.
label1.grid (rij=1, kolom=0)
label2.grid (rij=2, kolom=0)
label3.grid (rij=4, kolom=0)
Definieer drie invoerwidgets om de waarden van de twee personen te krijgen en hun status weer te geven. Stel het bovenliggende venster in waarin u de widgets wilt plaatsen en de lettertypestijlen die het moet hebben.
Person1_field = invoer (root, font=("arieel", 15, "vetgedrukt"))
Person2_field = Invoer (root, font=("arieel", 15, "vetgedrukt"))
Status_field = Invoer (root, font=("arieel",15,"vetgedrukt"))
Gebruik op dezelfde manier de rastermanager om de widgets in de tweede kolom te ordenen. Gebruik de ipadx eigenschap om het aantal pixels in te stellen dat binnen de randen van de widget moet worden opgevuld.
Person1_field.grid (rij=1, kolom=1, ipadx="50")
Person2_field.grid (rij=2, kolom=1, ipadx="50")
Status_field.grid (rij=4, kolom=1, ipadx="50")
Definieer twee knoppen, Indienen En Duidelijk. Stel het bovenliggende venster in waarin u ze wilt plaatsen, de tekst die moet worden weergegeven, de achtergrondkleur, de kleur van het lettertype, de functies die ze moeten uitvoeren wanneer erop wordt geklikt en de lettertypestijlen.
Gebruik de rastermanager om de knoppen respectievelijk in de vierde en zesde rij van de tweede kolom te plaatsen.
button1 = Knop (hoofdmap, tekst="Indienen", bg="#00ff00", fg="zwart", commando=tell_status, font=("arieel",13,"vetgedrukt") )
button2 = Knop (hoofdmap, tekst="Duidelijk", bg="#00ff00", fg="zwart", commando=clear_all, font=("arieel",13,"vetgedrukt"))
knop1.raster (rij=3, kolom=1)
button2.grid (rij=5, kolom=1)
De Hoofdlus() functie vertelt Python om de Tkinter-gebeurtenislus uit te voeren en te luisteren naar gebeurtenissen totdat u het venster sluit.
root.mainloop()
Zet alle code bij elkaar en maak je klaar om het FLAMES-spel binnen handbereik te spelen.
Voorbeelduitvoer van het VLAMMEN-spel
Bij het uitvoeren van het bovenstaande programma geeft het programma de FLAMES-speltoepassing weer met drie labels, drie invoervelden en twee knoppen die in een raster zijn gerangschikt. Bij het invoeren van de namen "Tony Stark" en "Pepper Potts", geeft het programma hun relatiestatus weer als "Love".
Games die je kunt bouwen met Python
Pygame, Arcade, Panda3D, PyOpenGL en Pyglet zijn enkele handige modules waarmee je Python-spellen kunt bouwen. Met Pygame kun je 2D-spellen bouwen zoals Super Mario Bros, Flappy Bird en Snake. Met Arcade kun je een Pac-Man-, Asteroids- of Breakout-kloon bouwen.
Panda3D kan je helpen bij het bouwen van 3D-games zoals Toontown Online, Pirates of the Caribbean Online en Disney's Virtual Magic Kingdom.