Beispiel #1
0
def lisaaKomponentti():
    """
    Lisää komponentin haaraan.
    """
    komp = ikn.lue_kentan_sisalto(KLIITTYMÄ["syote"[0]]).strip().lower()
    arvo = ikn.lue_kentan_sisalto(KLIITTYMÄ["syote"[1]]).strip()
    id = ikn.lue_kentan_sisalto(KLIITTYMÄ["syote"[2]]).strip()
    sallitut = ("v", "r", "k", "l", "c")

    if not komp in sallitut:
        ikn.avaa_viesti_ikkuna("Virhe!", "Komponentti ei ollut kelvollinen.",
                               True)
        ikn.tyhjaa_kentan_sisalto(KLIITTYMÄ["syote"[0]])
        return

    if komp == "v":
        komp = "r"
    elif komp == "k":
        komp = "l"

    arvo = sim.muunnaSi(arvo)
    if not arvo:
        ikn.avaa_viesti_ikkuna("Virhe!", "Arvo ei ollut kelvollinen.", True)
        ikn.tyhjaa_kentan_sisalto(KLIITTYMÄ["syote"[1]])
        return

    komp = (komp, arvo)
    id = tarkistaID(id)

    KLIITTYMÄ["komponentit"][id].append(komp)
    komponenttilistaus()
    piirtaja()
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 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)
def aseta_jannite():
	""" Pyytää käyttäjältä tarvittavat tiedot piirin virran laskemiseksi.
		Kyselyä toistetaan kunnes tarvittavat tiedot on annettu. Jännite annettama ilman merkintää V,
		mutta voidaan antaa kerrannaisyksikön kanssa, kuten 1p"""
	tila["jannite"] = ik.lue_kentan_sisalto(jannite_kentta)
	jannite = tila["jannite"][0:-1]
	yksikko = tila["jannite"][-1]
	while True:
		try:
			if tila["jannite"] == "0":
				raise(ValueError)
			else:
				pass
			jannite == int(jannite)
		except ValueError:
			ik.avaa_viesti_ikkuna("Virhe", "Et antanut kelvollista jännitettä!", virhe=False)
			return aseta_jannite
	for yksikko in SI_kerrannaisyksikot:
		U = jannite * SI_kerrannaisyksikot.get("yksikko")  #U = jannite
		if False:
			ik.avaa_viesti_ikkuna("Virhe", "Et antanut kelvollista jännitettä!\nVinkki: Anna jännite ilman yksikköä, esim. muodossa 12.0k", virhe=False)
		else:
			pass
	arvot["U"] = U
	pi.piirra_jannitelahde(piirin_piirto_tila, arvot["U"], arvot["f"], v_asetteluvali=2)
	ik.tyhjaa_kentan_sisalto(jannite_kentta)
Beispiel #5
0
def valitse_tyyppi():
    """
    Tarkastaa syötteestä, mitä tyyppiä komponentti on
    """
    tyyppi = ik.lue_kentan_sisalto(tila["syote"])
    ik.tyhjaa_kentan_sisalto(tila["syote"])
    if tyyppi.isdigit():
        ik.avaa_viesti_ikkuna(
            "VIRHE",
            "Komponentti voi olla vastus(r), kela(l) tai kondensaattori(c)!",
            True)
    elif len(tyyppi) > 1:
        if tyyppi == 'aasisvengaa':
            ik.avaa_viesti_ikkuna("Vanha vitsi!", "Aasi ei svengaa.", True)
        ik.avaa_viesti_ikkuna(
            "VIRHE",
            "Komponentti voi olla vastus(r), kela(l) tai kondensaattori(c)!",
            True)
    elif tyyppi == 'r' or 'l' or 'c':
        tallenna_tyyppi(tyyppi)
    else:
        ik.avaa_viesti_ikkuna(
            "VIRHE",
            "Komponentti voi olla vastus(r), kela(l) tai kondensaattori(c)!",
            True)
Beispiel #6
0
def tarkista_syotteet():
    """
    Tarkistaa syötteet. Jos syötteet kelpaa, käynnistää pelin.
    """
    try:
        kentan_tiedot["korkeus"] = abs(int(ikkunasto.lue_kentan_sisalto(syotteet["korkeus"])))
        kentan_tiedot["leveys"] = abs(int(ikkunasto.lue_kentan_sisalto(syotteet["leveys"])))
        kentan_tiedot["miinojen_lkm"] = abs(int(ikkunasto.lue_kentan_sisalto(syotteet["miinojen_lkm"])))
    except ValueError:
        ikkunasto.avaa_viesti_ikkuna(
            "Virhe",
            "Anna kentän leveydeksi ja korkeudeksi sekä miinojen lukumääräksi jokin positiivinen \
            kokonaisluku.",
            True
        )
    else:
        main()
