def yllata(): '''Arpoo pelin kentän koon''' peli['korkeus'] = ran.randint(10, 21) peli['leveys'] = ran.randint(10, 21) pelialue = peli["leveys"] * peli["korkeus"] miina_ala = int(pelialue / ran.randint(4, 5)) miina_yla = int(pelialue / ran.randint(3, 4)) peli["miinat"] = ran.randint(miina_ala, miina_yla) liput["peli"] = True iku.lopeta()
def ikkunasto_napin_kasittelija(): sisaltox = ikkunasto.lue_kentan_sisalto(kysyja.kenttax) sisaltoy = ikkunasto.lue_kentan_sisalto(kysyja.kenttay) try: xy.append(int(sisaltox)) xy.append(int(sisaltoy)) ikkunasto.lopeta() except ValueError: ikkunasto.avaa_viesti_ikkuna("Virhe!", "positiivisia kokonaislukuja, kiitos.", True)
def tallenna_tilastot(): """ Tallentaa tilastot tiedostoon """ nimi = ikkunasto.lue_kentan_sisalto(nimikentta) if not nimi: ikkunasto.kirjoita_tekstilaatikkoon(tallennus_ikkuna_laatikko, "Anna jokin nimimerkki") else: with open("tilastot.txt", "a+") as tiedosto: tiedosto.write("{},{},{},{},{},{},{},{}\n".format( nimi, tila["aloitusaika"], tila["peliaika"], tila["voitto"], tila["vuorot"], len(tila["kentta"][0]), len(tila["kentta"]), tila["miinat"])) ikkunasto.lopeta() main()
def tilastot(): """ Luo uuden ikkunan, lukee tilastot tiedostosta ja kirjoittaa ne tekstilaatikkoon. Jos tilastoja tai tiedostoa ei ole, tai niitä ei voi lukea, tulostuu virheviesti. """ ikkunasto.lopeta() tilasto_ikkuna = ikkunasto.luo_ikkuna("Tilastot") ylakehys = ikkunasto.luo_kehys(tilasto_ikkuna, ikkunasto.YLA) alakehys = ikkunasto.luo_kehys(tilasto_ikkuna, ikkunasto.YLA) tyhjenna_nappi = ikkunasto.luo_nappi(ylakehys, "Tyhjennä tilastot", tyhjenna_tilastot) takaisin_nappi = ikkunasto.luo_nappi(ylakehys, "Takaisin", takaisin_nappi_kasittelija) global tilastolaatikko tilastolaatikko = ikkunasto.luo_tekstilaatikko(alakehys, 70, 30) try: with open("tilastot.txt") as luku: try: sisalto = luku.readlines() if not sisalto: ikkunasto.kirjoita_tekstilaatikkoon( tilastolaatikko, "Tilastoja ei ole.") for rivi in sisalto: voitto = "" lista = rivi.split(",") if lista[3] == "True": voitto = "Voitto" elif lista[3] == "False": voitto = "Häviö" ikkunasto.kirjoita_tekstilaatikkoon( tilastolaatikko, "{}\n{}! Pelaaja: {}. Aika: {}. Vuorot: {}\nKentän koko: {}x{}. Miinoja: {}" .format(lista[1], voitto, lista[0], lista[2], lista[4], lista[5], lista[6], lista[7])) except IndexError: ikkunasto.kirjoita_tekstilaatikkoon( tilastolaatikko, "Tilastoja ei voida lukea. Tyhjennä tilastot", True) except FileNotFoundError: ikkunasto.kirjoita_tekstilaatikkoon(tilastolaatikko, "Tilastoja ei ole.")
def arvo_kasittelija(): '''Funktio hakee ja tarkistaa pelaajan antaman arvon. Kentta on tekstikenttä johon käyttäjä kirjoittaa, teksti alue johon kirjoitetaan tekstiä.''' try: peli["korkeus"] = int(iku.lue_kentan_sisalto(elementit["korkeus"])) peli["leveys"] = int(iku.lue_kentan_sisalto(elementit["leveys"])) peli["miinat"] = int(iku.lue_kentan_sisalto(elementit["miinat"])) if peli["korkeus"] <= 0 or peli["leveys"] <= 0 or peli["miinat"] <= 0: iku.avaa_viesti_ikkuna("Virhe", "Arvojen täytyy olla suurempia kuin nolla", True) else: iku.tyhjaa_kentan_sisalto(elementit["leveys"]) iku.tyhjaa_kentan_sisalto(elementit["korkeus"]) iku.tyhjaa_kentan_sisalto(elementit["miinat"]) liput["peli"] = True iku.lopeta() except ValueError: iku.avaa_viesti_ikkuna("Virhe", "Arvojen täytyy olla kokonaislukuja", True)
def uusipeli(): """ Tarkistaa kentän tiedot ja luo uuden pelin lataamalla grafiikat ja alkutilan sekä luomalla peli-ikkunan ja hiiren käsittelijän. """ korkeus = ikkunasto.lue_kentan_sisalto(korkeuskentta) leveys = ikkunasto.lue_kentan_sisalto(leveyskentta) miinat = ikkunasto.lue_kentan_sisalto(miinalkmkentta) try: korkeus = int(korkeus) leveys = int(leveys) miinat = int(miinat) except ValueError: ikkunasto.kirjoita_tekstilaatikkoon( tekstilaatikko, "Anna kentän tiedot kokonaislukuina!") else: if miinat < 1 or korkeus < 1 or leveys < 1: ikkunasto.kirjoita_tekstilaatikkoon( tekstilaatikko, "Arvojen täytyy olla suurempia kuin 0!") elif korkeus > 25 or leveys > 45: ikkunasto.kirjoita_tekstilaatikkoon(tekstilaatikko, "Kenttä on liian suuri!") elif miinat >= leveys * korkeus: ikkunasto.kirjoita_tekstilaatikkoon(tekstilaatikko, "Liikaa miinoja!") else: ikkunasto.lopeta() tila["alku"] = True tila["vuorot"] = 0 tila["lippuja"] = 0 tila["miinat"] = miinat tila["voitto"] = False luo_kentta(leveys, korkeus) haravasto.lataa_kuvat("spritet") haravasto.luo_ikkuna( len(tila["kentta"][0]) * 40, len(tila["kentta"]) * 40) haravasto.aseta_piirto_kasittelija(piirra_kentta) haravasto.aseta_hiiri_kasittelija(kasittele_hiiri) haravasto.aloita()
def back(): '''Mainmenuun vievä funktio''' hav.lopeta() iku.lopeta()
def uusiksi(): '''Restart nappi periaatteessa''' liput['peli'] = True iku.lopeta() hav.lopeta()
def lopeta(): '''Funktio sulkee ohjelman''' liput["jatka"] = False iku.lopeta()
def lopeta_nappi_kasittelija(): """ Sammuttaa päävalikon. """ ikkunasto.lopeta()
def takaisin_nappi_kasittelija(): """ Palaa päävalikkoon. """ ikkunasto.lopeta() main()