Sukurkite šį smagų numerologijos žaidimą „Python“, kad išmoktumėte manipuliuoti eilutėmis ir sužinotumėte apie „Tkinter“.

FLAMES yra įdomus žaidimas vaikams, stojantiems už draugus, meilužius, meilus, santuoką ir priešus. Žaidimas paima dviejų žmonių vardus ir, atlikdamas daugybę veiksmų, nustato jų santykius. Norėdami žaisti FLAMES, užsirašykite dviejų žmonių vardus, pašalinkite atitinkamas raides ir gaukite likusių simbolių skaičių.

Pakartokite žodžio FLAMES raides naudodami skaičių ir pašalinkite tą raidę. Pavyzdžiui, jei skaičius yra keturi, pašalinkite raidę M. Skaičiavimas vėl prasideda nuo E. Kartokite šį procesą, kol liks tik viena raidė, nurodanti santykių būseną.

Tkinterio modulis

Norėdami sukurti žaidimą FLAMES, naudosite Tkinter modulį. Tkinter yra kelių platformų, paprastas ir patogus modulis, kurį galite naudoti norėdami greitai sukurti grafines vartotojo sąsajas. Kai kurios programos, kurias galite sukurti kaip pradedantysis naudodami „Tkinter“, apima a Muzikos grotuvas, Kalendorius, Svorio konvertavimo įrankis, ir a Žodžių maišymo žaidimas.

instagram viewer

Norėdami įdiegti tkinter savo sistemoje, terminale paleiskite šią komandą:

pip įdiegti tkinter

Kaip sukurti FLAMES žaidimą naudojant Python

FLAMES žaidimo šaltinio kodą galite rasti naudodami Python GitHub saugykla.

Importuokite Tkinter modulį. Apibrėžkite funkciją, Remove_match_char() kuri priima du sąrašus kaip įvestį. Norėdami kartoti abu sąrašus, naudokite įdėtą kilpą. Patikrinkite, ar yra atitinkamas simbolis; jei yra, pašalinkite jį iš abiejų sąrašų ir sukurkite trečiąjį sąrašą, kuriame abu sąrašai būtų sujungti su žvaigždute. Žvaigždutė veikia kaip skyriklis.

Grąžinkite trečiąjį sąrašą kartu su atitiktimi, rasta kaip True. Jei nesutampa nė viena raidė, grąžinkite sąrašą taip, kaip buvo sukurta aukščiau.

 tkinter importuoti *

defRemove_match_char(1 sąrašas, 2 sąrašas):
dėl i in diapazonas (len (1 sąrašas)):
dėl j in diapazonas (len (2 sąrašas)):
jeigu list1[i] == list2[j]:
c = 1 sąrašas [i]
list1.remove (c)
list2.remove (c)
sąrašas3 = sąrašas1 + ["*"] + sąrašas2
grąžinti [3 sąrašas, Tiesa]
sąrašas3 = sąrašas1 + ["*"] + sąrašas2
grąžinti [3 sąrašas, Netiesa]

Apibrėžkite funkciją, tell_status(). Gaukite vardą asmens, kurį vartotojas įvedė naudodamas gauti () metodą įrašo valdiklyje. Konvertuokite visas raides į mažąsias ir pašalinkite tarpus tarp jų. Paverskite pavadinimą į simbolių sąrašą. Pakartokite tai su antrojo asmens vardu ir nustatykite tęsti kintamasis į Tiesa.

deftell_status():
p1 = Asmens1_laukas.get()
p1 = p1.žemesnis()
p1.replace(" ", "")
p1_sąrašas = sąrašas (p1)
p2 = Asmens2_laukas.get()
p2 = p2.žemesnis()
p2.replace(" ", "")
p2_sąrašas = sąrašas (p2)
tęsti = Tiesa

Kol tęsimo reikšmė bus teisinga, skambinkite Remove_match_char() funkcija ir perduoti du sąrašus, kuriuos ką tik sukūrėte. Išsaugokite sujungtą sąrašą ir vėliavėlės būseną, gautą iš funkcijos. Raskite įterptos žvaigždutės rodyklę ir supjaustykite eilutes į du sąrašus prieš ir po jo.

Suskaičiuokite simbolių skaičių dviejuose sąrašuose ir sukurkite sąrašą, kuriame saugoma įvairi santykio būsena, kaip nurodyta žaidime FLAMES.

kol tęsti:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list[0]
tęsti = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_sąrašas = con_list[star_index + 1:]

count = len (p1_list) + len (p2_list)
rezultatas = ["Draugai", "Meilė", "Meilė", "Santuoka", "Priešas", "Broliai ir seserys"]

Kol rezultatų sąrašo raidės nėra nulis, išsaugokite indekso reikšmę, iš kurios turite atlikti pjaustymą. Jei indeksas yra didesnis nei nulis arba lygus nuliui, suskaidykite sąrašus į dvi dalis ir išsaugokite sujungtą eilutę su dešiniąja dalimi. Tai užtikrina, kad galite skaičiuoti prieš laikrodžio rodyklę.

Įveskite rezultatą į būsenos lauką pirmojoje simbolio vietoje, kad būtų rodoma ryšio būsena.

kol len (rezultatas) > 1:
split_index = (skaičiuoti % len (rezultatas) - 1)

jeigu padalijimo_indeksas >= 0:
dešinėje = ​​rezultatas [skirstymo_indeksas + 1:]
kairėje = ​​rezultatas[: split_index]
rezultatas = dešinė + kairė
Kitas:
rezultatas = rezultatas[: len (rezultatas) - 1]

Status_field.insert(0, rezultatas[0])

