Sestavte si tuto zábavnou numerologickou hru v Pythonu, abyste si procvičili manipulaci s řetězci a dozvěděli se o Tkinterovi.

FLAMES je zábavná hra pro děti, která stojí za přátele, milence, milence, manželství a nepřátele. Hra vezme jména dvou lidí a sérií kroků určí jejich vztah. Chcete-li hrát FLAMES, poznamenejte si jména dvou lidí, odstraňte odpovídající písmena a získejte počet zbývajících postav.

Iterujte přes písmena slova, FLAMES pomocí počtu a odstraňte toto písmeno. Pokud je například počet čtyři, odstraňte písmeno M. Počítání začíná znovu od E. Tento postup opakujte, dokud nezůstane pouze jedno písmeno, které označuje stav vztahu.

Modul Tkinter

K sestavení hry FLAMES použijete modul Tkinter. Tkinter je multiplatformní, jednoduchý a uživatelsky přívětivý modul, který můžete použít k rychlému vytváření grafických uživatelských rozhraní. Některé z aplikací, které můžete sestavit jako začátečník pomocí Tkinter, zahrnují a Hudební přehrávač, Kalendář, Nástroj pro převod hmotnostia a Slovní míchanice.

instagram viewer

Chcete-li nainstalovat tkinter do vašeho systému, spusťte v terminálu následující příkaz:

pip nainstalovat tkinter

Jak vytvořit hru FLAMES pomocí Pythonu

Zdrojový kód hry FLAMES pomocí Pythonu najdete v tomto úložiště GitHub.

Importujte modul Tkinter. Definujte funkci, remove_match_char() který přijímá dva seznamy jako vstup. K iteraci obou seznamů použijte vnořenou smyčku for. Zkontrolujte, zda existuje odpovídající znak; pokud existuje, odeberte jej z obou seznamů a vytvořte třetí seznam, který oba seznamy spojí s hvězdičkou mezi nimi. Hvězdička funguje jako oddělovač.

Vraťte třetí seznam spolu s nalezenou shodou jako True. V případě, že se žádná písmena neshodují, vraťte seznam vytvořený výše.

z tkinter import *

defremove_match_char(seznam1, seznam2):
pro i v rozsah (len (seznam1)):
pro j v rozsah (len (seznam2)):
-li seznam1[i] == seznam2[j]:
c = seznam1[i]
list1.remove (c)
list2.remove (c)
seznam3 = seznam1 + ["*"] + seznam2
vrátit se [seznam 3, Skutečný]
seznam3 = seznam1 + ["*"] + seznam2
vrátit se [seznam 3, Nepravdivé]

Definujte funkci, tell_status(). Získejte jméno osoby, kterou uživatel zadal pomocí dostat() metoda na widgetu Entry. Převeďte všechna písmena na malá písmena a odstraňte všechny mezery mezi nimi. Převeďte jméno na seznam znaků. Opakujte to se jménem druhé osoby a nastavte pokračovat variabilní k Skutečný.

deftell_status():
p1 = Person1_field.get()
p1 = p1.lower()
p1.nahradit(" ", "")
p1_list = seznam (p1)
p2 = Person2_field.get()
p2 = p2.lower()
p2.nahradit(" ", "")
p2_list = seznam (p2)
pokračovat = Skutečný

Dokud nebude hodnota pokračovat pravdivá, volejte remove_match_char() a předejte dva seznamy, které jste právě vytvořili. Uložte zřetězený seznam a stav příznaku přijatý z funkce. Najděte index hvězdičky, kterou jste vložili, a rozdělte řetězce na dva seznamy před a za ním.

Spočítejte počet postav ve dvou seznamech a definujte seznam, který ukládá různé stavy, které vztah může mít podle hry FLAMES.

zatímco pokračovat:
ret_list = remove_match_char (seznam p1, seznam p2)
con_list = ret_list[0]
pokračovat = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_list = con_list[star_index + 1:]

počet = len (p1_list) + len (p2_list)
výsledek = ["Přátelé", "Milovat", "Náklonnost", "Manželství", "Nepřítel", "sourozenci"]

Dokud písmena v seznamu výsledků nebudou nula, uložte hodnotu indexu, odkud musíte provést krájení. Pokud je index větší nebo roven nule, rozdělte seznamy na dvě části a uložte zřetězený řetězec s pravou částí přidanou jako první v pořadí. To zajišťuje, že můžete počítat proti směru hodinových ručiček.

Vložte výsledek do stavového pole na pozici prvního znaku, aby se zobrazil stav vztahu.

zatímco len (výsledek) > 1:
split_index = (počet % len (výsledek) - 1)

-li split_index >= 0:
vpravo = výsledek[rozdělený_index + 1:]
vlevo = výsledek[: split_index]
výsledek = vpravo + vlevo
jiný:
výsledek = výsledek[: len (výsledek) - 1]

