Építsd meg ezt a szórakoztató numerológiai játékot Pythonban, hogy gyakorold a karakterlánc-manipulációt, és tanulj a Tkinterről.

A FLAMES egy szórakoztató játék a barátok, szerelmesek, szerelmesek, házasság és ellenségek mellett álló gyermekek számára. A játék két ember nevét veszi fel, és egy sor lépéssel meghatározza kapcsolatukat. A FLAMES játékhoz jegyezd fel a két ember nevét, töröld ki a megfelelő betűket, és kérd le a megmaradt karakterek számát.

Ismételje meg a FLAMES szó betűit a számláló segítségével, és távolítsa el a betűt. Például, ha a szám négy, távolítsa el az M betűt. A számolás ismét E-től kezdődik. Ismételje meg ezt a folyamatot, amíg csak egy betű marad, ami a kapcsolat állapotát jelzi.

A Tkinter modul

A FLAMES játék elkészítéséhez a Tkinter modult kell használni. A Tkinter egy többplatformos, egyszerű és felhasználóbarát modul, amellyel gyorsan hozhat létre grafikus felhasználói felületeket. Néhány alkalmazás, amelyet kezdőként készíthet a Tkinter használatával, többek között a Zenelejátszó, Naptár, Súlyátalakító eszközés a Word Jumble játék.

instagram viewer

A tkinter telepítéséhez futtassa a következő parancsot a terminálban:

pip install tkinter

Hogyan építsünk FLAMES játékot Python használatával

A FLAMES játék forráskódját Python segítségével találja meg ebben GitHub adattár.

Importálja a Tkinter modult. Határozzon meg egy függvényt, remove_match_char() amely két listát fogad be bemenetként. Használjon beágyazott for ciklust mindkét lista ismétléséhez. Ellenőrizze, hogy van-e egyező karakter; ha van, távolítsa el mindkét listából, és hozzon létre egy harmadik listát, amely mindkét listát egy csillaggal összekapcsolja. A csillag határolóként működik.

Adja vissza a harmadik listát az igazként talált egyezéssel együtt. Ha egyetlen betű sem egyezik, adja vissza a fent létrehozott listát.

tól től tkinter import *

defRemove_match_char(lista1, lista2):
számára én ban ben tartomány (len (lista1)):
számára j ban ben tartomány (len (2. lista)):
ha lista1[i] == lista2[j]:
c = lista1[i]
list1.remove (c)
list2.remove (c)
lista3 = lista1 + ["*"] + lista2
Visszatérés [lista3, Igaz]
lista3 = lista1 + ["*"] + lista2
Visszatérés [lista3, Hamis]

Határozzon meg egy függvényt, tell_status(). Keresse le annak a személynek a nevét, akit a felhasználó a segítségével megadott kap() módszert a Belépés widgetben. Alakítsa át az összes betűt kisbetűssé, és szüntesse meg a szóközöket. Alakítsa át a nevet karakterlistává. Ismételje meg ezt a második személy nevével, és állítsa be a folytassa változó -ra Igaz.

deftell_status():
p1 = Személy1_mező.get()
p1 = p1.alsó()
p1.replace(" ", "")
p1_lista = lista (p1)
p2 = Személy2_mező.get()
p2 = p2.alsó()
p2.replace(" ", "")
p2_lista = lista (p2)
tovább = Igaz

Amíg a Tovább értéke nem igaz, hívja a remove_match_char() függvényt, és adja át az imént létrehozott két listát. Tárolja az összefűzött listát és a függvénytől kapott zászlóállapotot. Keresse meg a beszúrt csillag indexét, és szeletelje fel a karakterláncokat előtte és utána két listára.

Számolja meg a karakterek számát a két listában, és hozzon létre egy listát, amely tárolja a kapcsolat különböző állapotait a FLAMES játék szerint.

míg folytassa:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list[0]
folytatás = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_list = con_list[star_index + 1:]

count = len (p1_list) + len (p2_list)
eredmény = ["Barátok", "Szerelem", "Szeretet", "Házasság", "Ellenség", "testvérek"]

Amíg az eredménylistában a betűk nem nullák, tárolja az indexértéket, ahonnan a szeletelést végre kell hajtania. Ha az index nagyobb vagy egyenlő nullával, szeletelje fel a listákat két részre, és tárolja az összefűzött karakterláncot úgy, hogy sorrendben először a jobb oldali részt adja hozzá. Ez biztosítja, hogy az óramutató járásával ellentétes irányban tudjon számolni.

Szúrja be az eredményt az állapotmezőbe az első karakterpozíciónál a kapcsolat állapotának megjelenítéséhez.

míg len (eredmény) > 1:
split_index = (szám % len (eredmény) - 1)

ha split_index >= 0:
jobb = eredmény[split_index + 1:]
balra = eredmény[: split_index]
eredmény = jobb + bal
más:
eredmény = eredmény[: len (eredmény) - 1]

Status_field.insert(0, eredmény[0])

