Zgradite to zabavno numerološko igro v Pythonu, da vadite manipulacijo z nizi in spoznate Tkinter.

FLAMES je zabavna igra za otroke, ki stojijo za prijatelje, ljubimce, ljubeče, poroko in sovražnike. Igra vzame imeni dveh oseb in z nizom korakov določi njun odnos. Če želite igrati FLAMES, si zapišite imeni dveh oseb, izločite ujemajoče se črke in preštejte preostale znake.

Ponavljajte črke besede, PLAMENI s štetjem in odstranite to črko. Na primer, če je štetje štiri, odstranite črko M. Štetje se spet začne od E. Ta postopek ponavljajte, dokler ne ostane samo ena črka, ki označuje status razmerja.

Modul Tkinter

Za izdelavo igre FLAMES boste uporabili modul Tkinter. Tkinter je večplatformski, preprost in uporabniku prijazen modul, ki ga lahko uporabite za hitro ustvarjanje grafičnih uporabniških vmesnikov. Nekatere aplikacije, ki jih lahko sestavite kot začetnik z uporabo Tkinterja, vključujejo a Predvajalnik glasbe, Koledar, Orodje za pretvorbo težein a Besedna mešana igra.

Če želite namestiti tkinter v svoj sistem, zaženite naslednji ukaz v terminalu:

instagram viewer
pip namestite tkinter

Kako zgraditi igro FLAMES z uporabo Pythona

Tukaj lahko najdete izvorno kodo igre FLAMES, ki uporablja Python Repozitorij GitHub.

Uvozite modul Tkinter. Definirajte funkcijo, remove_match_char() ki kot vhod sprejme dva seznama. Uporabite ugnezdeno zanko for za ponavljanje po obeh seznamih. Preverite, ali obstaja ujemajoči se znak; če obstaja, ga odstranite z obeh seznamov in ustvarite tretji seznam, ki združuje oba seznama z zvezdico vmes. Zvezdica deluje kot ločilo.

Vrne tretji seznam skupaj z najdenim ujemanjem kot True. Če se nobena črka ne ujema, vrnite seznam, kot je ustvarjen zgoraj.

od tkinter uvoz *

defodstrani_znak_ujemanja(seznam1, seznam2):
za jaz v obseg (len (seznam1)):
za j v obseg (len (list2)):
če seznam1[i] == seznam2[j]:
c = seznam1[i]
list1.remove (c)
list2.remove (c)
seznam3 = seznam1 + ["*"] + seznam2
vrnitev [seznam3, Prav]
seznam3 = seznam1 + ["*"] + seznam2
vrnitev [seznam3, False]

Definirajte funkcijo, povej_status(). Pridobite ime osebe, ki jo je uporabnik vnesel z uporabo dobiti () metodo v gradniku Entry. Pretvorite vse črke v male črke in odstranite vse presledke med njimi. Pretvorite ime v seznam znakov. To ponovite z imenom druge osebe in nastavite nadaljevati spremenljivka do Prav.

defpovej_status():
p1 = Oseba1_polje.get()
p1 = p1.lower()
p1.replace(" ", "")
p1_list = seznam (p1)
p2 = Oseba2_polje.get()
p2 = p2.lower()
p2.replace(" ", "")
p2_list = seznam (p2)
nadaljuj = Prav

Dokler vrednost continue ni resnična, pokličite remove_match_char() funkcijo in posredujte dva seznama, ki ste ju pravkar ustvarili. Shranite povezani seznam in stanje zastavice, prejeto od funkcije. Poiščite indeks zvezdice, ki ste jo vstavili, in razrežite nize na dva seznama pred in za njim.

Preštejte število znakov na obeh seznamih in določite seznam, ki shranjuje različne statuse, ki jih lahko ima razmerje v skladu z igro FLAMES.

medtem nadaljuj:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list [0]
nadaljuj = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_seznam = con_seznam[star_index + 1:]

štetje = len (p1_seznam) + len (p2_seznam)
rezultat = ["prijatelji", "ljubezen", "naklonjenost", "Poroka", "Sovražnik", "Bratje in sestre"]

Dokler črke na seznamu rezultatov niso nič, shranite vrednost indeksa, od koder morate izvesti rezanje. Če je indeks večji od ali enak nič, razrežite sezname na dva dela in shranite povezani niz tako, da je prvi po vrstnem redu dodan desni del. To zagotavlja, da lahko štejete v nasprotni smeri urinega kazalca.

Rezultat vstavite v polje statusa na mestu prvega znaka, da prikažete status razmerja.

medtem len (rezultat) > 1:
split_index = (štetje % len (rezultat) - 1)

če split_index >= 0:
desno = rezultat[split_index + 1:]
levo = rezultat[: split_index]
rezultat = desno + levo
drugače:
rezultat = rezultat[: len (rezultat) - 1]

Status_field.insert(0, rezultat[0])

