def main(): """ Luodaan aloitusvalikko, josta voi valita uuden pelin, lopettamisen ja tilastojen katsomisen. Uuteen peliin voi valita kentän koon sekä miinojen määrän """ alku_ikkuna = ikkunasto.luo_ikkuna("Miinaharava") ylakehys = ikkunasto.luo_kehys(alku_ikkuna, ikkunasto.YLA) alakehys = ikkunasto.luo_kehys(alku_ikkuna, ikkunasto.YLA) syotekehys = ikkunasto.luo_kehys(ylakehys, ikkunasto.VASEN) nappikehys1 = ikkunasto.luo_kehys(ylakehys, ikkunasto.VASEN) nappikehys2 = ikkunasto.luo_kehys(ylakehys, ikkunasto.VASEN) uusipelinappi = ikkunasto.luo_nappi(syotekehys, "Uusi peli", uusipeli) tilastonappi = ikkunasto.luo_nappi(nappikehys1, "Katso tilastoja", tilastot) lopetusnappi = ikkunasto.luo_nappi(nappikehys2, "Lopeta", lopeta_nappi_kasittelija) leveysohje = ikkunasto.luo_tekstirivi(syotekehys, "Kentän leveys:") global leveyskentta leveyskentta = ikkunasto.luo_tekstikentta(syotekehys) korkeusohje = ikkunasto.luo_tekstirivi(syotekehys, "Kentän korkeus:") global korkeuskentta korkeuskentta = ikkunasto.luo_tekstikentta(syotekehys) miinalkmohje = ikkunasto.luo_tekstirivi(syotekehys, "Miinojen lukumäärä:") global miinalkmkentta miinalkmkentta = ikkunasto.luo_tekstikentta(syotekehys) global tekstilaatikko tekstilaatikko = ikkunasto.luo_tekstilaatikko(alakehys, 44, 20) ikkunasto.kaynnista()
def main(): global jannite_kentta global taajuus_kentta global vastus_kentta global kela_kentta global kondensaattori_kentta ikkuna = ik.luo_ikkuna("Ikkuna") nappikehys = ik.luo_kehys(ikkuna, ik.VASEN) jannite_rivi = ik.luo_tekstirivi(nappikehys, "Aseta jännitteen suuruus:") jannite_kentta = ik.luo_tekstikentta(nappikehys) taajuus_rivi = ik.luo_tekstirivi(nappikehys, "Aseta taajuuden suuruus:") taajuus_kentta = ik.luo_tekstikentta(nappikehys) vastus_rivi = ik.luo_tekstirivi(nappikehys, "Aseta vastuksen arvo:") vastus_kentta = ik.luo_tekstikentta(nappikehys) kondensaattori_rivi = ik.luo_tekstirivi(nappikehys, "Aseta kondensaattorin arvo:") kondensaattori_kentta = ik.luo_tekstikentta(nappikehys) kela_rivi = ik.luo_tekstirivi(nappikehys, "Aseta kelan arvo:") kela_kentta = ik.luo_tekstikentta(nappikehys) jannite_nappi = ik.luo_nappi(nappikehys, "Aseta jännite", aseta_jannite) taajuus_nappi = ik.luo_nappi(nappikehys, "Aseta taajuus", aseta_taajuus) vastus_nappi = ik.luo_nappi(nappikehys, "Lisää vastus", lisaa_vastus) kondensaattori_nappi = ik.luo_nappi(nappikehys, "Lisää kondensaattori", lisaa_kondensaattori) kela_nappi = ik.luo_nappi(nappikehys, "Lisää kela", lisaa_kela) piirto_nappi = ik.luo_nappi(nappikehys, "Piirrä piiri", piirra_piiri) lopetusnappi = ik.luo_nappi(nappikehys, "Lopeta", ik.lopeta) ylakehys = ik.luo_kehys(ikkuna, ik.VASEN) tila["laatikko"] = ik.luo_tekstilaatikko(nappikehys, leveys=20, korkeus=60) piirto_alue = pi.luo_piiri(ikkuna, leveys=600, korkeus=400, fonttikoko=16) ik.kaynnista()
def peli_paattyi(): """ Näyttää pelin tiedot, kysyy nimimerkkiä ja tallentaa ne tiedostoon. Palaa päävalikkoon kun nappia on painettu. """ haravasto.lopeta() if tila["voitto"]: viesti = "Voitit" else: viesti = "Hävisit" pvm = datetime.datetime.now() aloitusaika = tila["aloitusaika"] aika_s = (pvm - aloitusaika).total_seconds() aika = ("{}min {:.1f}s".format(int(aika_s / 60), aika_s % 60)) aikaleima = aloitusaika.strftime("%d.%m.%Y klo:%H.%M") tila["aloitusaika"] = aikaleima tila["peliaika"] = aika tallennus_ikkuna = ikkunasto.luo_ikkuna("{} pelin!".format(viesti)) ylakehys = ikkunasto.luo_kehys(tallennus_ikkuna, ikkunasto.YLA) alakehys = ikkunasto.luo_kehys(tallennus_ikkuna, ikkunasto.YLA) nimiohje = ikkunasto.luo_tekstirivi(ylakehys, "Nimimerkki:") global nimikentta nimikentta = ikkunasto.luo_tekstikentta(ylakehys) tallenna_nappi = ikkunasto.luo_nappi(ylakehys, "Tallenna peli", tallenna_tilastot) ohita_nappi = ikkunasto.luo_nappi(ylakehys, "Ohita", takaisin_nappi_kasittelija) global tallennus_ikkuna_laatikko tallennus_ikkuna_laatikko = ikkunasto.luo_tekstilaatikko(alakehys, 40, 30) ikkunasto.kirjoita_tekstilaatikkoon( tallennus_ikkuna_laatikko, "{} pelin.\nAika: {}\nVuorot: {}\nKentän koko: {}x{}\nMiinoja: {}\nPäivämäärä: {}." .format(viesti, aika, tila["vuorot"], len(tila["kentta"][0]), len(tila["kentta"]), tila["miinat"], aikaleima)) ikkunasto.kaynnista()
def luo_valikko(): """ Luo valikkoikkunan. """ ikkuna = ikkunasto.luo_ikkuna("Miinaharava") nappikehys = ikkunasto.luo_kehys(ikkuna, ikkunasto.YLA) uusipelinappi = ikkunasto.luo_nappi(nappikehys, "Uusi peli", pyyda_syotteet) tilastonappi = ikkunasto.luo_nappi(nappikehys, "Tilastot", lue_tilastot) lopetusnappi = ikkunasto.luo_nappi(nappikehys, "Lopeta", ikkunasto.lopeta) ikkunasto.kaynnista()
def kysyja(): ikkuna = ikkunasto.luo_ikkuna("Koko") kehys = ikkunasto.luo_kehys(ikkuna) laatikko = ikkunasto.luo_tekstilaatikko(kehys) teksti = ikkunasto.kirjoita_tekstilaatikkoon( laatikko, "Syötä kentän koko (x ruutua kertaa y ruutua)\nYlempään x ja alempaan y" ) kysyja.kenttax = ikkunasto.luo_tekstikentta(kehys) kysyja.kenttay = ikkunasto.luo_tekstikentta(kehys) nappi = ikkunasto.luo_nappi(kehys, "Paina tästä aloittaaksesi", ikkunasto_napin_kasittelija) ikkunasto.kaynnista()
def mainmenu(): '''Valikon mainfunktio joka luo käyttöikkunan käyttäen ikkunastoa''' ikkuna = iku.luo_ikkuna('Miinaharava') kehys1 = iku.luo_kehys(ikkuna) elementit["kehys1"] = iku.luo_kehys(ikkuna, iku.YLA) elementit["kehys2"] = iku.luo_kehys(ikkuna, iku.ALA) iku.luo_nappi(kehys1, "Aloita peli", aloita_peli) iku.luo_nappi(kehys1, "Katsele tuloksia", tulokset) iku.luo_nappi(kehys1, "Lopeta", lopeta) elementit["teksti1"] = iku.luo_tekstilaatikko(elementit["kehys1"], 20, 3) elementit["teksti2"] = iku.luo_tekstilaatikko(elementit["kehys2"], 20, 1) iku.kirjoita_tekstilaatikkoon(elementit["teksti1"], "MIINAHARAVA") iku.kirjoita_tekstilaatikkoon(elementit["teksti2"], "A game by Aleksi") iku.kaynnista()
def main(): """Luo käyttöliittymäikkunan, jossa on vasemmalla tekstikenttä otsikoineen, kaksi nappia (muunnosnappi ja quit) ja oikealla tekstilaatikko.""" global tekstilaatikko global tekstikentta ikkuna = ik.luo_ikkuna("Kompleksilukumuunnin") nappikehys = ik.luo_kehys(ikkuna, ik.VASEN) tekstirivi = ik.luo_tekstirivi(nappikehys, "Kompleksiluku: ") tekstikentta = ik.luo_tekstikentta(nappikehys) muutosnappi = ik.luo_nappi(nappikehys, "Muunna", muuta_osoitinmuotoon) quitnappi = ik.luo_nappi(nappikehys, "Lopeta", ik.lopeta) ylakehys = ik.luo_kehys(ikkuna, ik.VASEN) tekstilaatikko = ik.luo_tekstilaatikko(ylakehys, leveys=80, korkeus=20) ik.kaynnista()
def peli_loppu(): '''Funktio joka suorittaa kaiken pelin loppumisen jälkeen tapahtuvan''' ikkuna = iku.luo_ikkuna('') ali = iku.luo_kehys(ikkuna) if liput['voitto'] == 1: iku.avaa_viesti_ikkuna('', 'VOITIT PELIN') elif liput['voitto'] == 2: iku.avaa_viesti_ikkuna('', 'HÄVISIT PELIN') iku.luo_tekstirivi( ali, 'Liputit {} miinaa, kun miinoja oli {} kpl'.format( peli['liputetut'], peli['miinat'])) iku.luo_tekstirivi(ali, 'Aikaa kului {} sekuntia'.format(stats['aika'])) iku.luo_nappi(ali, 'Pelaa uudelleen', uusiksi) iku.luo_nappi(ali, 'Tallenna tulokset', save) iku.luo_nappi(ali, 'Palaa päävalikkoon', back) iku.kaynnista()
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 main(): """ Luo käyttöliittymäikkunan, jossa on vasemmalla puolella syötekenttä numeroarvoille, neljä nappia ja tekstilaatikko. Oikealla puolella on piirikaaviokuva. """ ikkuna = ik.luo_ikkuna("Piiri pieni pyörii") vasen_kehys = ik.luo_kehys(ikkuna, ik.VASEN) oikea_kehys = ik.luo_kehys(ikkuna, ik.OIKEA) tk_otsikko = ik.luo_tekstirivi(vasen_kehys, "arvo:") tila["syote"] = ik.luo_tekstikentta(vasen_kehys) jannitenappi = ik.luo_nappi(vasen_kehys, "aseta jännite", aseta_jannite) taajuusnappi = ik.luo_nappi(vasen_kehys, "aseta taajuus", aseta_taajuus) haaranappi = ik.luo_nappi(vasen_kehys, "luo uusi haara", luo_haara) komponenttinappi = ik.luo_nappi(vasen_kehys, "anna komponentin tyyppi", valitse_tyyppi) arvonappi = ik.luo_nappi(vasen_kehys, "anna komponentin arvo", laske_arvo) lopetusnappi = ik.luo_nappi(vasen_kehys, "quit", ik.lopeta) tila["laatikko"] = ik.luo_tekstilaatikko(vasen_kehys, 50, 40) tila["piiri"] = psto.luo_piiri(oikea_kehys, 700, 700, 10) ik.kaynnista()
def main(): """ Luo käyttöliittymäikkunan, joka sisältää käyttöliittymän napit eri toimintoihin, kuvaajan ja tekstilaatikon. Oletuksena sovellus avataan koko näytölle. Käyttöliittymäelementtien koot voidaan määrätä vakioiden avulla. """ ikkuna = ik.luo_ikkuna(OTSIKKO) ikkuna.state("zoomed") # Avataan oletuksena koko näytölle. nappikehys = ik.luo_kehys(ikkuna, ik.VASEN) napit["LATAA"] = ik.luo_nappi(nappikehys, NAPPI_LATAA, avaa_kansio) napit["PIIRRA"] = ik.luo_nappi(nappikehys, NAPPI_PIIRRA, piirra_data) napit["POISTA"] = ik.luo_nappi(nappikehys, NAPPI_POISTA, poista_tausta) napit["LASKE"] = ik.luo_nappi(nappikehys, NAPPI_LASKE, laske_intensiteetit) napit["TALLENNA"] = ik.luo_nappi(nappikehys, NAPPI_TALLENNA, tallenna_kuvaaja) # Määritellään napit ja asetetaan niille käsittelijät. laatikkokehys = ik.luo_kehys(ikkuna, ik.VASEN) # Luodaan kehys tekstilaatikolle. elementit["alue"], elementit["kuvaaja"] = ik.luo_kuvaaja( nappikehys, kasittele_pistevalinta, KUVAAJAN_KOKO[0], KUVAAJAN_KOKO[1]) elementit["piirto"] = elementit["kuvaaja"].add_subplot(1, 1, 1) # Luodaan kuvaaja ja sille subplot. elementit["piirto"].set_xlabel(X_AKSELI) elementit["piirto"].set_ylabel(Y_AKSELI) # Asetetaan akseleille nimet. elementit["tekstilaatikko"] = ik.luo_tekstilaatikko( laatikkokehys, leveys=LAATIKON_KOKO[0], korkeus=LAATIKON_KOKO[1]) # Luodaan tekstilaatikko. ik.kirjoita_tekstilaatikkoon(elementit["tekstilaatikko"], INFO) # Kirjoitetaan infoteksti. ik.kaynnista() # Käyntiin!
def main(): """ Luo käyttöliittymäikkunan, jossa vasemmalla on kolme nappia, joista kaksi alinta on erotettu vaakaerottimella, oikealla taas on kuvaaja, tekstirivi sekä tekstilaatikko. Käyttöliittymä koostuu yhteensä neljästä kehyksestä; vasen "emo" kehys ja oikea kehys jakavat ikkunan kahteen osaan. Vasen kehys taas jaetaan pystysuunnassa vielä kahteen osaan, mikä mahdollistaa nappien lisäämisen ohjelman edetessä ilman, että vaakaerottimen alle tulevat lopetus- ja tyhjennysnapit menevät muiden kanssa sekaisin. """ ikkuna = ikkunasto.luo_ikkuna("Spektrimestari v.{}".format(VERSIO)) vasen_emo_kehys = ikkunasto.luo_kehys(ikkuna) ELEMENTIT["vasen_yla_kehys"] = ikkunasto.luo_kehys(vasen_emo_kehys, ikkunasto.YLA) vasen_ala_kehys = ikkunasto.luo_kehys(vasen_emo_kehys, ikkunasto.YLA) oikea_kehys = ikkunasto.luo_kehys(ikkuna) ikkunasto.luo_nappi(ELEMENTIT["vasen_yla_kehys"], "Avaa...", avaa_kansio) ikkunasto.luo_vaakaerotin(vasen_ala_kehys) ikkunasto.luo_nappi(vasen_ala_kehys, "Ohje", nayta_ohje) ikkunasto.luo_nappi(vasen_ala_kehys, "Tyhjennä", tyhjaa_muisti) ikkunasto.luo_nappi(vasen_ala_kehys, "Lopeta", ikkunasto.lopeta) piirtoalue, kuvaaja = ikkunasto.luo_kuvaaja(oikea_kehys, valitse_datapiste, 600, 400) akselit = kuvaaja.subplots() kuvaaja.suptitle("Spektri") akselit.grid(True) ELEMENTIT["piirtoalue"] = piirtoalue ELEMENTIT["kuvaaja"] = kuvaaja ELEMENTIT["akselit"] = akselit ELEMENTIT["tekstirivi"] = ikkunasto.luo_tekstirivi(oikea_kehys, "") ELEMENTIT["tekstilaatikko"] = ikkunasto.luo_tekstilaatikko( oikea_kehys, 60, 20) ikkunasto.kaynnista()
palikat["leveyskentta"] = ik.luo_tekstikentta(syotekehys) miinatohje = ik.luo_tekstirivi(syotekehys, "Miinojen lukumäärä:") palikat["miinatkentta"] = ik.luo_tekstikentta(syotekehys) oknappi = ik.luo_nappi(nappikehys, "Ok", ok) def ok(): try: parametrit["korkeus"] = int( ik.lue_kentan_sisalto(palikat["korkeuskentta"])) parametrit["leveys"] = int( ik.lue_kentan_sisalto(palikat["leveyskentta"])) parametrit["miinalkm"] = int( ik.lue_kentan_sisalto(palikat["miinatkentta"])) ik.piilota_ali_ikkuna(palikat["valinnat"]) except ValueError: ik.avaa_viesti_ikkuna("Virhe", "Syötä kolme kokonaislukua", virhe=True) #Pääohjelma valikko_ikkuna = ik.luo_ikkuna("Miinaharava") ylakehys = ik.luo_kehys(valikko_ikkuna, ik.YLA) alakehys = ik.luo_kehys(valikko_ikkuna, ik.YLA) nappikehys = ik.luo_kehys(ylakehys, ik.VASEN) pelinappi = ik.luo_nappi(nappikehys, "Aloita uusi peli", main) valinnatnappi = ik.luo_nappi(nappikehys, "Valinnat", valinnat) tilastotnappi = ik.luo_nappi(nappikehys, "Tilastot", tilastot) lopetusnappi = ik.luo_nappi(nappikehys, "Lopeta", ik.lopeta) ik.kaynnista()
_piirra_komponentti(piiri, komponentti[0], komponentti[1], pituusyksikko) if loppujohdin: piiri.add(e.LINE, d="down", l=3 * pituusyksikko) if not viimeinen: piiri.add(e.DOT) piiri.add(e.LINE, d="right", l=h_asetteluvali / 2, move_cur=False) piiri.add(e.LINE, d="left", l=h_asetteluvali / 2) if __name__ == "__main__": import ikkunasto as ui def piirra_testipiiri(): haara = [[("r", 100), ("r", 100)], ("r", 200), [("r", 100), ("r", 100), ("r", 100)]] piirra_jannitelahde(piiri, 10, "10k", 2) piirra_haara(piiri, haara, 3, 2, viimeinen=True) haara = [("c", "1.0n")] #piirra_haara(piiri, haara, 1, 2, viimeinen=True) piirra_piiri(piiri) ikkuna = ui.luo_ikkuna("much circuit") kehys = ui.luo_kehys(ikkuna, TOP) ui.luo_nappi(kehys, "TESTAA", piirra_testipiiri) ui.luo_nappi(kehys, "LOPETA", ui.lopeta) piiri = luo_piiri(kehys, 600, 600, 10) ui.kaynnista()
def nollaus(): """ Palauttaa arvot perusarvoihin. """ KLIITTYMÄ["komponentit"] = [[]] KLIITTYMÄ["jannite"] = 0 KLIITTYMÄ["taajuus"] = 0 tyhjaaLaskut() tyhjaaLogi() piiristo.tyhjaa_piiri(KLIITTYMÄ["piirikuva"]) # Pääohjelma if __name__ == "__main__": akkuna = ikn.luo_ikkuna("Piiri pieni pyörii") kehysK = ikn.luo_kehys(akkuna) kehysO = ikn.luo_kehys(akkuna) KLIITTYMÄ["piirikuva"] = piiristo.luo_piiri(kehysK) ikn.luo_nappi(kehysO, "Aloita piirtäminen", wizard) ikn.luo_tekstirivi(kehysO, "Jännite/Taajuuslogi:") KLIITTYMÄ["logi"] = ikn.luo_tekstilaatikko(kehysO, leveys=40, korkeus=4) ikn.luo_nappi(kehysO, "Tyhjää logi", tyhjaaLogi) ikn.luo_tekstirivi(kehysO, "Laskentatulokset:") KLIITTYMÄ["laskentatulokset"] = ikn.luo_tekstilaatikko(kehysO, leveys=40, korkeus=10) ikn.luo_nappi(kehysO, "Tyhjää laskelmat", tyhjaaLaskut) ikn.luo_nappi(kehysO, "Nollaa arvot", nollaus)