Határozzon meg egy függvényt, mindent kitöröl(). Használja a delete() függvényt az első indextől az utolsóig a három beviteli mezőben a képernyőn megjelenő tartalom törléséhez. Használja a focus_set() metódust az első beviteli mezőben az aktiváláshoz, és jelezze a felhasználónak, hogy értékeket adjon meg.

defmindent kitöröl():
Person1_field.delete(0, VÉGE)
Person2_field.delete(0, VÉGE)
Status_field.delete(0, VÉGE)
Person1_field.focus_set()

Inicializálja a Tkinter-példányt, és jelenítse meg a gyökérablakot az osztálynak való átadással. Állítsa be a választott háttérszínt, a méretet és az alkalmazás címét.

gyökér = Tk()
root.configure (background=„#A020F0”)
root.geometry("700x200")
root.title("FLAMES játék")

Határozzon meg három címkét a két személy és kapcsolati állapotuk jelölésére. Állítsa be a szülőablakot, amelybe el szeretné helyezni őket, a megjelenítendő szöveget, a betűszínt, a háttérszínt és a betűstílusokat. Vízszintes irányban adjon hozzá néhány párnázást.

label1 = Címke (gyökér, szöveg="Név 1:", fg='#ffffff',bg=„#A020F0”, font=("arial",20,"bátor"), padx='20')
label2 = Címke (gyökér, szöveg="Név 2:", fg='#ffffff',bg=„#A020F0”, font=("arial",20,"bátor"), padx='20')
label3 = Címke (gyökér, szöveg="Kapcsolati státusz: ", fg='#ffffff', bg=„#A020F0”,font=("arial",20,"bátor"), padx='20')

A rácskezelő segítségével rendezze el a három widgetet az első oszlopban. Helyezze az első címkét a második sorba, a második címkét a harmadik sorba, és a harmadik címkét a negyedik sorba.

label1.grid (sor=1, oszlop=0)
label2.grid (sor=2, oszlop=0)
label3.grid (sor=4, oszlop=0)

Határozzon meg három bejegyzés widgetet a két személy értékeinek lekéréséhez és állapotuk megjelenítéséhez. Állítsa be a szülőablakot, amelybe a widgeteket el szeretné helyezni, és a betűstílusokat, amelyeknek rendelkeznie kell.

Person1_field = Bejegyzés (gyökér, font=("arial", 15, "bátor"))
Person2_field = Bejegyzés (gyökér, font=("arial", 15, "bátor"))
Status_field = Bejegyzés (root, font=("arial",15,"bátor"))

Hasonlóképpen, használja a rácskezelőt a widgetek rendszerezéséhez a második oszlopban. Használja a ipadx tulajdonság a widget keretein belülre helyezendő képpontok számának beállításához.

Személy1_mező.rács (sor=1, oszlop=1, ipadx="50")
Person2_field.grid (sor=2, oszlop=1, ipadx="50")
Status_field.grid (sor=4, oszlop=1, ipadx="50")

Határozzon meg két gombot, Beküldés és Egyértelmű. Állítsa be a szülőablakot, amelybe el szeretné helyezni őket, a megjelenítendő szöveget, a háttérszínt, a betűtípus színét, a kattintáskor végrehajtandó funkciókat és a betűstílusokat.

A rácskezelő segítségével helyezze el a gombokat a második oszlop negyedik és hatodik sorába.

button1 = Gomb (gyökér, szöveg="Beküldés", bg="#00ff00", fg="fekete", command=tell_status, font=("arial",13,"bátor") )
button2 = Gomb (gyökér, szöveg="Egyértelmű", bg="#00ff00", fg="fekete", command=clear_all, font=("arial",13,"bátor"))
button1.grid (sor=3, oszlop=1)
button2.grid (sor=5, oszlop=1)

A mainloop() függvény azt mondja a Pythonnak, hogy futtassa a Tkinter eseményhurkot, és figyelje az eseményeket, amíg be nem zárja az ablakot.

root.mainloop()

Tedd össze az összes kódot, és készülj fel a FLAMES játékkal való játékra.

Minta kimenet a FLAMES játékból

A fenti program futtatásakor a program megjeleníti a FLAMES játékalkalmazást három címkével, három beviteli mezővel és két rácsba rendezett gombbal. A "Tony Stark" és a "Pepper Potts" név megadásakor a program a kapcsolati állapotukat "Szerelem"-ként jeleníti meg.

Python használatával összeállítható játékok

A Pygame, az Arcade, a Panda3D, a PyOpenGL és a Pyglet néhány hasznos modul, amelyekkel Python játékokat készíthet. A Pygame segítségével olyan 2D-s játékokat építhetsz, mint a Super Mario Bros, a Flappy Bird és a Snake. Az Arcade használatával Pac-Man, Asteroids vagy Breakout klónt építhetsz.

A Panda3D segíthet olyan 3D-s játékok létrehozásában, mint a Toontown Online, a Pirates of the Caribbean Online és a Disney Virtual Magic Kingdom.