Definirajte funkcijo, Počisti vse(). Uporabite funkcijo delete() od prvega indeksa do zadnjega v treh vnosnih poljih, da počistite vsebino, prikazano na zaslonu. Uporabite metodo focus_set() na prvem vnosnem polju, da aktivirate in nakažete uporabniku, da vanj vnese vrednosti.

defPočisti vse():
Oseba1_polje.delete(0, KONEC)
Oseba2_polje.delete(0, KONEC)
Status_field.delete(0, KONEC)
Person1_field.focus_set()

Inicializirajte primerek Tkinter in prikažite korensko okno, tako da ga posredujete razredu. Nastavite barvo ozadja po vaši izbiri, velikost in naslov vaše aplikacije.

koren = Tk()
root.configure (background='#A020F0')
root.geometry("700x200")
root.title(Igra "FLAMES")

Določite tri oznake, ki označujejo dve osebi in njun status razmerja. Nastavite nadrejeno okno, v katerega jih želite postaviti, besedilo, ki naj bo prikazano, barvo pisave, barvo ozadja in sloge pisave. Dodajte nekaj oblazinjenja v vodoravni smeri.

oznaka1 = oznaka (koren, besedilo="Ime 1:", fg='#ffffff',bg='#A020F0', pisava=("arial",20,"krepko"), padx='20')
label2 = Oznaka (koren, besedilo="Ime 2:", fg='#ffffff',bg='#A020F0', pisava=("arial",20,"krepko"), padx='20')
label3 = Oznaka (koren, besedilo="Status razmerja: ", fg='#ffffff', bg='#A020F0',pisava=("arial",20,"krepko"), padx='20')

Z upraviteljem mrež uredite tri pripomočke v prvem stolpcu. Prvo etiketo postavite v drugo vrstico, drugo etiketo v tretjo vrstico in tretjo etiketo v četrto vrstico.

label1.grid (vrstica=1, stolpec=0)
label2.grid (vrstica=2, stolpec=0)
label3.grid (vrstica=4, stolpec=0)

Določite tri pripomočke za vnos, da dobite vrednosti dveh oseb in prikažete njun status. Nastavite nadrejeno okno, v katerega želite namestiti pripomočke, in sloge pisave, ki jih mora imeti.

Oseba1_polje = Vnos (koren, pisava=("arial", 15, "krepko"))
Oseba2_polje = Vnos (koren, pisava=("arial", 15, "krepko"))
Status_field = Vnos (koren, pisava=("arial",15,"krepko"))

Podobno uporabite upravitelja mrež, da organizirate pripomočke v drugem stolpcu. Uporabi ipadx lastnost za nastavitev števila slikovnih pik, ki jih je treba vstaviti znotraj robov pripomočka.

Oseba1_polje.grid (vrstica=1, stolpec=1, ipadx="50")
Oseba2_polje.grid (vrstica=2, stolpec=1, ipadx="50")
Status_field.grid (vrstica=4, stolpec=1, ipadx="50")

Določite dva gumba, Predloži in jasno. Nastavite nadrejeno okno, v katerega jih želite postaviti, besedilo, ki naj bo prikazano, barvo ozadja, barvo pisave, funkcije, ki naj se izvajajo ob kliku, in sloge pisave.

Z upraviteljem mrež postavite gumbe v četrto oziroma šesto vrstico drugega stolpca.

button1 = Gumb (root, text="Pošlji", bg="#00ff00", fg="Črna", ukaz=tell_status, pisava=("arial",13,"krepko") )
button2 = Gumb (root, text="Počisti", bg="#00ff00", fg="Črna", ukaz=počisti_vse, pisava=("arial",13,"krepko"))
gumb1.mreža (vrstica=3, stolpec=1)
gumb2.mreža (vrstica=5, stolpec=1)

The glavna zanka() funkcija pove Pythonu, naj zažene zanko dogodkov Tkinter in posluša dogodke, dokler ne zaprete okna.

root.mainloop()

Sestavite vso kodo in se pripravite na igranje igre FLAMES na dosegu roke.

Vzorec izhoda igre FLAMES

Ko zaženete zgornji program, program prikaže aplikacijo igre FLAMES s tremi oznakami, tremi vnosnimi polji in dvema gumboma, razporejenimi v mrežo. Ob vnosu imen "Tony Stark" in "Pepper Potts" program prikaže njuno razmerje kot "Ljubezen".

Igre, ki jih lahko sestavite s Pythonom

Pygame, Arcade, Panda3D, PyOpenGL in Pyglet je nekaj uporabnih modulov, s katerimi lahko sestavite igre Python. Z uporabo Pygame lahko ustvarite 2D igre, kot so Super Mario Bros, Flappy Bird in Snake. Z Arcade lahko sestavite klon Pac-Mana, Asteroids ali Breakout.

Panda3D vam lahko pomaga zgraditi 3D igre, kot so Toontown Online, Pirates of the Caribbean Online in Disney's Virtual Magic Kingdom.