teisipäev, 28. märts 2017

Python - tingimuslaused

Tingimuslausetes sõltub programmi edasiminek tingimusest (kas on täidetud või mitte, vastavalt sellele valitakse edasine tee).
Kui tuletate meelde kursuse algust, siis tingimuslaused panime plokkskeemis kirja rombiga ning sellest oli 2 väljundit - mis saab edasi siis, kui tingimus on täidetud, ja mis juhtub siis, kui tingimus ei ole täidetud.

Pythonis on selleks if ... else lause.

Näide:
Küsime kasutajalt parooli ja kui parool on õige, siis ütleb programm, et parool on õige ning kui vale, siis ütleb seda ka.

Katseta järgmist koodi Thonnys

parool = input("Sisesta parool: ")
if parool == 1234:
      print("Õige parool")
else:
      print("Vale parool")

Pööra tähelepanu if ... else süntaksile:

  • if tingimuse lõpetab koolon ning tingimuse täitmisel rakenduv rida (antud näite puhul print) tuleb taandega 
  • else rea lõpetab samuti koolon ning else tingimuse täitmisel rakenduv rida on samuti taandega.

Kas ülalolev programm töötab korrektselt? Kui ei, siis tuleta meelde eelmisel tunnil õpitud sõne ja arvu teema!
Korrasta oma programmi selliselt, et see annaks õige parooli sisestamisel vastuse "Õige parool"!


Ülesanne 5

Palu kasutajal sisestada oma vanus. Kui vanus on alla 13, siis annab programm teada, et kasutaja on edasipääsuks liiga noor ja kui 13 või vanem, siis teate, et pääseb edasi mängima.


If-lauseid võib olla üksteise sees rohkem - kõigepealt kontrollitakse ühte tingimust ja kui see on täidetud siis järgmist jne. Oluline on seejuures silmas pidada, et if-lausete sees olevad if-laused tuleb kirjutada taandega ehk treppida!

Näide:
Küsime kasutajalt parooli ja õige parooli korral seda, kui vana ta on ning kui on noorem kui 13, siis annab programm teada, et kasutaja on sissepääsuks liiga noor.
NB! Näiteprogrammi algusest näed ka eelmise näite probleemkoha ühte võimalikku lahendust (õigeid lahendusi on loomulikult rohkem).

parool = input("Sisesta parool: ")
if parool == str(1234):
      print("Õige parool")
      vanus = input("Sisesta vanus: ")
      if vanus < "13":
            print("Oled sissepääsuks liiga noor")
      else:
           print("Pääsed mängima")
else:
      print("Vale parool")



Ülesanne 6

Hinnete kalkulaator. Palu kasutajal sisestada KT õigete vastuste % (täisarvuna) ning tee programm, mis väljastaks %-le vastava hinde.
üle 100 % - hinne "A+"
100 - 90% - hinne "A"
80 - 89% - hinne "B"
70 - 79% - hinne "C"
60 - 69% - hinne "D"
50 - 59% - hinne "E"
alla 50% - hinne "F"

Edasiarendus - täienda oma programmi nii, et sisestada saaks ka komadega arve. NB! Pythonis kasutatakse koma asemel punkti! Komaga arvuks teisendab sisestatud numbrid funktsiooni float()


Ülesanne 6 (täiendus) (neile, kellele ülesanne 6 on liiga lihtne).

Täienda hinnete kalkulaatori programmi nii, et see küsiks kasutajalt maksimumpunktisumma ning saadud punktid ja arvutaks ise protsendi ning väljastaks nii protsendi kui sellele vastava hinde (analoogne MIT AppInventori äpiga).

Protsenti saad ümardada soovitud järguni funktsiooniga round(protsent, järk) näiteks round(protsent, 1) ümardab protsendi 1 kohani peale koma.

allikas: http://img1.joyreactor.com/pics/post/comics-how-X-see-python-snake-693251.jpeg


kolmapäev, 15. märts 2017

Mängu programmeerimine

Need, kes said eelmisel tunnil astendamise või hinnete kalkulaatori valmis, saavad katsetada mängu loomist.

Mängu loomiseks on vaja:
1. Tegelast, kes tulistab (näiteks rakett).
2. Tegelast, keda tulistatakse (näiteks ufo).
3. Tausta, kus tegevus toimub (näiteks kosmos)
    Kui soovid, et tulistamisele lisanduks heli, saad ühe variandi alla laadida siit: paugud

Võid tegelased ise otsida või siis alla laadida nimetuste all olevatelt linkidelt.

Lisa Design vaates ekraanile järgmised komponendid (NB! Nimeta need ümber, et hiljem oleks lihtsam programmi kirjutada).


NB! Kella saad lisada Palette -> Sensors alt. Kui soovid, et mängimisel kostuks ka helid, siis lisa Media -> Sound vahend.

Nüüd programmeerimine objekid järgmiselt:

Ufo - liigub suvaliselt ekraani ülaosas. Ufo hakkab liikuma kohe, kui ekraanipilt ette tuleb. Liikumise kiirust määrab kell (taimer).

Plokk muudab "ufo" x-koordinaati (vasakule-paremale liikumine) suvalise arvu võrra, mis on 0-st kuni tausta laius - ufo laius (et ufo püsiks ekraanil).

Rakett - tulistab ja teda saab sõrmega lohistada mööda ekraani allosa.
Lohistamine

Tulistamine (mängib ka heli) - kuul on muidu peidetud, aga laeva puudutades muutub nähtavaks ja hakkab kiirusega 20 liikuma laeva y-koordinaadi suunas (üles ufo poole).
Kuul - on peidus, kui parasjagu ei tulistata

Kui liigub ekraani serva, siis läheb samuti peitu (Visible to false).
Kui kuul põrkab kokku teise objektiga (ufo), siis lisandub skoorile 1 punkt juurde, kuul läheb peitu ja ufo liigub mujale.

Programmeeri nupp "UUESTI" nii, et sellel vajutamine nulliks skoori.

Lisaülesanne!

Tee mängule lõpp - näiteks et 10 punkti täitumisel saaks mäng läbi.



Idee: http://www.instructables.com/id/How-to-Make-a-Space-Invaders-Game/?ALLSTEPS