Tarkista kognitiiviset kykysi rakentamalla tämä muistilaattapeli.
Muistilaatta tai sovituspeli on erinomainen ja hauska tapa parantaa kognitiivisia kykyjä, parantaa muistia ja keskittyä. Pelissä on joukko laattoja, jotka sinun täytyy kääntää yksitellen, muistaa ja valita sopivat. Kun sovitat kaikki laatat oikein, voitat pelin.
Joten kuinka voit kehittää tätä hämmästyttävää peliä Pythonilla?
Tkinter- ja Random-moduulit
Voit rakentaa muistilaattapelin Tkinter- ja Random-moduuleilla. Tkinterin avulla voit luoda työpöytäsovelluksia. Se tarjoaa erilaisia widgetejä, kuten painikkeita, tarroja ja tekstiruutuja, jotka helpottavat sitä kehittää sovelluksia, kuten kalentereita, laskimia ja tehtäväluetteloita. Asenna Tkinter avaamalla pääte ja suorittamalla:
pip asennus tkinter
Random-moduuli on sisäänrakennettu Python-moduuli, jota käytetään pseudosatunnaislukujen luomiseen. Käyttämällä tätä, voit rakentaa satunnaisen salasanageneraattorin, nopanheiton simulointisovellus tai listasekoitin. Lisäksi voit myös kehittää mielenkiintoisia pelejä, kuten käsikrikettiä ja numeroiden arvauspelejä.
Kuinka rakentaa Memory Tile -peli Pythonilla
Löydät lähdekoodin muistilaattapelin rakentamiseen Pythonilla tästä GitHub-arkisto.
Aloita tuomalla Tkinter ja Random-moduuli. Alusta juuriikkuna ja aseta otsikko ja mitat pikseleinä.
alkaen tkinter tuonti *
tuonti satunnainen
alkaen tkinter tuonti viestilaatikko
juuri = Tk()
root.title("Memory Tile Game")
root.geometry("760x550")
Määritä kaksi globaalia muuttujaa ja alusta voittajamuuttuja nollaan. Ilmoita luettelo kohteista, jotka näkyvät laatoissa. Järjestä luettelo uudelleen satunnaisten moduulien avulla sekoitus () menetelmä. Määrittele kehys juuriikkunassa ja lisää 10 pystysuorassa suunnassa.
Alusta lukumuuttuja nollaksi ja määritä vastausluettelo ja sanakirja.
maailmanlaajuisesti voittaja, ottelut
voittaja = 0
ottelut = ["omena","omena","banaani","banaani", "oranssi","oranssi", "mustikka","mustikka","mulperi","mulperi", "rypäleet","rypäleet"]
random.shuffle (osumia)
my_frame = Kehys (juuri)
my_frame.pack (pady=10)
laske = 0
vastauslista = []
answer_dict = {}
Määritä funktio, reset(). Aseta tarran teksti tyhjäksi merkkijonoksi käyttämällä config() toiminto. Määritä painikeluettelo, yksi jokaiselle ruudulle. Toista luetteloa ja aseta painikeruudun teksti tyhjäksi merkkijonoksi, taustaväriksi oletusarvoksi (SystemButtonFace), ja tila normaaliksi.
defnollaa():
my_label.config (text="")
button_list = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
varten -painiketta sisään button_list:
button.config (text=" ", bg="SystemButtonFace", tila="normaali")
Määritä funktio, voittaa(). Aseta voittajaviesti tarran tekstiparametriin käyttämällä config() toiminto. Määritä painikeluettelo kuten aiemmin ja toista sitä, jotta ruudun taustaväri tulee vaaleanvihreäksi.
defvoittaa():
my_label.config (text="Onnittelut! Sinä voitat!")
button_list = [b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11]
varten -painiketta sisään button_list:
button.config (bg="#90EE90")
Määritä funktio, button_click() joka ottaa painikkeen ja sen numeron syöttöparametreiksi. Viittaa yleisiin muuttujiin, luetteloon ja sanakirjaan. Jos painikkeen teksti on yhtä suuri kuin välilyönti ja määrä on pienempi kuin kaksi, lisää ja näytä painikkeen teksti. Liitä painikkeen numero vastausluetteloon ja nimi vastaussanakirjaan. Kasvata laskentamuuttujaa yhdellä.
defbutton_click(b, numero):
maailmanlaajuisesti count, answer_list, answer_dict, voittaja
jos b["teksti"] == ' 'ja laskea < 2:
b["teksti"] = vastaa [numero]
answer_list.append (numero)
answer_dict[b] = vastaa[numero]
laske += 1
Jos vastausluettelon pituus on kaksi, se tarkoittaa, että käyttäjä on valinnut kaksi ruutua. Jos ensimmäisen ruudun teksti vastaa toista, määritä tarra näyttämään, että molemmat vastaavat oikein. Aseta painikkeen tila pois käytöstä. Aseta lukema nollaan ja tyhjennä luettelo ja sanakirja. Kasvata voittajamuuttujaa yhdellä ja jos se muuttuu kuuteen, kutsu aiemmin ilmoitettu voittofunktio.
jos len (answer_list) == 2:
jos vastaa[answer_list[0]] == vastaa[answer_list[1]]:
my_label.config (text="Se on pari!")
varten avain sisään answer_dict:
avain["osavaltio"] = "liikuntarajoitteinen"
laske = 0
vastauslista = []
answer_dict = {}
voittaja += 1
jos voittaja == 6:
voittaa()
Muussa tapauksessa nollaa määrämuuttuja ja luettelo. Näytä viestilaatikko, jonka otsikko ja sisältö kuvaavat sen virheellisenä osumana. Toista vastausluetteloa ja aseta ruudun teksti välilyönniksi. Nollaa tarra ja tyhjennä sanakirja. Tämä varmistaa, että painikkeessa ja tarrassa ei ole näkyvää tekstiä, kun käyttäjä on valinnut väärät ruudut.
muu:
laske = 0
vastauslista = []
messagebox.showinfo("Väärä!", "Väärä")
varten avain sisään answer_dict:
avain["teksti"] = " "
my_label.config (text=" ")
answer_dict = {}
Määritä 12 painiketta. Aseta ylätason ikkuna, johon haluat sijoittaa ne, tekstin, jonka ne tulee näyttää, fontin tyyliä niillä tulee olla, niiden korkeus ja leveys sekä komento, joka suoritetaan napsautettaessa. Muista käyttää lambda-toimintoa tietojen välittämiseen button_click() toiminto. Aseta helpotus parametrille ura luodaksesi 3D-syvyysvaikutelman painikkeen ympärille.
b0 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b0, 0), helpotus="ura")
b1 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b1, 1), helpotus="ura")
b2 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b2, 2), helpotus="ura")
b3 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b3, 3), helpotus="ura")
b4 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b4, 4), helpotus="ura")
b5 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b5, 5), helpotus="ura")
b6 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b6, 6), helpotus="ura")
b7 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b7, 7), helpotus="ura")
b8 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b8, 8), helpotus="ura")
b9 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b9, 9), helpotus="ura")
b10 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b10, 10), helpotus="ura")
b11 = Painike (oma_kehys, teksti=' ', font =("Helvetica", 20), korkeus=4, leveys=8, komento=lambda: button_click (b11, 11), helpotus="ura")
Järjestä painikkeet taulukkomuotoon, joka koostuu kolmesta rivistä ja neljästä sarakkeesta Tkinterin ruudukonhallinnan avulla. Voit tehdä sen soittamalla numeroon grid() -menetelmää ja välitä rivi sen sarakkeen numeron kanssa, johon haluat sijoittaa sen.
b0.grid (rivi=0, sarake=0)
b1.grid (rivi=0, sarake=1)
b2.grid (rivi=0, sarake=2)
b3.grid (rivi=0, sarake=3)
b4.grid (rivi=1, sarake=0)
b5.grid (rivi=1, sarake=1)
b6.grid (rivi=1, sarake=2)
b7.grid (rivi=1, sarake=3)
b8.grid (rivi=2, sarake=0)
b9.grid (rivi=2, sarake=1)
b10.grid (rivi=2, sarake=2)
b11.grid (rivi=2, sarake=3)
Määritä tarra, jossa on tyhjä merkkijono, ja lisää 20:n täyte pystysuunnassa. Määritä ylätason valikko juuriikkunaan ja liitä se kääntämällä repäisy parametrille Väärä. Lisää alivalikkokohta, Vaihtoehdot käyttämällä add_cascade parametri.
Lisää kaksi valikkokohtaa sekä komennot, jotka niiden tulisi suorittaa, kun niitä napsautetaan nimetyssä alivalikossa Nollaa peli ja Poistu pelistä. Lisää erotin niiden väliin rajaamista varten.
my_label = Tunniste (juuri, teksti="")
my_label.pack (pady=20)
my_menu = Valikko (juuri)
root.config (menu=my_menu)
option_menu = Valikko (my_menu, tearoff=Väärä)
my_menu.add_cascade (tunniste="Vaihtoehdot", menu=optio_menu)
option_menu.add_command (label="Nollaa peli", komento=reset)
option_menu.add_separator()
option_menu.add_command (label="Poistu pelistä", komento=root.quit)
The mainloop() -toiminto käskee Pythonia suorittamaan Tkinterin tapahtumasilmukan ja kuuntelemaan tapahtumia, kunnes suljet ikkunan.
root.mainloop()
Laita kaikki koodi yhteen. Nyt muistilaattapeli on valmis pelattavaksi.
Memory Tile -pelin tulos
Ohjelmaa suoritettaessa tulee näkyviin 12 painiketta, joissa on tyhjä teksti sekä Vaihtoehdot valikosta. Napsauttamalla Nollaa peli, ikkuna näkyy samalla tavalla.
Kun valitset kaksi vastaavaa ruutua, painikkeet näyttävät poissa käytöstä ja tarra näyttää, että valinta on oikea.
Kun valitset kaksi ruutua, jotka eivät täsmää, näkyviin tulee viestiruutu, joka ilmoittaa, että valinta oli virheellinen. Painikkeet ja tarra palaavat alkuperäiseen tyhjään tilaan.
Kun kaikki valinnat on sovitettu onnistuneesti, ohjelma muuttaa kaikki ruudut vihreiksi ja näyttää voittoviestin.
Pelit, joita voit rakentaa Pythonilla
Python tarjoaa erilaisia moduuleja pelien rakentamiseen. Voit luoda yksinkertaisia sana- tai valintapohjaisia pelejä, kuten Hangman, Tic-Tac-Toe tai Rock Paper Scissors, käyttämällä Tkinter- ja Random-moduuleja. Pygamen avulla voit kehittää pelejä, jotka tarvitsevat enemmän grafiikkaa.
Pygame on sarja Python-moduuleja, jotka toimivat kaikilla alustoilla. Se sisältää tietokonegrafiikkaa ja äänikirjastoja, jotka tekevät peleistä interaktiivisempia. Muutamia Pygamen avulla rakennettavia pelejä ovat Snake-peli, muistipulmapeli ja Sudoku.