Rakenna tämä hauska numerologiapeli Pythonissa harjoitellaksesi merkkijonojen käsittelyä ja oppiaksesi Tkinteristä.
FLAMES on hauska peli lapsille, jotka seisovat ystävien, rakastajien, hellyyden, avioliiton ja vihollisten puolesta. Peli ottaa kahden henkilön nimet ja määrittää heidän suhteensa useilla vaiheilla. Pelataksesi FLAMESia kirjoita muistiin kahden henkilön nimet, poista vastaavat kirjaimet ja laske jäljellä olevien hahmojen määrä.
Toista sanan FLAMES kirjaimia käyttämällä laskuria ja poista kirjain. Jos luku on esimerkiksi neljä, poista M-kirjain. Lasku alkaa taas E: stä. Toista tätä, kunnes jäljellä on vain yksi kirjain, joka ilmaisee suhteen tilan.
Tkinter-moduuli
FLAMES-pelin rakentamiseen käytät Tkinter-moduulia. Tkinter on monikäyttöinen, yksinkertainen ja käyttäjäystävällinen moduuli, jonka avulla voit luoda nopeasti graafisia käyttöliittymiä. Joitakin sovelluksia, joita voit rakentaa aloittelijana Tkinterin avulla, ovat a Musiikinsoittaja, Kalenteri, Painonmuunnostyökalu, ja a Sanasekoituspeli.
Asenna tkinter järjestelmään suorittamalla seuraava komento päätteessä:
pip asennus tkinter
Kuinka rakentaa FLAMES-peli Pythonilla
Löydät FLAMES-pelin lähdekoodin Pythonilla tästä GitHub-arkisto.
Tuo Tkinter-moduuli. Määritä funktio, remove_match_char() joka hyväksyy kaksi listaa syötteenä. Käytä sisäkkäistä silmukkaa toistaaksesi molempia luetteloita. Tarkista, löytyykö vastaava merkki; Jos on, poista se molemmista listoista ja luo kolmas luettelo, joka yhdistää molemmat luettelot tähdellä niiden välissä. Tähti toimii erottimena.
Palauta kolmas luettelo yhdessä oikeana osuman kanssa. Jos kirjaimet eivät täsmää, palauta luettelo yllä luodun mukaisesti.
alkaen tkinter tuonti *
defRemove_match_char(lista1, lista2):
varten i sisään alue (len (lista1)):
varten j sisään alue (len (lista2)):
jos lista1[i] == lista2[j]:
c = lista1[i]
list1.remove (c)
list2.remove (c)
lista3 = lista1 + ["*"] + lista2
palata [lista3, Totta]
lista3 = lista1 + ["*"] + lista2
palata [lista3, Väärä]
Määritä funktio, kerro_tila(). Hae sen henkilön nimi, jonka käyttäjä syötti käyttämällä saada() menetelmä Entry-widgetissä. Muunna kaikki kirjaimet pieniksi ja poista välilyönnit. Muunna nimi merkkiluetteloksi. Toista tämä toisen henkilön nimen kanssa ja aseta edetä muuttuja Totta.
defkerro_tila():
p1 = Henkilö1_kenttä.get()
p1 = p1.alempi()
p1.replace(" ", "")
p1_list = luettelo (p1)
p2 = Henkilö2_kenttä.get()
p2 = p2.alempi()
p2.replace(" ", "")
p2_list = luettelo (p2)
jatka = Totta
Kunnes jatka arvo on tosi, soita remove_match_char() funktio ja välitä kaksi juuri luomaasi luetteloa. Tallenna funktiosta saatu ketjutettu luettelo ja lipun tila. Etsi lisäämäsi tähden hakemisto ja leikkaa merkkijonot kahdeksi luetteloksi ennen ja jälkeen.
Laske kahdessa luettelossa olevien merkkien määrä ja määritä luettelo, joka tallentaa suhteen eri tilat FLAMES-pelin mukaan.
sillä aikaa edetä:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list[0]
jatka = 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)
tulos = ["Ystävät", "Rakkaus", "Kiinto", "Avioliitto", "Vihollinen", "Sisarukset"]
Kunnes tulosluettelon kirjaimet eivät ole nollia, tallenna indeksiarvo, josta sinun on suoritettava viipalointi. Jos indeksi on suurempi tai yhtä suuri kuin nolla, leikkaa luettelot kahteen osaan ja tallenna ketjutettu merkkijono siten, että oikea osa lisätään ensin järjestyksessä. Tämä varmistaa, että voit laskea vastapäivään.
Lisää tulos tilakenttään ensimmäisen merkin kohdalla näyttääksesi suhteen tilan.
sillä aikaa len (tulos) > 1:
split_index = (luku % len (tulos) - 1)jos split_index >= 0:
oikea = tulos[split_index + 1:]
vasen = tulos[: split_index]
tulos = oikea + vasen
muu:
tulos = tulos[: len (tulos) - 1]
Status_field.insert(0, tulos[0])
Määritä funktio, Tyhjennä(). Käytä delete()-funktiota ensimmäisestä hakemistosta viimeiseen kolmessa syöttökentässä tyhjentääksesi näytöllä näkyvän sisällön. Käytä fokus_set()-menetelmää ensimmäisessä syöttökentässä aktivoidaksesi ja kehottaa käyttäjää syöttämään arvot siihen.
defTyhjennä():
Henkilö1_kenttä.delete(0, END)
Person2_field.delete(0, END)
Status_field.delete(0, END)
Person1_field.focus_set()
Alusta Tkinter-ilmentymä ja näytä juuriikkuna välittämällä se luokalle. Aseta haluamasi taustaväri, koko ja sovelluksesi otsikko.
juuri = Tk()
root.configure (tausta='#A020F0')
root.geometry("700x200")
root.title("FLAMES-peli")
Määrittele kolme tunnistetta, jotka kuvaavat kahta henkilöä ja heidän suhteensa tilaa. Aseta pääikkuna, johon haluat sijoittaa ne, teksti, jonka sen tulee näyttää, fontin väri, taustaväri ja kirjasintyylit. Lisää hieman pehmustetta vaakasuunnassa.
label1 = Tunniste (juuri, teksti="Nimi 1:", fg='#ffffff',bg='#A020F0', font =("arial",20,"lihavoitu"), padx='20')
label2 = Tunniste (juuri, teksti="Nimi 2:", fg='#ffffff',bg='#A020F0', font =("arial",20,"lihavoitu"), padx='20')
label3 = Tunniste (juuri, teksti="Suhteen tila:", fg='#ffffff', bg='#A020F0',font=("arial",20,"lihavoitu"), padx='20')
Järjestä ensimmäisen sarakkeen kolme widgetiä ruudukonhallinnan avulla. Aseta ensimmäinen tarra toiselle riville, toinen tarra kolmanteen riviin ja kolmas tarra neljänteen riviin.
label1.grid (rivi=1, sarake=0)
label2.grid (rivi=2, sarake=0)
label3.grid (rivi=4, sarake=0)
Määrittele kolme syöttöwidgetiä saadaksesi kahden henkilön arvot ja näyttääksesi heidän tilansa. Aseta pääikkuna, johon haluat sijoittaa widgetit, ja fonttityypit, jotka sillä pitäisi olla.
Person1_field = Merkintä (juuri, font=("arial", 15, "lihavoitu"))
Person2_field = Merkintä (juuri, font=("arial", 15, "lihavoitu"))
Status_field = Merkintä (juuri, font=("arial",15,"lihavoitu"))
Käytä vastaavasti ruudukonhallintaa järjestääksesi widgetit toiseen sarakkeeseen. Käytä ipadx ominaisuus asettaaksesi widgetin reunojen sisäpuolelle lisättävien pikselien määrän.
Henkilö1_kenttä.ruudukko (rivi=1, sarake=1, ipadx="50")
Person2_field.grid (rivi=2, sarake=1, ipadx="50")
Status_field.grid (rivi=4, sarake=1, ipadx="50")
Määritä kaksi painiketta, Lähetä ja Asia selvä. Aseta pääikkuna, johon haluat sijoittaa ne, teksti, jonka sen tulee näyttää, taustaväri, kirjasimen väri, toiminnot, jotka niiden tulee suorittaa napsautettaessa, ja kirjasintyylit.
Käytä ruudukonhallintaa sijoittaaksesi painikkeet toisen sarakkeen neljänteen ja kuudenteen riviin.
button1 = Painike (juuri, teksti="Lähetä", bg="#00ff00", fg="musta", komento=ilmoita_tila, font=("arial",13,"lihavoitu") )
button2 = Painike (juuri, teksti="Asia selvä", bg="#00ff00", fg="musta", komento=clear_all, font=("arial",13,"lihavoitu"))
button1.grid (rivi=3, sarake=1)
button2.grid (rivi=5, sarake=1)
The mainloop() -toiminto käskee Pythonia suorittamaan Tkinterin tapahtumasilmukan ja kuuntelemaan tapahtumia, kunnes suljet ikkunan.
root.mainloop()
Yhdistä kaikki koodi ja valmistaudu pelaamaan FLAMES-peliä käden ulottuvilla.
FLAMES-pelin näytetulos
Kun yllä oleva ohjelma suoritetaan, ohjelma näyttää FLAMES-pelisovelluksen kolmella tunnisteella, kolmella syöttökentällä ja kahdella ruudukossa olevalla painikkeella. Kun nimet "Tony Stark" ja "Pepper Potts" syötetään, ohjelma näyttää niiden suhteen tilaksi "Rakkaus".
Pelit, joita voit rakentaa Pythonilla
Pygame, Arcade, Panda3D, PyOpenGL ja Pyglet ovat hyödyllisiä moduuleja, joilla voit rakentaa Python-pelejä. Pygamen avulla voit rakentaa 2D-pelejä, kuten Super Mario Bros, Flappy Bird ja Snake. Arcadella voit rakentaa Pac-Man-, Asteroids- tai Breakout-kloonin.
Panda3D voi auttaa sinua rakentamaan 3D-pelejä, kuten Toontown Online, Pirates of the Caribbean Online ja Disney's Virtual Magic Kingdom.