Beispiel #7
0
def nimi():
    '''Tallentaa sen nimen'''
    stats['nimi'] = iku.lue_kentan_sisalto(elementit['vika'])
    iku.tyhjaa_kentan_sisalto(elementit['vika'])
    iku.piilota_ali_ikkuna(elementit['vikaik'])
    ali = iku.luo_ali_ikkuna('')
    liput['save'] = True
    iku.luo_tekstirivi(ali, 'Tulokset tallennettu!')
Beispiel #8
0
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)
Beispiel #9
0
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()
Beispiel #10
0
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()
Beispiel #11
0
def aseta_taajuus():
    """
    Lukee liukulukuarvon syötekentästä ja asettaa sen piirin jännitelähteen taajuudeksi.
    """
    try:
        tila["taajuus"] = ik.lue_kentan_sisalto(tila["syote"])
        if tila["taajuus"][-1].isdigit():
            ik.kirjoita_tekstilaatikkoon(
                tila["laatikko"],
                "Taajuus: {} Hz".format(float(tila["taajuus"])))
        else:
            tila["taajuus"] = muuta_kerrannaisyksikko(tila["taajuus"])
            ik.kirjoita_tekstilaatikkoon(
                tila["laatikko"],
                "Taajuus: {} Hz".format(float(tila["taajuus"])))
    except TypeError:
        ik.avaa_viesti_ikkuna("VIRHE", "Syöte ei ollut kelvollinen", True)
    ik.tyhjaa_kentan_sisalto(tila["syote"])
def lisaa_kela():
	"""Pyytää annettavan kelan tiedot"""
	tila["kelat"] = ik.lue_kentan_sisalto(kela_kentta)
	while True:
		try:
			arvo_kela = tila["kelat"][0:-1]
		except ValueError:
			ik.avaa_viesti_ikkuna("Virhe", "Et antanut kelvollista arvoa!\nVinkki: Anna arvo ilman yksikköä, esim. muodossa 12.0k", virhe=False)
			return lisaa_kela
		else:
			if tila["kelat"] == "0":
				raise(ValueError)
			elif not SI_kerrannaisyksikot.get("yksikko"):
				ik.avaa_viesti_ikkuna("Virhe", "Et antanut kelvollista arvoa!\nVinkki: Anna arvo ilman yksikköä, esim. muodossa 12.0k", virhe=False)
				return lisaa_kela
	yksikko = tila["kelat"][-1]
	L = arvo_kela * SI_kerrannaisyksikot.get("yksikko")
	arvot["L"] = L
def lisaa_vastus():
	"""Pyytää annettavan vastuksen tiedot"""
	tila["vastukset"] = ik.lue_kentan_sisalto(vastus_kentta)
	while True:
		try:
			arvo_vastus = tila["vastukset"][0:-1]
		except ValueError:
			ik.avaa_viesti_ikkuna("Virhe", "Et antanut kelvollista arvoa!\nVinkki: Anna arvo ilman yksikköä, esim. muodossa 12.0n", virhe=False)
			return lisaa_vastus
		else:
			if tila["vastukset"] == "0":
				raise(ValueError)
			elif not SI_kerrannaisyksikot.get("yksikko"):
				ik.avaa_viesti_ikkuna("Virhe", "Et antanut kelvollista arvoa!\nVinkki: Anna arvo ilman yksikköä, esim. muodossa 12.0n", virhe=False)
				return lisaa_vastus
	yksikko = tila["vastukset"][-1]
	R = arvo_vastus * SI_kerrannaisyksikot.get("yksikko")
	arvot["R"] = R
Beispiel #14
0
def asetaTaajuus():
    """
    Lukee syötekenttää ja koettaa asettaa taajuuden.
    """
    taajuusTulokas = ikn.lue_kentan_sisalto(KLIITTYMÄ["syote"[1]]).strip()
    # Muunnos SI yksikköön. Tarkistaa myös syötteen kelvollisuuden. Jos ei kelvollinen,
    # palauttaa "None" arvon.
    taajuusTulokas = sim.muunnaSi(taajuusTulokas)

    if taajuusTulokas:
        KLIITTYMÄ["taajuus"] = taajuusTulokas
        tulostus = sim.Si_ksi(taajuusTulokas)
        ikn.kirjoita_tekstilaatikkoon(
            KLIITTYMÄ["logi"],
            "Taajuus: {}{} Hz".format(tulostus[0], tulostus[1]))
    else:
        ikn.avaa_viesti_ikkuna("Virhe!", "Syöte ei ollut kelvollinen.", True)

    ikn.tyhjaa_kentan_sisalto(KLIITTYMÄ["syote"[1]])
