Ehitage see lõbus numeroloogiamäng Pythonis, et harjutada stringidega manipuleerimist ja õppida tundma Tkinterit.

FLAMES on lõbus mäng lastele, kes seisavad sõprade, armastajate, armsate, abielu ja vaenlaste eest. Mäng võtab kahe inimese nimed ja määrab mitme sammuga nende suhte. FLAMESi mängimiseks märkige üles kahe inimese nimed, eemaldage sobivad tähed ja vaadake järelejäänud tegelaste arvu.

Korrake loenduri abil sõna FLAMES tähti ja eemaldage see täht. Näiteks kui arv on neli, eemaldage M-täht. Loendamine algab uuesti E-st. Korrake seda protsessi, kuni järele jääb ainult üks täht, mis tähistab suhte olekut.

Tkinteri moodul

Mängu FLAMES ehitamiseks kasutate Tkinteri moodulit. Tkinter on platvormideülene, lihtne ja kasutajasõbralik moodul, mille abil saate kiiresti luua graafilisi kasutajaliideseid. Mõned rakendused, mida saate Tkinteri abil algajana luua, hõlmavad a Muusikamängija, Kalender, Kaalu teisendamise tööriistja a Sõnade segadusmäng.

Tkinteri installimiseks oma süsteemi käivitage terminalis järgmine käsk:

pip install tkinter

Kuidas Pythoni abil mängu FLAMES luua

Mängu FLAMES lähtekoodi leiate Pythoni abil sellest GitHubi hoidla.

Importige Tkinteri moodul. Määratlege funktsioon, remove_match_char() mis aktsepteerib sisendina kahte loendit. Kasutage mõlema loendi kordamiseks pesastatud tsüklit. Kontrollige, kas seal on sobiv märk; kui on, eemaldage see mõlemast loendist ja looge kolmas loend, mis ühendab mõlemad loendid tärniga. Tärn toimib eraldajana.

Tagasta kolmas loend koos tõeseks leitud vastega. Kui ükski täht ei ühti, tagastage ülaltoodud loend.

alates tkinter importida *

defeemalda_match_char(loend1, loend2):
jaoks i sisse vahemik (len (loend1)):
jaoks j sisse vahemik (len (loend2)):
kui list1[i] == list2[j]:
c = loend1[i]
list1.remove (c)
list2.remove (c)
nimekiri3 = loend1 + ["*"] + loend2
tagasi [nimekiri3, Tõsi]
nimekiri3 = loend1 + ["*"] + loend2
tagasi [nimekiri3, Vale]

Määratlege funktsioon, tell_status(). Otsi selle isiku nimi, kelle kasutaja sisestas kasutades saada () sisestusvidina meetod. Teisendage kõik tähed väiketähtedeks ja eemaldage vahepealsed tühikud. Teisendage nimi märkide loendiks. Korrake seda teise inimese nimega ja määrake jätka muutuv kuni Tõsi.

deftell_status():
p1 = Isik1_väli.get()
p1 = p1.alumine()
p1.replace(" ", "")
p1_loend = loend (p1)
p2 = Isik2_väli.get()
p2 = p2.alumine()
p2.replace(" ", "")
p2_loend = loend (p2)
jätka = Tõsi

Kuni jätkamise väärtus on tõene, helistage numbrile remove_match_char() funktsiooni ja edastage kaks just loodud loendit. Salvestage funktsioonilt saadud ühendatud loend ja lipu olek. Otsige üles sisestatud tärni register ja lõigake stringid kaheks loendiks enne ja pärast seda.

Loendage kahes loendis olevate märkide arv ja määrake loend, mis salvestab FLAMESi mängu eri staatused, mis suhtel võivad olla.

samal ajal jätka:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list[0]
jätka = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_loend = con_list[star_index + 1:]

count = len (p1_list) + len (p2_list)
tulemus = ["Sõbrad", "Armastus", "Kindumus", "Abielu", "vaenlane", "Õed-vennad"]

Kuni tulemuste loendis olevad tähed pole nullid, salvestage indeksi väärtus, kust peate viilutama. Kui indeks on nullist suurem või võrdne nulliga, lõigake loendid kaheks osaks ja salvestage ühendatud string, mille parempoolne osa lisatakse järjekorras esimesena. See tagab, et saate lugeda vastupäeva.

Seose oleku kuvamiseks sisestage tulemus olekuväljale esimese märgi positsioonil.

samal ajal len (tulemus) > 1:
split_index = (loendus % len (tulemus) - 1)

kui split_index >= 0:
paremal = tulemus[jaotusindeks + 1:]
vasak = tulemus[: split_index]
tulemus = parem + vasak
muidu:
tulemus = tulemus[: len (tulemus) - 1]

Status_field.insert(0, tulemus[0])

