Bygg dette morsomme numerologispillet i Python for å øve på strengmanipulasjon og lære om Tkinter.
FLAMES er et morsomt spill for barn som står for venner, elskere, hengiven, ekteskap og fiender. Spillet tar navnene på to personer og, med en rekke trinn, bestemmer forholdet deres. For å spille FLAMES, noter ned navnene på de to personene, fjern de samsvarende bokstavene, og få tellingen av karakterene igjen.
Iterer over bokstavene i ordet, FLAMES med tellingen og fjern den bokstaven. For eksempel, hvis antallet er fire, fjern bokstaven M. Tellingen begynner fra E igjen. Gjenta denne prosessen til bare én bokstav gjenstår, som angir relasjonsstatusen.
Tkinter-modulen
For å bygge FLAMES-spillet bruker du Tkinter-modulen. Tkinter er en enkel og brukervennlig modul på tvers av plattformer som du kan bruke til å lage grafiske brukergrensesnitt raskt. Noen av applikasjonene du kan bygge som nybegynner med Tkinter inkluderer en Musikkspiller, Kalender, Vektkonverteringsverktøy, og en Word Jumble Game.
For å installere tkinter i systemet ditt, kjør følgende kommando i terminalen:
pip installer tkinter
Hvordan bygge FLAMES-spill ved hjelp av Python
Du kan finne kildekoden til FLAMES-spillet ved å bruke Python i denne GitHub-depot.
Importer Tkinter-modulen. Definer en funksjon, remove_match_char() som godtar to lister som input. Bruk en nestet for-løkke for å iterere over begge listene. Sjekk om det er en matchende karakter; hvis det er det, fjern den fra begge listene og lag en tredje liste som setter sammen begge listene med en stjerne i mellom. Stjernen fungerer som en skilletegn.
Returner den tredje listen sammen med treffet funnet som Sant. Hvis ingen bokstaver stemmer, returner listen som opprettet ovenfor.
fra tkinter import *
defremove_match_char(liste1, liste2):
til Jeg i område (len (liste1)):
til j i område (len (liste2)):
hvis liste1[i] == liste2[j]:
c = liste1[i]
list1.remove (c)
list2.remove (c)
liste3 = liste1 + ["*"] + liste2
komme tilbake [liste3, ekte]
liste3 = liste1 + ["*"] + liste2
komme tilbake [liste3, Falsk]
Definer en funksjon, tell_status(). Hent navnet på personen brukeren skrev inn ved hjelp av få() metoden på Entry-widgeten. Konverter alle bokstavene til små bokstaver og fjern eventuelle mellomrom. Konverter navnet til en liste med tegn. Gjenta dette med navnet på den andre personen og still inn fortsette variabel til ekte.
deftell_status():
p1 = Person1_field.get()
p1 = p1.lower()
p1.erstatt(" ", "")
p1_list = liste (p1)
p2 = Person2_field.get()
p2 = p2.lower()
p2.erstatt(" ", "")
p2_list = liste (p2)
fortsett = ekte
Inntil verdien av fortsett er sann, ring remove_match_char() funksjon og send de to listene du nettopp opprettet. Lagre den sammenkoblede listen og flaggstatusen mottatt fra funksjonen. Finn indeksen til stjernen du satte inn og del strengene i to lister før og etter den.
Tell antall tegn i de to listene og definer en liste som lagrer de ulike statusene et forhold kan ha i henhold til FLAMES-spillet.
samtidig som fortsette:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list[0]
fortsett = ret_liste[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_list = con_list[stjerneindeks + 1:]
count = len (p1_list) + len (p2_list)
resultat = ["Venner", "Kjærlighet", "Kjærlighet", "Ekteskap", "Fiende", "søsken"]
Inntil bokstavene i resultatlisten ikke er null, lagrer du indeksverdien der du skal utføre skjæringen. Hvis indeksen er større enn eller lik null, deler du listene i to deler og lagrer den sammenkoblede strengen med den høyre delen lagt til først i rekkefølge. Dette sikrer at du kan telle mot klokken.
Sett inn resultatet i statusfeltet ved den første tegnposisjonen for å vise relasjonsstatusen.
samtidig som len (resultat) > 1:
split_index = (antall % len (resultat) - 1)hvis split_index >= 0:
høyre = resultat[split_indeks + 1:]
venstre = resultat[: split_index]
resultat = høyre + venstre
ellers:
resultat = resultat[: len (resultat) - 1]
Status_field.insert(0, resultat[0])
Definer en funksjon, Rydd alt(). Bruk delete()-funksjonen fra den første indeksen til den siste i de tre inntastingsfeltene for å fjerne innholdet som vises på skjermen. Bruk metoden focus_set() i det første inntastingsfeltet for å aktivere og indikere at brukeren skal legge inn verdier i det.
defRydd alt():
Person1_field.delete(0, SLUTT)
Person2_field.delete(0, SLUTT)
Status_field.delete(0, SLUTT)
Person1_field.focus_set()
Initialiser Tkinter-forekomsten og vis rotvinduet ved å sende det til klassen. Still inn bakgrunnsfargen du ønsker, størrelsen og tittelen på søknaden din.
root = Tk()
root.configure (bakgrunn='#A020F0')
root.geometry("700x200")
root.title("FLAMES Game")
Definer tre etiketter for å angi de to personene og deres forholdsstatus. Angi det overordnede vinduet du vil plassere dem i, teksten den skal vise, skriftfargen, bakgrunnsfargen og skriftstilene. Legg til litt polstring i horisontal retning.
label1 = Etikett (root, tekst="Navn 1:", fg='#ffffff',bg='#A020F0', font=("arial",20,"dristig"), padx='20')
label2 = Etikett (root, tekst="Navn 2:", fg='#ffffff',bg='#A020F0', font=("arial",20,"dristig"), padx='20')
label3 = Etikett (root, tekst="Forholds status: ", fg='#ffffff', bg='#A020F0',font=("arial",20,"dristig"), padx='20')
Bruk grid manager til å ordne de tre widgetene i den første kolonnen. Plasser den første etiketten i den andre raden, den andre etiketten i den tredje raden og den tredje etiketten i den fjerde raden.
label1.grid (rad=1, kolonne=0)
label2.grid (rad=2, kolonne=0)
label3.grid (rad=4, kolonne=0)
Definer tre oppføringswidgeter for å få verdiene til de to personene og vise deres status. Angi det overordnede vinduet du vil plassere widgetene i og skriftstilene det skal ha.
Person1_field = Entry (root, font=("arial", 15, "dristig"))
Person2_field = Entry (root, font=("arial", 15, "dristig"))
Status_field = Entry (root, font=("arial",15,"dristig"))
På samme måte bruker du grid manager for å organisere widgetene i den andre kolonnen. Bruke ipadx egenskap for å angi antall piksler som skal fylles innenfor grensene til widgeten.
Person1_field.grid (rad=1, kolonne=1, ipadx="50")
Person2_field.grid (rad=2, kolonne=1, ipadx="50")
Status_field.grid (rad=4, kolonne=1, ipadx="50")
Definer to knapper, Sende inn og Klar. Angi det overordnede vinduet du vil plassere dem i, teksten det skal vise, bakgrunnsfargen, skriftfargen, funksjonene de skal utføre når de klikkes, og skriftstilene.
Bruk rutenettbehandleren til å plassere knappene i henholdsvis fjerde og sjette rad i den andre kolonnen.
knapp1 = Knapp (root, tekst="Sende inn", bg="#00ff00", fg="svart", kommando=fortell_status, font=("arial",13,"dristig") )
knapp2 = Knapp (root, tekst="Klar", bg="#00ff00", fg="svart", kommando=slett_alt, font=("arial",13,"dristig"))
button1.grid (rad=3, kolonne=1)
button2.grid (rad=5, kolonne=1)
De mainloop() funksjonen forteller Python å kjøre Tkinter-hendelsesløkken og lytte etter hendelser til du lukker vinduet.
root.mainloop()
Sett all koden sammen, og gjør deg klar til å spille FLAMES-spillet til fingerspissene.
Eksempelutgang fra FLAMES-spillet
Når du kjører programmet ovenfor, viser programmet FLAMES-spillapplikasjonen med tre etiketter, tre inngangsfelt og to knapper arrangert i et rutenett. Når du skriver inn navnene "Tony Stark" og "Pepper Potts", viser programmet deres forholdsstatus som "Love".
Spill du kan bygge med Python
Pygame, Arcade, Panda3D, PyOpenGL og Pyglet er noen nyttige moduler du kan bygge Python-spill med. Ved å bruke Pygame kan du bygge 2D-spill som Super Mario Bros, Flappy Bird og Snake. Ved å bruke Arcade kan du bygge en Pac-Man-, Asteroids- eller Breakout-klone.
Panda3D kan hjelpe deg med å bygge 3D-spill som Toontown Online, Pirates of the Caribbean Online og Disneys Virtual Magic Kingdom.