Beispiel #15
0
def muuta_osoitinmuotoon():
    """Lukee kompleksiluvun syötekentästä ja muuttaa sen osoitinmuotoon, jossa osoittimen kulma on esitetty asteina.
	Kompleksiluku sekä sen osoitinmuoto tulostetaan käyttöliittymässä olevaan tekstilaatikkoon."""
    elementit["tekstikentta"] = ik.lue_kentan_sisalto(tekstikentta)
    luku = elementit["tekstikentta"]
    luku = complex(" ".join(luku.split()))
    try:
        isinstance(luku, complex)
    except ValueError:
        ik.avaa_viesti_ikkuna("Virhe",
                              "Et antanut kelvollista kompleksilukua!",
                              virhe=False)
        return muuta_osoitinmuotoon
    else:
        napakoordinaatti = cmath.polar(luku)
        kulma = math.degrees(napakoordinaatti[1])
        return napakoordinaatti[0], kulma
    tulosta_muutettu_kompleksiluku(
        napakoordinaatti, kulma
    )  #returnin jälkeen ei suoriteta enää mitään. Tänne on turha laittaa mitään
def aseta_taajuus():
	"""Pyytää käyttäjältä taajuuden. Oltava nollaa suurempi. """
	tila["taajuus"] = ik.lue_kentan_sisalto(taajuus_kentta)
	taajuus = tila["taajuus"][0:-1]
	yksikko = tila["taajuus"][-1]
	while True:
		try:
			if tila["taajuus"] == "0":
				raise(ValueError)
			else:
				pass
		except ValueError:
			ik.avaa_viesti_ikkuna("Virhe", "Et antanut kelvollista taajuutta!\nVinkki: Anna taajuus ilman yksikköä, esim. muodossa 12.0k", virhe=False)
			return aseta_taajuus
	for yksikko in SI_kerrannaisyksikot:
		f = taajuus * SI_kerrannaisyksikot.get("yksikko")  #f = taajuus
		if False:
			ik.avaa_viesti_ikkuna("Virhe", "Et antanut kelvollista taajuutta!\nVinkki: Anna taajuus ilman yksikköä, esim. muodossa 12.0k", virhe=False)
		else:
			pass
	arvot["f"] = f
Beispiel #17
0
def laske_arvo():
    """
    Laskee impedanssin eri komponenttityypeille, tallentaa ne sanakirjan komponentit-listaan
    ja kutsuu piirtämisfunktiota
    """
    try:
        arvo = float(ik.lue_kentan_sisalto(tila["syote"]))
        tyyppi = tila["tyyppi"]
        ik.tyhjaa_kentan_sisalto(tila["syote"])
        if tyyppi == 'r':
            ik.kirjoita_tekstilaatikkoon(
                tila["laatikko"],
                "Vastuksen impedanssi on {ohmi:.2f} ohmia.".format(ohmi=arvo))
            tila["komponentit"].append((tyyppi, arvo))
            tila["impedanssit"].append(arvo)
            piirra_piiri()
        elif tila["tyyppi"] == 'l':
            impedanssi = 2 * PI * tila["taajuus"] * arvo
            ik.kirjoita_tekstilaatikkoon(
                tila["laatikko"],
                "Kelan induktanssi taajuudella {hertsi:.2f} Hz on {ohmi:.3f} ohmia."
                .format(hertsi=tila["taajuus"], ohmi=impedanssi))
            tila["komponentit"].append((tyyppi, impedanssi))
            tila["reaktanssit"].append(impedanssi)
            piirra_piiri()
        elif tila["tyyppi"] == 'c':
            impedanssi = 1 / (2 * PI * float(tila["taajuus"]) * arvo)
            ik.kirjoita_tekstilaatikkoon(
                tila["laatikko"],
                "Kondensaattorin kapasitanssi taajuudella {hertsi:.2f} Hz on {ohmi:.3f} ohmia."
                .format(hertsi=tila["taajuus"], ohmi=impedanssi))
            tila["komponentit"].append((tyyppi, impedanssi))
            tila["reaktanssit"].append(impedanssi)
            piirra_piiri()
    except ValueError:
        ik.avaa_viesti_ikkuna("VIRHE", "Syötä liukuluku!", True)