Apibrėžkite funkciją, Išvalyti viską(). Norėdami išvalyti ekrane rodomą turinį, trijuose įvesties laukuose naudokite funkciją delete() nuo pirmo rodyklės iki paskutinio. Naudokite fokusavimo_set() metodą pirmame įvesties lauke, kad suaktyvintumėte ir nurodytumėte, kad vartotojas turi įvesti reikšmes.

defIšvalyti viską():
Person1_field.delete(0, GALAS)
Person2_field.delete(0, GALAS)
Status_field.delete(0, GALAS)
Asmuo1_laukas.focus_set()

Inicijuokite „Tkinter“ egzempliorių ir parodykite šakninį langą, perduodami jį klasei. Nustatykite pasirinktą fono spalvą, dydį ir programos pavadinimą.

šaknis = Tk()
root.configure (background=„#A020F0“)
root.geometry(„700 x 200“)
root.title("FLAMES žaidimas")

Apibrėžkite tris etiketes, žyminčias du asmenis ir jų santykių statusą. Nustatykite pagrindinį langą, kuriame norite juos įdėti, tekstą, kuris turi būti rodomas, šrifto spalvą, fono spalvą ir šrifto stilius. Pridėkite šiek tiek paminkštinimo horizontalia kryptimi.

etiketė1 = Etiketė (šaknis, tekstas="Vardas 1:", fg='#ffffff',bg=„#A020F0“, šriftas=("arialas",20,"drąsus"), padx='20')
etiketė2 = Etiketė (šaknis, tekstas="Vardas 2:", fg='#ffffff',bg=„#A020F0“, šriftas=("arialas",20,"drąsus"), padx='20')
etiketė3 = Etiketė (šaknis, tekstas="Santykių statusas: ", fg='#ffffff', bg=„#A020F0“,šriftas=("arialas",20,"drąsus"), padx='20')

Naudokite tinklelio tvarkyklę, kad sutvarkytumėte tris valdiklius pirmame stulpelyje. Pirmąją etiketę įdėkite į antrąją eilutę, antrąją – į trečią, o trečią – į ketvirtą eilutę.

label1.grid (row=1, stulpelis=0)
label2.grid (row=2, stulpelis=0)
label3.grid (eilutė=4, stulpelis=0)

Apibrėžkite tris įvesties valdiklius, kad gautumėte dviejų asmenų reikšmes ir parodytumėte jų būseną. Nustatykite pagrindinį langą, kuriame norite įdėti valdiklius, ir šrifto stilius, kuriuos jis turėtų turėti.

Person1_field = Įrašas (šaknis, šriftas=("arialas", 15, "drąsus"))
Person2_field = Įrašas (šaknis, šriftas=("arialas", 15, "drąsus"))
Status_field = Įrašas (šaknis, šriftas=("arialas",15,"drąsus"))

Panašiai naudokite tinklelio tvarkyklę, kad sutvarkytumėte valdiklius antrajame stulpelyje. Naudoti ipadx ypatybę, kad nustatytumėte pikselių skaičių valdiklio kraštinėse.

Asmuo1_laukas.tinklelis (eilutė=1, stulpelis=1, ipadx="50")
Asmuo2_laukas.tinklelis (eilutė=2, stulpelis=1, ipadx="50")
Status_field.grid (row=4, stulpelis=1, ipadx="50")

Apibrėžkite du mygtukus, Pateikti ir Aišku. Nustatykite pagrindinį langą, kuriame norite juos įdėti, tekstą, kurį jis turi rodyti, fono spalvą, šrifto spalvą, funkcijas, kurias jie turėtų vykdyti spustelėjus, ir šrifto stilius.

Naudokite tinklelio tvarkyklę, kad įdėkite mygtukus atitinkamai ketvirtoje ir šeštoje antrojo stulpelio eilutėse.

button1 = mygtukas (šaknis, tekstas ="Pateikti", bg="#00ff00", fg="juodas", command=tell_status, font=("arialas",13,"drąsus") )
button2 = Mygtukas (šaknis, tekstas ="Išvalyti", bg="#00ff00", fg="juodas", command=clear_all, font=("arialas",13,"drąsus"))
mygtukas1.tinklelis (eilutė=3, stulpelis=1)
button2.grid (eilutė=5, stulpelis=1)

The mainloop () funkcija liepia Python paleisti Tkinter įvykių kilpą ir klausytis įvykių, kol uždarysite langą.

root.mainloop()

Sudėkite visą kodą ir pasiruoškite žaisti FLAMES žaidimą po ranka.

FLAMES žaidimo išvesties pavyzdys

Paleidus aukščiau pateiktą programą, programa rodo žaidimo FLAMES programą su trimis etiketėmis, trimis įvesties laukais ir dviem mygtukais, išdėstytais tinklelyje. Įvedus pavadinimus „Tony Stark“ ir „Pepper Potts“, programa parodo jų santykių būseną „Meilė“.

Žaidimai, kuriuos galite sukurti naudodami Python

„Pygame“, „Arcade“, „Panda3D“, „PyOpenGL“ ir „Pyglet“ yra keletas naudingų modulių, su kuriais galite kurti „Python“ žaidimus. Naudodami Pygame galite kurti 2D žaidimus, tokius kaip Super Mario Bros, Flappy Bird ir Snake. Naudodami „Arcade“ galite sukurti „Pac-Man“, „Asteroids“ arba „Breakout“ kloną.

„Panda3D“ gali padėti sukurti 3D žaidimus, tokius kaip „Toontown Online“, „Pirates of the Caribbean Online“ ir „Disney's Virtual Magic Kingdom“.