Määratlege funktsioon, Kustuta kõik(). Ekraanil kuvatava sisu kustutamiseks kasutage kolmel sisestusväljal funktsiooni delete() alates esimesest registrist kuni viimaseni. Kasutage esimesel sisestusväljal meetodit focus_set(), et aktiveerida ja suunata kasutaja sellele väärtusi sisestama.

defKustuta kõik():
Isik1_väli.delete(0, LÕPP)
Isik2_väli.delete(0, LÕPP)
Status_field.delete(0, LÕPP)
Isik1_väli.focus_set()

Initsialiseerige Tkinteri eksemplar ja kuvage juuraken, edastades selle klassile. Määrake oma valitud taustavärv, suurus ja rakenduse pealkiri.

juur = Tk()
root.configure (background='#A020F0')
root.geometry("700x200")
root.title("FLAMES mäng")

Määrake kolm silti, mis tähistavad kahte isikut ja nende suhte staatust. Määrake ülemaken, kuhu soovite need paigutada, tekst, mida see kuvatakse, fondi värv, taustavärv ja fondi stiilid. Lisage horisontaalsuunas veidi polsterdust.

etikett1 = Silt (juur, tekst="Nimi 1:", fg='#ffffff',bg='#A020F0', font=("arial",20,"julge"), padx='20')
silt2 = Silt (juur, tekst="Nimi 2:", fg='#ffffff',bg='#A020F0', font=("arial",20,"julge"), padx='20')
etikett3 = Silt (juur, tekst="Suhtestaatus: ", fg='#ffffff', bg='#A020F0',font=("arial",20,"julge"), padx='20')

Kasutage ruudustikuhaldurit, et korraldada esimeses veerus kolm vidinat. Asetage esimene silt teise rida, teine ​​silt kolmandasse ritta ja kolmas silt neljandasse ritta.

silt1.grid (rida=1, veerg=0)
label2.grid (rida=2, veerg=0)
label3.grid (rida=4, veerg=0)

Kahe isiku väärtuste saamiseks ja nende oleku kuvamiseks määrake kolm sisestusvidinat. Määrake emaaken, kuhu soovite vidinad paigutada, ja fondi stiilid, mis sellel peaksid olema.

Isik1_väli = sisestus (juur, font=("arial", 15, "julge"))
Isik2_väli = sisestus (juur, font=("arial", 15, "julge"))
Status_field = Kirje (juur, font=("arial",15,"julge"))

Samamoodi kasutage teise veeru vidinate korraldamiseks võrguhaldurit. Kasuta ipadx atribuut, et määrata vidina piiridesse sisestatavate pikslite arv.

Isik1_väli.ruudustik (rida=1, veerg=1, ipadx="50")
Isik2_väli.ruudustik (rida=2, veerg=1, ipadx="50")
Status_field.grid (rida=4, veerg=1, ipadx="50")

Määratlege kaks nuppu, Esita ja Selge. Määrake ülemaken, kuhu soovite need paigutada, tekst, mida see peaks kuvama, taustavärv, fondi värv, funktsioonid, mida nad peaksid klõpsamisel käivitama, ja fondi stiilid.

Kasutage ruudustikuhaldurit, et asetada nupud vastavalt teise veeru neljandale ja kuuendale reale.

nupp1 = nupp (juur, tekst="Esita", bg="#00ff00", fg="must", käsk=tell_status, font=("arial",13,"julge") )
nupp2 = nupp (juur, tekst="Tühjenda", bg="#00ff00", fg="must", käsk=clear_all, font=("arial",13,"julge"))
button1.grid (rida=3, veerg=1)
button2.grid (rida=5, veerg=1)

The mainloop() funktsioon käsib Pythonil käivitada Tkinteri sündmusetsükli ja kuulata sündmusi, kuni sulgete akna.

root.mainloop()

Pange kogu kood kokku ja valmistuge mängima mängu FLAMES, mis on teie käeulatuses.

Mängu FLAMES näidisväljund

Ülaltoodud programmi käivitamisel kuvab programm mängurakenduse FLAMES kolme sildi, kolme sisestusvälja ja kahe ruudustikuna paigutatud nupuga. Nimede "Tony Stark" ja "Pepper Potts" sisestamisel kuvab programm nende suhte staatuseks "Armastus".

Mängud, mida saate Pythoni abil luua

Pygame, Arcade, Panda3D, PyOpenGL ja Pyglet on mõned kasulikud moodulid, millega saate Pythoni mänge luua. Pygame'i abil saate luua 2D-mänge, nagu Super Mario Bros, Flappy Bird ja Snake. Arcade abil saate luua Pac-Mani, Asteroidide või Breakouti klooni.

Panda3D aitab teil luua 3D-mänge, nagu Toontown Online, Pirates of the Caribbean Online ja Disney Virtual Magic Kingdom.