def paivita_lippujen_maara(): """ Päivittää merkattujen ruutujen määrän ja näyttää tiedon peli-ikkunassa. """ kentan_tiedot["lippujen_lkm"] = 0 for rivi in nakyva_tila["nakyva_kentta"]: kentan_tiedot["lippujen_lkm"] += rivi.count("f") x = kentan_tiedot["leveys"] * 40 - 53 haravasto.piirra_tekstia("{}/{}".format(kentan_tiedot["lippujen_lkm"], \ kentan_tiedot["miinojen_lkm"]), x, 25, fontti="serif", koko=10)
def piirra_kentta(): """ Käsittelijäfunktio, joka piirtää kaksiulotteisena listana kuvatun miinakentän ruudut näkyviin peli-ikkunaan. Funktiota kutsutaan aina kun pelimoottori pyytää ruudun näkymän päivitystä. """ hv.tyhjaa_ikkuna() hv.piirra_tausta() hv.aloita_ruutujen_piirto() for y, ruutu in enumerate(tila["nakyva"]): for x, ruutux in enumerate(ruutu): hv.lisaa_piirrettava_ruutu(tila["nakyva"][y][x], (x * 40), (y * 40)) hv.piirra_ruudut() hv.piirra_tekstia("", 1, 1, vari=(0, 0, 0, 255), fontti="serif", koko=32)
def piirra_kentta(): haravasto.tyhjaa_ikkuna() haravasto.piirra_tausta() haravasto.aloita_ruutujen_piirto() for j, rivi in enumerate(tila["kentta"]): for i, ruutu in enumerate(rivi): if ruutu != "m" and ruutu != "x": haravasto.lisaa_piirrettava_ruutu( ruutu, i * 40, ((ikkunan_korkeus - 90) - j * 40)) elif ruutu == "m": haravasto.lisaa_piirrettava_ruutu( " ", i * 40, ((ikkunan_korkeus - 90) - j * 40)) elif ruutu == "x": haravasto.lisaa_piirrettava_ruutu( "x", i * 40, ((ikkunan_korkeus - 90) - j * 40)) haravasto.piirra_ruudut() haravasto.piirra_tekstia(tila["ohje"], 0, korkeus * 40 + 5)
def piirra(): """ Käsittelijäfunktio, joka piirtää kaksiulotteisena listana kuvatun miinakentän ruudut näkyviin peli-ikkunaan. Funktiota kutsutaan aina kun pelimoottori pyytää ruudun näkymän päivitystä. """ haravasto.tyhjaa_ikkuna() haravasto.piirra_tausta() haravasto.aloita_ruutujen_piirto() for indeksi, rivi in enumerate(tila["kentta"]): for i, avain in enumerate(rivi): haravasto.lisaa_piirrettava_ruutu(avain, i * 40, indeksi * 40) haravasto.piirra_ruudut() lopputulos = tallennettavat_tiedot["lopputulos"] if lopputulos != None: if lopputulos == "Häviö": haravasto.piirra_tekstia("Hävisit!", 0, len(tila["kentta"]) * 40) else: haravasto.piirra_tekstia("Voitit!", 0, len(tila["kentta"]) * 40)
def paivita_kentta(): #haravasto.tyhjaa_ikkuna() #haravasto.piirra_tausta() haravasto.aloita_ruutujen_piirto() if tila["kentta"][kasittele_hiiri.ykoord][kasittele_hiiri.xkoord] == " ": tila["kentta"][kasittele_hiiri.ykoord][kasittele_hiiri.xkoord] = "0" haravasto.lisaa_piirrettava_ruutu( tila["kentta"][kasittele_hiiri.ykoord][kasittele_hiiri.xkoord], kasittele_hiiri.xkoord * 40, kasittele_hiiri.ykoord * 40) #y, sisalto = enumerate(tila["kentta"]) #x, sis = enumerate(sisalto) #haravasto.lisaa_piirrettava_ruutu(sis,x * 40, y * 40) #for y, sisalto in enumerate(tila["kentta"]): # for x, sis in enumerate(sisalto): # #if sis == " ":sis = "0" # haravasto.lisaa_piirrettava_ruutu(sis, x * 40, y * 40) haravasto.piirra_ruudut() if tila["kentta"][kasittele_hiiri.ykoord][kasittele_hiiri.xkoord] == "x": haravasto.piirra_tekstia("Hävisit h**o!", 0, 0)
def draw_board(): """ Käsittelijäfunktio, joka piirtää kaksiulotteisena listana kuvatun miinakentän ruudut näkyviin peli-ikkunaan. Funktiota kutsutaan aina kun pelimoottori pyytää ruudun näkymän päivitystä. """ har.tyhjaa_ikkuna() har.piirra_tausta() if GAME["gameover"]: har.piirra_tekstia("hävisit :(", 150, len(GAME["board"]) * SPRITE_WIDTH, (150, 40, 27, 255)) if GAME["win"]: har.piirra_tekstia("VOITIT!!! :)", 150, len(GAME["board"]) * SPRITE_WIDTH, (0, 230, 64, 255)) har.piirra_tekstia(GAME["time"], 10, len(GAME["board"]) * SPRITE_WIDTH) har.aloita_ruutujen_piirto() for i, _y_ in enumerate(GAME["board"]): for j, _x_ in enumerate(GAME["board"][i]): if _x_ != 'x': har.lisaa_piirrettava_ruutu(_x_, j * SPRITE_WIDTH, i * SPRITE_WIDTH) elif not GAME["gameover"]: har.lisaa_piirrettava_ruutu(' ', j * SPRITE_WIDTH, i * SPRITE_WIDTH) else: har.lisaa_piirrettava_ruutu('x', j * SPRITE_WIDTH, i * SPRITE_WIDTH) har.piirra_ruudut() if GAME["gameover"] or GAME["win"]: center_horizontal = len(GAME["board"][0]) * SPRITE_WIDTH // 2 center_vertical = len(GAME["board"]) * SPRITE_WIDTH // 2 if GAME["gameover"]: har.piirra_tekstia("Paina mitä vain", center_horizontal - 147, center_vertical, (150, 40, 27, 255)) elif GAME["win"]: har.piirra_tekstia("Paina mitä vain", center_horizontal - 147, center_vertical, (0, 230, 64, 255))
def piirra_kentta(): """ Käsittelijäfunktio, joka piirtää kaksiulotteisena listana kuvatun miinakentän ruudut näkyviin peli-ikkunaan. Funktiota kutsutaan aina kun pelimoottori pyytää ruudun näkymän päivitystä. Piirtää ikkunan sisällön käyttäen funkioita: -tyhjaa_ikkuna (pyyhkii edellisen kierroksen grafiikat pois) -piirra_tausta (asettaa ikkunan taustavärin) -piirra_tekstia (kirjoittaa ruudulle tekstiä) -aloita_ruutujen_piirto (kutsutaan ennen varsinaisen ruudukon piirtoa) -lisaa_piirrettava_ruutu (lisää piirrettävän ruudun) -piirra_ruudut (piirtää kaikki aloituksen jälkeen lisätyt ruudut) """ haravasto.tyhjaa_ikkuna() haravasto.piirra_tausta() tekstin_korkeus = len(tila["kayttajan_nakyma"]) * 40 + 16 haravasto.piirra_tekstia("Miinaharava", 9, tekstin_korkeus, vari=(0, 0, 0, 255), fontti="serif", koko=14) ajastimen_y = len(tila["kayttajan_nakyma"]) * 40 + 4 aika_tekstina = "Aika: " + str(int( tila["ajastin"] / 60)).zfill(2) + ":" + str( tila["ajastin"] % 60).zfill(2) haravasto.piirra_tekstia(aika_tekstina, 9, ajastimen_y, vari=(0, 0, 0, 255), fontti="serif", koko=10) haravasto.aloita_ruutujen_piirto() for i in range(len(tila["kayttajan_nakyma"][0])): x_koordinaatti = 0 + i * 40 for j in range(len(tila["kayttajan_nakyma"])): y_koordinaatti = 0 + j * 40 haravasto.lisaa_piirrettava_ruutu(tila["kayttajan_nakyma"][j][i], x_koordinaatti, y_koordinaatti) haravasto.piirra_ruudut()
def piirra_kentta(): """ Käsittelijäfunktio, joka piirtää kaksiulotteisena listana kuvatun miinakentän ruudut näkyviin peli-ikkunaan. Funktiota kutsutaan aina kun pelimoottori pyytää ruudun näkymän päivitystä. tyhjaa_ikkuna (pyyhkii edellisen kierroksen grafiikat pois) piirra_tausta (asettaa ikkunan taustavärin) piirra_tekstia (kirjoittaa ruudulle tekstiä) aloita_ruutujen_piirto (kutsutaan ennen varsinaisen ruudukon piirtoa) lisaa_piirrettava_ruutu (lisää piirrettävän ruudun) piirra_ruudut (piirtää kaikki aloituksen jälkeen lisätyt ruudut) """ haravasto.tyhjaa_ikkuna() haravasto.piirra_tausta() haravasto.aloita_ruutujen_piirto() for y, rivi in reversed(list(enumerate(tila["nakyvakentta"]))): for x, ruutu in enumerate(rivi): haravasto.lisaa_piirrettava_ruutu(ruutu, x * 40, y * 40) haravasto.piirra_ruudut() tyhjat = sum(x.count(' ') for x in tila["nakyvakentta"]) liput = sum(x.count('f') for x in tila["nakyvakentta"]) if tyhjat + liput == tila["miinat"]: tila["end_time"] = time.time() tila["playerWon"] = True tila["nakyvakentta"] = tila["kentta"] tila["gameRunning"] = False if tila["gameRunning"] == False and tila["playerWon"] == False: haravasto.piirra_tekstia("Hävisit", 0, 0, (255, 0, 0, 255), "Comic Sans MS", 50) elif tila["gameRunning"] == False and tila["playerWon"] == True: haravasto.piirra_tekstia("Voitit", 0, 60, (255, 0, 0, 255), "Comic Sans MS", 50)
def piirra_kentta(): """ Käsittelijäfunktio, joka piirtää kentän ruudut näkyviin peli-ikkunaan. Funktiota kutsutaan aina kun peli pyytää ruudun näkymän päivitystä. Piirtää myös käytettyjen lippujen sekä miinojen määrän näkyviin. """ kentta = tila["kentta"] haravasto.tyhjaa_ikkuna() haravasto.piirra_tausta() haravasto.aloita_ruutujen_piirto() for i, rivi in enumerate(reversed(kentta)): for j, sarake in enumerate(rivi): if sarake == "fx": haravasto.lisaa_piirrettava_ruutu("f", j * 40, i * 40) elif sarake == "x": haravasto.lisaa_piirrettava_ruutu(" ", j * 40, i * 40) else: haravasto.lisaa_piirrettava_ruutu(sarake, j * 40, i * 40) haravasto.piirra_ruudut() haravasto.piirra_tekstia( "Lippuja: {}/{}".format(tila["lippuja"], tila["miinat"]), 0, 0, (255, 0, 0, 255), "serif", 15)
def piirra_ikkuna(): """ Käsittelijäfunktio, joka piirtää tulos-ikkunan. Funktiota kutsutaan kun peli päättyy. """ if tila["tulos"] == "voitto": tulos = "Voitit pelin!" elif tila["tulos"] == "häviö": tulos = "Hävisit pelin." taso = ("Taso: {}".format(tila["taso"])) kesto = ("Pelin kesto: {}".format(tila["aika"]["kesto"])) tila["tulos_ikkuna"].clear() tila["tulos_ikkuna_tausta"].draw() haravasto.piirra_tekstia(tulos, 80, 110) haravasto.piirra_tekstia(taso, 80, 70, koko=15) haravasto.piirra_tekstia(kesto, 80, 40, koko=15)
def piirra_kentta(): """ Käsittelijäfunktio, joka piirtää kaksiulotteisena listana kuvatun miinakentän ruudut näkyviin peli-ikkunaan. Funktiota kutsutaan aina kun pelimoottori pyytää ruudun näkymän päivitystä. """ haravasto.tyhjaa_ikkuna() haravasto.piirra_tausta() haravasto.aloita_ruutujen_piirto() for y, rivi in enumerate(tila["pelaajan_kentta"]): for x, avain in enumerate(rivi): haravasto.lisaa_piirrettava_ruutu(avain, x * 40, y *40) haravasto.piirra_ruudut() taso = ("Taso {}".format(tila["taso"])) miinat = ("Miinat: {}".format(tila["miinoja_jäljellä"])) aika = ("Aika: {}".format(tila["aika"]["reaali_aika"])) haravasto.piirra_tekstia(taso, 0, 40 * tila["korkeus"], vari=(0, 0, 0, 255), fontti="serif", koko=15) haravasto.piirra_tekstia(miinat, 100, 40 * tila["korkeus"], vari=(0, 0, 0, 255), fontti="serif", koko=15) haravasto.piirra_tekstia(aika, 220, 40 * tila["korkeus"], vari=(0, 0, 0, 255), fontti="serif", koko=15)
def piirra_kentta(): """Käsittelijäfunktio, joka piirtää kaksiulotteisena listana kuvatun miinakentän ruudut näkyviin peli-ikkunaan. Funktiota kutsutaan aina kun pelimoottori pyytää ruudun näkymän päivitystä.""" ha.tyhjaa_ikkuna() ha.piirra_tausta() ha.aloita_ruutujen_piirto() for i, sarake in enumerate(tila["kentta"]): for j, rivi in enumerate(sarake): ha.lisaa_piirrettava_ruutu(rivi, j * 40, i * 40) ha.piirra_ruudut() if tiedot["lopputulos"] != "Keskeytetty": if tiedot["lopputulos"] == "Häviö": ha.piirra_tekstia("Hävisit pelin. :(", ((tiedot["leveys"] * 40) / 2) - 128, ((tiedot["korkeus"] * 40) / 2) - 22, vari=(0, 0, 0, 150), fontti="arial", koko=30) ha.piirra_tekstia("Hävisit pelin. :(", ((tiedot["leveys"] * 40) / 2) - 130, ((tiedot["korkeus"] * 40) / 2) - 20, vari=(255, 255, 255, 255), fontti="arial", koko=30) ha.piirra_tekstia("Peli-ikkuna sulkeutuu klikkaamalla sitä", ((tiedot["leveys"] * 40) / 2) - 139, 29, vari=(0, 0, 0, 150), fontti="arial", koko=12) ha.piirra_tekstia("Peli-ikkuna sulkeutuu klikkaamalla sitä", ((tiedot["leveys"] * 40) / 2) - 140, 30, vari=(255, 255, 255, 255), fontti="arial", koko=12) #ha.piirra_tekstia("tai automaattisesti 10 sekunnin päästä", ((tiedot["leveys"] * 40) / 2) - 139, 9, vari=(0, 0, 0, 150), fontti="arial", koko=12) #ha.piirra_tekstia("tai automaattisesti 10 sekunnin päästä", ((tiedot["leveys"] * 40) / 2) - 140, 10, vari=(255, 255, 255, 255), fontti="arial", koko=12) else: ha.piirra_tekstia("Voitit pelin. :)", ((tiedot["leveys"] * 40) / 2) - 123, ((tiedot["korkeus"] * 40) / 2) - 22, vari=(0, 0, 0, 150), fontti="arial", koko=30) ha.piirra_tekstia("Voitit pelin. :)", ((tiedot["leveys"] * 40) / 2) - 125, ((tiedot["korkeus"] * 40) / 2) - 20, vari=(255, 255, 255, 255), fontti="arial", koko=30) ha.piirra_tekstia("Peli-ikkuna sulkeutuu klikkaamalla sitä", ((tiedot["leveys"] * 40) / 2) - 139, 29, vari=(0, 0, 0, 150), fontti="arial", koko=12) ha.piirra_tekstia("Peli-ikkuna sulkeutuu klikkaamalla sitä", ((tiedot["leveys"] * 40) / 2) - 140, 30, vari=(255, 255, 255, 255), fontti="arial", koko=12)
def piirra_kentta(): """ Käsittelijäfunktio, joka piirtää kaksiulotteisena listana kuvatun miinakentän ruudut, kellon, vuoro ja miina laskurin näkyviin peli-ikkunaan. Funktiota kutsutaan aina kun pelimoottori pyytää ruudun näkymän päivitystä. """ haravasto.tyhjaa_ikkuna() haravasto.piirra_tausta() haravasto.piirra_tekstia("Aika:", 50, 950, vari=piirto["t_vari"]) haravasto.piirra_tekstia(tila["aika"], 50, 910, vari=piirto["t_vari"]) haravasto.piirra_tekstia("Vuoro:", 800, 950, vari=piirto["t_vari"]) haravasto.piirra_tekstia(str(tila["vuoro"]), 800, 910, vari=piirto["t_vari"]) haravasto.piirra_tekstia("Miinoja jäljellä:", 350, 950, vari=piirto["t_vari"]) haravasto.piirra_tekstia(str(tila["jaljella"]), 350, 910, vari=piirto["t_vari"]) haravasto.aloita_ruutujen_piirto() for y, rivi in enumerate(piirto["ruudukko"]): for x, merkki in enumerate(rivi): haravasto.lisaa_piirrettava_ruutu( merkki, x * 40 + tila["vaikeus"]["piirtomarginaali"], y * 40 + tila["vaikeus"]["piirtomarginaali"]) haravasto.piirra_ruudut()
def alkupiirto(): haravasto.piirra_tausta() haravasto.piirra_tekstia("Paina enter aloittaaksesi uuden pelin", 0, 400, (0, 0, 0, 255), "serif", 21) haravasto.piirra_tekstia("Paina esc lopettaaksesi", 0, 300, (0, 0, 0, 255), "serif", 21)