Izgradite ovu zabavnu numerološku igricu u Pythonu da vježbate manipulaciju nizovima i naučite o Tkinteru.
PLAMENOVI su zabavna igra za djecu koja predstavljaju prijatelje, ljubavnike, ljubavnike, brakove i neprijatelje. Igra uzima imena dvoje ljudi i nizom koraka određuje njihov odnos. Za igru PLAMENA, zabilježite imena dvoje ljudi, uklonite odgovarajuća slova i izbrojite preostale znakove.
Iterirajte preko slova riječi, PLAMENI koristeći brojanje i uklonite to slovo. Na primjer, ako je broj četiri, uklonite slovo M. Brojanje ponovno počinje od E. Ponavljajte ovaj postupak dok ne ostane samo jedno slovo koje označava status veze.
Modul Tkinter
Za izradu igre FLAMES, koristit ćete modul Tkinter. Tkinter je višeplatformski, jednostavan i user-friendly modul koji možete koristiti za brzu izradu grafičkih korisničkih sučelja. Neke od aplikacija koje možete izraditi kao početnik koristeći Tkinter uključuju a Glazbeni player, Kalendar, Alat za pretvorbu težine, i a Igra zbrke riječi.
Da biste instalirali tkinter u svoj sustav, pokrenite sljedeću naredbu u terminalu:
pip instaliraj tkinter
Kako napraviti FLAMES igru koristeći Python
Ovdje možete pronaći izvorni kod igre FLAMES koja koristi Python GitHub spremište.
Uvezite Tkinter modul. Definirajte funkciju, ukloniti_match_char() koji prihvaća dvije liste kao ulaz. Upotrijebite ugniježđenu for petlju za ponavljanje preko oba popisa. Provjerite postoji li odgovarajući znak; ako postoji, uklonite ga s oba popisa i stvorite treći popis koji spaja oba popisa sa zvjezdicom između. Zvjezdica služi kao graničnik.
Vrati treći popis zajedno s pronađenim podudaranjem kao True. U slučaju da nijedno slovo ne odgovara, vratite popis kako je kreiran gore.
iz tkinter uvoz *
defukloniti_znak_podudaranja(lista1, lista2):
za ja u raspon (len (list1)):
za j u raspon (len (list2)):
ako lista1[i] == lista2[j]:
c = popis1[i]
lista1.ukloni (c)
lista2.ukloni (c)
lista3 = lista1 + ["*"] + popis2
povratak [popis3, Pravi]
lista3 = lista1 + ["*"] + popis2
povratak [popis3, lažno]
Definirajte funkciju, reci_status(). Dohvatite ime osobe koju je korisnik unio koristeći dobiti() način na widgetu Entry. Pretvorite sva slova u mala slova i uklonite sve razmake između. Pretvorite ime u popis znakova. Ponovite ovo s imenom druge osobe i postavite nastaviti varijabla za Pravi.
defreci_status():
p1 = Osoba1_field.get()
p1 = p1.lower()
p1.zamijeni(" ", "")
p1_list = popis (p1)
p2 = Osoba2_field.get()
p2 = p2.lower()
p2.zamijeni(" ", "")
p2_list = popis (p2)
nastaviti = Pravi
Sve dok vrijednost continue nije istinita, pozovite ukloniti_match_char() funkciju i proslijedite dva popisa koja ste upravo stvorili. Pohranite spojeni popis i status zastavice primljen od funkcije. Pronađite indeks zvjezdice koju ste umetnuli i razdvojite nizove na dva popisa prije i iza nje.
Izbrojite broj znakova u dva popisa i definirajte popis koji pohranjuje različite statuse koje odnos može imati prema igri FLAMES.
dok nastaviti:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list[0]
nastavi = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: zvijezda_index]
p2_list = con_list[star_index + 1:]
broj = len (p1_list) + len (p2_list)
rezultat = ["Prijatelji", "Ljubav", "Ljubav", "Brak", "Neprijatelj", "Braća i sestre"]
Sve dok slova na popisu rezultata nisu nula, pohranite vrijednost indeksa odakle morate izvršiti rezanje. Ako je indeks veći ili jednak nuli, razrežite popise na dva dijela i pohranite spojeni niz s desnim dijelom koji je prvi dodan po redu. To osigurava da možete brojati u smjeru suprotnom od kazaljke na satu.
Umetnite rezultat u polje statusa na mjestu prvog znaka za prikaz statusa odnosa.
dok len (rezultat) > 1:
split_index = (count % len (rezultat) - 1)ako split_index >= 0:
desno = rezultat[split_index + 1:]
lijevo = rezultat[: split_index]
rezultat = desno + lijevo
drugo:
rezultat = rezultat[: len (rezultat) - 1]
Status_field.insert(0, rezultat[0])
Definirajte funkciju, očistiti sve(). Koristite funkciju delete() od prvog indeksa do posljednjeg na tri polja za unos kako biste izbrisali sadržaj prikazan na ekranu. Upotrijebite metodu focus_set() na prvom polju za unos da aktivirate i navedete korisnika da unese vrijednosti u njemu.
defočistiti sve():
Osoba1_polje.delete(0, KRAJ)
Osoba2_polje.delete(0, KRAJ)
Status_field.delete(0, KRAJ)
Osoba1_field.focus_set()
Inicijalizirajte Tkinter instancu i prikažite korijenski prozor prosljeđujući ga klasi. Postavite boju pozadine po svom izboru, veličinu i naslov svoje aplikacije.
korijen = Tk()
root.configure (background='#A020F0')
root.geometry("700x200")
root.title("Igra PLAMEN")
Definirajte tri oznake za označavanje dvije osobe i njihov status veze. Postavite nadređeni prozor u koji ih želite smjestiti, tekst koji bi trebao prikazati, boju fonta, boju pozadine i stilove fonta. Dodajte malo ispune u vodoravnom smjeru.
label1 = Oznaka (korijen, tekst="Ime 1:", fg='#ffffff',bg='#A020F0', font=("arial",20,"podebljano"), padx='20')
label2 = Oznaka (korijen, tekst="Ime 2:", fg='#ffffff',bg='#A020F0', font=("arial",20,"podebljano"), padx='20')
label3 = Oznaka (korijen, tekst="Status veze: ", fg='#ffffff', bg='#A020F0',font=("arial",20,"podebljano"), padx='20')
Upotrijebite upravitelj rešetki da rasporedite tri widgeta u prvom stupcu. Postavite prvu naljepnicu u drugi red, drugu naljepnicu u treći red, a treću naljepnicu u četvrti red.
label1.grid (row=1, stupac=0)
label2.grid (row=2, stupac=0)
label3.grid (row=4, stupac=0)
Definirajte tri widgeta za unos kako biste dobili vrijednosti dviju osoba i prikazali njihov status. Postavite nadređeni prozor u koji želite smjestiti widgete i stilove fonta koje treba imati.
Osoba1_polje = Unos (korijen, font=("arial", 15, "podebljano"))
Osoba2_polje = Unos (korijen, font=("arial", 15, "podebljano"))
Status_field = Unos (root, font=("arial",15,"podebljano"))
Slično, koristite upravitelj rešetki za organiziranje widgeta u drugom stupcu. Koristiti ipadx svojstvo za postavljanje broja piksela za umetanje unutar granica widgeta.
Osoba1_polje.grid (red=1, stupac=1, ipadx="50")
Osoba2_polje.mreža (redak=2, stupac=1, ipadx="50")
Status_field.grid (row=4, stupac=1, ipadx="50")
Definirajte dva gumba, podnijeti i Čisto. Postavite nadređeni prozor u koji ih želite smjestiti, tekst koji bi trebao prikazati, boju pozadine, boju fonta, funkcije koje bi trebali izvršiti kada se klikne i stilove fonta.
Pomoću upravitelja rešetki postavite gumbe u četvrti i šesti redak drugog stupca.
button1 = Gumb (root, text="Podnijeti", bg="#00ff00", fg="crno", naredba=tell_status, font=("arial",13,"podebljano") )
button2 = Gumb (root, text="Čisto", bg="#00ff00", fg="crno", naredba=očisti_sve, font=("arial",13,"podebljano"))
button1.grid (row=3, stupac=1)
button2.grid (row=5, stupac=1)
The glavna petlja() funkcija govori Pythonu da pokrene Tkinter petlju događaja i osluškuje događaje dok ne zatvorite prozor.
root.mainloop()
Sastavite sav kod i pripremite se za igranje igre FLAMES na dohvat ruke.
Uzorak rezultata igre FLAMES
Prilikom pokretanja gornjeg programa, program prikazuje aplikaciju igre FLAMES s tri oznake, tri polja za unos i dva gumba raspoređena u mrežu. Nakon unosa imena "Tony Stark" i "Pepper Potts", program prikazuje njihov status veze kao "Ljubav".
Igre koje možete napraviti koristeći Python
Pygame, Arcade, Panda3D, PyOpenGL i Pyglet neki su korisni moduli pomoću kojih možete izraditi Python igre. Koristeći Pygame možete izraditi 2D igre kao što su Super Mario Bros, Flappy Bird i Snake. Koristeći Arcade možete izgraditi Pac-Man, Asteroids ili Breakout klon.
Panda3D vam može pomoći u izradi 3D igara kao što su Toontown Online, Pirates of the Caribbean Online i Disney's Virtual Magic Kingdom.