Status_field.insert(0, výsledek[0])

Definujte funkci, vymazat vše(). Pomocí funkce delete() od prvního indexu po poslední ve třech vstupních polích vymažte obsah zobrazený na obrazovce. Pomocí metody focus_set() v prvním vstupním poli aktivujte a označte uživatele, aby do něj zadal hodnoty.

defvymazat vše():
Osoba1_pole.delete(0, KONEC)
Osoba2_pole.delete(0, KONEC)
Status_field.delete(0, KONEC)
Person1_field.focus_set()

Inicializujte instanci Tkinter a zobrazte kořenové okno jeho předáním třídě. Nastavte barvu pozadí podle svého výběru, velikost a název aplikace.

kořen = Tk()
root.configure (pozadí='#A020F0')
root.geometry("700 x 200")
root.title("Hra FLAMES")

Definujte tři štítky pro označení dvou osob a jejich stavu vztahu. Nastavte nadřazené okno, do kterého je chcete umístit, text, který má zobrazovat, barvu písma, barvu pozadí a styly písma. Přidejte nějaké vycpávky ve vodorovném směru.

label1 = Štítek (kořen, text="Jméno 1:", fg='#ffffff',bg='#A020F0', font=("arial",20,"tučně"), padx='20')
label2 = Štítek (kořen, text="Jméno 2:", fg='#ffffff',bg='#A020F0', font=("arial",20,"tučně"), padx='20')
label3 = Štítek (kořen, text="Stav vztahu: ", fg='#ffffff', bg='#A020F0',font=("arial",20,"tučně"), padx='20')

Pomocí správce mřížky uspořádejte tři widgety v prvním sloupci. Umístěte první štítek do druhé řady, druhý štítek do třetí řady a třetí štítek do čtvrté řady.

label1.grid (řádek=1, sloupec=0)
label2.grid (řádek=2, sloupec=0)
label3.grid (řádek=4, sloupec=0)

Definujte tři vstupní widgety pro získání hodnot dvou osob a zobrazení jejich stavu. Nastavte rodičovské okno, do kterého chcete widgety umístit, a styly písma, které by mělo mít.

Person1_field = Záznam (kořen, font=("arial", 15, "tučně"))
Person2_field = Záznam (kořen, font=("arial", 15, "tučně"))
Stavové pole = Záznam (kořen, font=("arial",15,"tučně"))

Podobně použijte správce mřížky k uspořádání widgetů ve druhém sloupci. Použijte ipadx vlastnost pro nastavení počtu pixelů, které mají být vloženy uvnitř okrajů widgetu.

Person1_field.grid (řádek=1, sloupec=1, ipadx="50")
Person2_field.grid (řádek=2, sloupec=1, ipadx="50")
Status_field.grid (řádek=4, sloupec=1, ipadx="50")

Definujte dvě tlačítka, Předložit a Průhledná. Nastavte nadřazené okno, do kterého je chcete umístit, text, který by měl zobrazovat, barvu pozadí, barvu písma, funkce, které by měly po kliknutí provést, a styly písma.

Pomocí správce mřížky umístěte tlačítka do čtvrtého a šestého řádku druhého sloupce.

button1 = Tlačítko (kořen, text="Předložit", bg="#00ff00", fg="Černá", command=tell_status, font=("arial",13,"tučně") )
button2 = Tlačítko (kořen, text="Průhledná", bg="#00ff00", fg="Černá", command=clear_all, font=("arial",13,"tučně"))
button1.grid (řádek=3, sloupec=1)
button2.grid (řádek=5, sloupec=1)

The mainloop() Funkce říká Pythonu, aby spustil smyčku událostí Tkinter a naslouchal událostem, dokud nezavřete okno.

root.mainloop()

Dejte dohromady celý kód a připravte se hrát hru FLAMES na dosah ruky.

Ukázkový výstup ze hry FLAMES

Při spuštění výše uvedeného programu program zobrazí herní aplikaci FLAMES se třemi štítky, třemi vstupními poli a dvěma tlačítky uspořádanými do mřížky. Po zadání jmen "Tony Stark" a "Pepper Potts" program zobrazí jejich vztahový stav jako "Láska".

Hry, které můžete vytvořit pomocí Pythonu

Pygame, Arcade, Panda3D, PyOpenGL a Pyglet jsou některé užitečné moduly, se kterými můžete stavět Python hry. Pomocí Pygame můžete stavět 2D hry jako Super Mario Bros, Flappy Bird a Snake. Pomocí Arcade můžete postavit klon Pac-Mana, Asteroidy nebo Breakout.

Panda3D vám pomůže vytvořit 3D hry jako Toontown Online, Piráti z Karibiku online a Disney's Virtual Magic Kingdom.