Zostavte si túto zábavnú numerologickú hru v Pythone, aby ste si precvičili manipuláciu s reťazcami a dozvedeli sa o Tkinterovi.
FLAMES je zábavná hra pre deti, ktoré stoja za priateľov, milencov, láskavých, manželstvo a nepriateľov. Hra vezme mená dvoch ľudí a sériou krokov určí ich vzťah. Ak chcete hrať FLAMES, poznačte si mená dvoch ľudí, odstráňte zhodné písmená a zistite počet zostávajúcich postáv.
Opakujte písmená slova, FLAMES pomocou počtu a odstráňte toto písmeno. Napríklad, ak je počet štyri, odstráňte písmeno M. Počítanie začína znova od E. Tento postup opakujte, kým nezostane iba jedno písmeno, ktoré označuje stav vzťahu.
Modul Tkinter
Na zostavenie hry FLAMES použijete modul Tkinter. Tkinter je multiplatformový, jednoduchý a užívateľsky prívetivý modul, ktorý môžete použiť na rýchle vytváranie grafických používateľských rozhraní. Niektoré z aplikácií, ktoré si môžete vytvoriť ako začiatočník pomocou Tkinter, zahŕňajú a Hudobný prehrávač, Kalendár, Nástroj na konverziu hmotnostia a Slovná miešačka.
Ak chcete nainštalovať tkinter do vášho systému, spustite nasledujúci príkaz v termináli:
pip nainštalovať tkinter
Ako zostaviť hru FLAMES pomocou Pythonu
Zdrojový kód hry FLAMES pomocou Pythonu nájdete v tomto úložisko GitHub.
Importujte modul Tkinter. Definujte funkciu, remove_match_char() ktorý akceptuje dva zoznamy ako vstup. Na iteráciu oboch zoznamov použite vnorený cyklus for. Skontrolujte, či existuje zodpovedajúci znak; ak existuje, odstráňte ho z oboch zoznamov a vytvorte tretí zoznam, ktorý spojí oba zoznamy s hviezdičkou medzi nimi. Hviezdička funguje ako oddeľovač.
Vráťte tretí zoznam spolu s nájdenou zhodou ako True. V prípade, že sa žiadne písmená nezhodujú, vráťte zoznam vytvorený vyššie.
od tkinter importovať *
defremove_match_char(zoznam1, zoznam2):
pre i v rozsah (len (zoznam1)):
pre j v rozsah (len (zoznam 2)):
ak zoznam1[i] == zoznam2[j]:
c = zoznam1[i]
list1.remove (c)
list2.remove (c)
zoznam3 = zoznam1 + ["*"] + zoznam2
vrátiť [zoznam 3, Pravda]
zoznam3 = zoznam1 + ["*"] + zoznam2
vrátiť [zoznam 3, Nepravdivé]
Definujte funkciu, tell_status(). Získajte meno osoby, ktorú používateľ zadal pomocou dostať () vo widgete Entry. Preveďte všetky písmená na malé písmená a odstráňte medzery medzi nimi. Preveďte meno na zoznam znakov. Zopakujte to s menom druhej osoby a nastavte pokračovať premenlivý na Pravda.
defpovedať_stav():
p1 = Person1_field.get()
p1 = p1.lower()
p1.replace(" ", "")
p1_list = zoznam (p1)
p2 = Person2_field.get()
p2 = p2.lower()
p2.replace(" ", "")
p2_list = zoznam (p2)
pokračovať = Pravda
Kým nebude hodnota pokračovať, volajte na remove_match_char() a odovzdajte dva zoznamy, ktoré ste práve vytvorili. Uložte zreťazený zoznam a stav príznaku prijatý z funkcie. Nájdite index hviezdičky, ktorú ste vložili, a rozdeľte reťazce na dva zoznamy pred a za ním.
Spočítajte počet postáv v dvoch zoznamoch a definujte zoznam, v ktorom sú uložené rôzne stavy, ktoré môže mať vzťah podľa hry FLAMES.
zatiaľ čo pokračovať:
ret_list = remove_match_char (zoznam p1, zoznam p2)
con_list = ret_list[0]
pokračovať = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_list = con_list[star_index + 1:]
počet = dĺžka (zoznam p1) + dĺžka (zoznam p2)
výsledok = ["Priatelia", "láska", "náklonnosť", "manželstvo", "nepriateľ", "súrodenci"]
Kým písmená v zozname výsledkov nie sú nula, uložte hodnotu indexu, odkiaľ musíte vykonať krájanie. Ak je index väčší alebo rovný nule, rozdeľte zoznamy na dve časti a uložte zreťazený reťazec s pravou časťou pridanou ako prvý v poradí. To zaisťuje, že môžete počítať proti smeru hodinových ručičiek.
Vložte výsledok do stavového poľa na pozíciu prvého znaku, aby sa zobrazil stav vzťahu.
zatiaľ čo len (výsledok) > 1:
split_index = (počet % len (výsledok) - 1)ak split_index >= 0:
vpravo = výsledok[rozdeliť_index + 1:]
vľavo = výsledok[: split_index]
výsledok = vpravo + vľavo
inak:
výsledok = výsledok[: len (výsledok) - 1]
Status_field.insert(0, výsledok[0])
Definujte funkciu, zmazať všetko(). Na vymazanie obsahu zobrazeného na obrazovke použite funkciu delete() od prvého indexu po posledný v troch vstupných poliach. Pomocou metódy focus_set() v prvom vstupnom poli aktivujte a označte používateľa, aby doň zadal hodnoty.
defzmazať všetko():
Person1_field.delete(0, KONIEC)
Person2_field.delete(0, KONIEC)
Status_field.delete(0, KONIEC)
Person1_field.focus_set()
Inicializujte inštanciu Tkinter a zobrazte koreňové okno jeho odovzdaním triede. Nastavte farbu pozadia podľa vlastného výberu, veľkosť a názov vašej aplikácie.
koreň = Tk()
root.configure (pozadie='#A020F0')
root.geometry("700 x 200")
root.title(Hra "FLAMES")
Definujte tri štítky na označenie dvoch osôb a ich stavu vzťahu. Nastavte rodičovské okno, do ktorého ich chcete umiestniť, text, ktorý má zobrazovať, farbu písma, farbu pozadia a štýly písma. Pridajte výplň v horizontálnom smere.
label1 = Menovka (koreň, text="Meno 1:", fg='#ffffff',bg='#A020F0', font=("arial",20,"tučné"), padx='20')
label2 = Označenie (koreň, text="Meno 2:", fg='#ffffff',bg='#A020F0', font=("arial",20,"tučné"), padx='20')
label3 = Označenie (koreň, text="Stav vzťahu: ", fg='#ffffff', bg='#A020F0',font=("arial",20,"tučné"), padx='20')
Pomocou správcu mriežky usporiadajte tri miniaplikácie v prvom stĺpci. Prvý štítok umiestnite do druhého radu, druhý štítok do tretieho radu a tretí štítok do štvrtého radu.
label1.grid (riadok=1, stĺpec=0)
label2.grid (riadok=2, stĺpec=0)
label3.grid (riadok=4, stĺpec=0)
Definujte tri vstupné widgety na získanie hodnôt dvoch osôb a zobrazenie ich stavu. Nastavte rodičovské okno, do ktorého chcete umiestniť miniaplikácie, a štýly písma, ktoré by malo mať.
Person1_field = Záznam (root, font=("arial", 15, "tučné"))
Person2_field = Záznam (root, font=("arial", 15, "tučné"))
Stavové pole = Záznam (root, font=("arial",15,"tučné"))
Podobne použite správcu mriežky na usporiadanie miniaplikácií v druhom stĺpci. Použi ipadx vlastnosť na nastavenie počtu pixelov, ktoré sa majú vložiť do okrajov miniaplikácie.
Person1_field.grid (riadok=1, stĺpec=1, ipadx="50")
Person2_field.grid (riadok=2, stĺpec=1, ipadx="50")
Status_field.grid (riadok=4, stĺpec=1, ipadx="50")
Definujte dve tlačidlá, Predložiť a jasný. Nastavte rodičovské okno, do ktorého ich chcete umiestniť, text, ktorý sa má zobraziť, farbu pozadia, farbu písma, funkcie, ktoré sa majú vykonať po kliknutí, a štýly písma.
Pomocou správcu mriežky umiestnite tlačidlá do štvrtého a šiesteho riadku druhého stĺpca.
button1 = Tlačidlo (koreň, text="Predložiť", bg="#00ff00", fg="čierna", command=tell_status, font=("arial",13,"tučné") )
button2 = Tlačidlo (koreň, text="Jasný", bg="#00ff00", fg="čierna", command=clear_all, font=("arial",13,"tučné"))
button1.grid (riadok=3, stĺpec=1)
button2.grid (riadok=5, stĺpec=1)
The mainloop() funkcia hovorí Pythonu, aby spustil slučku udalostí Tkinter a počúval udalosti, kým nezatvoríte okno.
root.mainloop()
Zložte všetky kódy a pripravte sa hrať hru FLAMES na dosah ruky.
Ukážkový výstup z hry FLAMES
Po spustení programu vyššie program zobrazí hernú aplikáciu FLAMES s tromi menovkami, tromi vstupnými poľami a dvoma tlačidlami usporiadanými do mriežky. Po zadaní mien „Tony Stark“ a „Pepper Potts“ program zobrazí stav ich vzťahu ako „Láska“.
Hry, ktoré môžete zostaviť pomocou Pythonu
Pygame, Arcade, Panda3D, PyOpenGL a Pyglet sú niektoré užitočné moduly, s ktorými môžete vytvárať hry v jazyku Python. Pomocou Pygame môžete vytvárať 2D hry ako Super Mario Bros, Flappy Bird a Snake. Pomocou Arcade si môžete postaviť klon Pac-Mana, Asteroidy alebo Breakout.
Panda3D vám môže pomôcť vytvoriť 3D hry ako Toontown Online, Pirates of the Caribbean Online a Disney's Virtual Magic Kingdom.