Teooria ja ülesanded - 4.tund

Joonistamine Pythonis - valmistume lihtsamate mängude loomiseks


Pythonis saab joonistamisekskasutada erinevaid graafikamooduleid, mõned näited neist: Turtle, tkinter.

Graafikamooduleid kasutades saab luua joonistusi ja liikuvaid pilte, aga ka lihtsamaid mänge.

Suuremate mängude loomiseks on Pythonis olemas animatsioonide teegid (ehk library'd), nt Pygame: http://www.pygame.org/ ja http://www.pygame.org/download.shtml

Pygame animatsioonide teek on natuke aegunud, mistõttu saab seda kasutada vanemate Pythoni versioonidega, uuematega ei pruugi alati tööle minna, Pythoni versioonidega 3.3, 3.4 ja vanemad saab seda aga kasutada.

Näide ühest Pythoni mängust ja seal kasutatud graafikast:



-----------------------


Ülesanded 1 - kordamine


1. Joonista Pythonis inimene ja auto. (tkinter juhendid: http://programmeerimine.cs.ut.ee/tkinter.html#tahvel-canvas
2. Joonista inimese ja auto alla nende peegeldus vees. - LAHENDUS


-----------------------


NB! Joone joonistamine: 


create_line(x0, y0, x1, y1)






Ristküliku ja ovaali joonistamine:

create_oval(x0, y0, x1, y1, fill ="red")



Hulknurga joonistamine:

create_polygon(x0, y0, x1, y1, x2, y2, ..., xn, yn)



-----------------------


 Tingimuslaused ja võrdlused


Paljudes programmides tuleb mingil hetkel teha valik, kas jätkata üht- või teistmoodi. Sellised valikud saab programmeerimisel kirja panna tingimuslausete ehk valiklausete abil. Enamasti on selleks kõigis põhilistes programmeerimiskeeltes olemas if-else käsklused.

IF - juhul kui...
ELSE - muul juhul...

Näide: 
if x > 10:
    print("Suurem kui 10")
else:
    print("Väiksem kui 10")

See programmikood tähendab, et kui x on 10-st suurem, tuleb kirjutada "Suurem kui 10"
Muul juhul tuleb kirjutada: "Väiksem kui 10".

Kuna mõnikord on valikuid rohkem kui kaks, siis tuleks kuidagi kirja panna ka muud võimalused.
Muude võimaluste kirja panemiseks võib kasutada mitut if või mitut if ja else lauset. Viimase jaoks on olemas ka n-ö vahepealne variant if ja else jaoks ehk elif (lühend sõnadest else if)

Näide: 
if x > 10:
    print("Suurem kui 10")
elif x==10:
    print("Võrdne 10-ga")
else:
    print("Väiksem kui 10")


Võrdlustehted

Kahe arvu võrdlus

-----------------------


Ülesanded 2


1. Täienda eelmisel joonisel toodud arvude võrdlemise programmi nii, et kui kaks arvu on võrdsed, siis teatab programm: "Arvud on võrdsed".  - LAHENDUS
(Loe enne igaks juhuks ka järgmine lõik "Treppimine" läbi.)



-----------------------

Treppimine


NB! Pythonis on oluline n-ö "treppimine". Treppimine tähendab seda, et osa programmi lauseid kirjutatakse taandega.
Näide: Kui sa paned programmikoodis kirja if või else tingimuse, siis selleks, et arvuti aru saaks, et nüüd hakkab tingimus, trepitakse järgmisi tingimuse ridasid nelja tühiku abil. St nende ridade ette tekitatakse 4-tühiku pikkune taane.
Selleks, et arvuti saaks aru, millal tingimus lõppeb, vähendatakse sealt alates, kus tingimus enam ei kehti, taanet 4 tühiku võrra.
Nii kujunevad koodis n-ö plokid ehk "trepp".
Trepp on kasulik ka selleks, et programmeerijatel programmikoodist parem aru oleks saada.

"Treppimine" - plokk 1 sees on plokk 2 ja selle sees omakorda plokk 3

Näide "treppimisest" Pythonis. Iga tingimus algab 4-tühikuse taandega.
Esimese IF tingimuse sees on teine IF tingimus, teise IF tingimuse sees kolmas IF.
Kolmanda IF sees on tegevus, mida programm peab tegema, kui kõik kolm IF on täidetud.
Iga IF puhul on ka vastav ELSE plokk ehk valik "muul juhul".


-----------------------

Ülesanded 3


1. Loo programm, mis joonistab punase ristküliku sisse kollase ovaali. 

2. Pane see ovaali-ristküliku joonistamise programm tööle nii, et input() abil küsib programm sinult, mis kujundit sa tahad näha. Kui vastad "ovaal", joonistab programm ekraanile ovaali. Kui aga vastad midagi muud, siis mingi muu suvalise kujundi.  - LAHENDUS

3. Täienda eelmist programmi nii, et kui vastad "ovaal", joonistab programm ovaali, kui vastad "nelinurk", siis nelinurga ja kui vastad midagi muud, siis näiteks kolmnurga vm kujundi.

4. Konnamäng. Loo programm, mis joonistab ekraanile ritta konna ja 5 kivi, nii et programm küsib, mitmendale kivile peab konn hüppama. Sa vastad näiteks 1, 2 3, 4 või 5 ja programm joonistab konna sellele kivile. 



(NB! Järgmistes tundides täiendame programmi nii, et konn hakkab ühelt kivilt teisel hüppama hiirevajutuse peale. Selleks hakkame hiljem kasutama käsitsi joonistatud konna asemel programmi sisse toodud konnapilti: http://programmeerimine.cs.ut.ee/tkinter.html#pildi-vahetamine, hiireklõpsule reageerimist http://programmeerimine.cs.ut.ee/tkinter.html#hiireklopsudele-reageerimine ja animatsiooni https://programmeerimine.cs.ut.ee/tkinter.html#animatsioon)



-----------------------


Loogika


Mõnikord on vaja, et programm kontrolliks, kas korraga on täidetud kaks või enam tingimust. Tihti saab neid asju kontrollida eraldi if-else lausetega, kuid kui tingimusi on palju, on lihtsam seda teha n-ö loogikatehetega: and, or, not...
Näiteks kui sul on vaja, et arvutiprogramm lubaks sul valida, missugust muusikapala soovid mängida (kas kõiki erinevaid muusikapalu järjest, ainult osasid neist või ainult ühte), missuguseid kirjastiile kasutada, missuguseid värve joonistamisel (kas kollast ja rohelist või ainult üht nendest) jne.


Loogikatehete näited



-----------------------


Ülesanded 4


1. Jäta konn ühele kivile istuma ja täienda ülesandes 3.4 toodud konnamängu nii, et arvuti küsib sinult, mis värvi konna soovid. Kui vastad "R" või "r", siis joonistab rohelise, kui vastad "K" või "k", siis joonistab kollase konna.

2. Täienda eelmist programmi, lisades ka punase, sinise ja lilla konna valik.

3. Muuda eelmist programmi nii, et sa saad pakutud värvidest (R, K, P, S, L) valida korraga 2 värvi. Joonistatud konn on esialgu üht värvi ja kui hiirega talle peale liigud, siis ta läheb seda teist värvi, mis sa valisid.

http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/create_oval.html

4. Muuda eelmist programmi nii, et sa saad pakutud värvidest (K, P, S) valida korraga 1-2 värvi. Konn siis vastavalt sellele kas vahetab värvi või mitte. 

5. Muuda mõni kivi kahevärviliseks. 

6. Muuda konnamängu nii, et arvuti küsib sinult, mitu konna ja mitu kivi soovid joonistada (1-3). Ja joonistab siis selle arvu konnasid ja kive.


(Selliseid if, if-elif-else ja if-else valikuid ja or, and operaatoreid kasutavad tihtipeale erinevad arvutiprogrammid, veebilehed, mobiilirakendused ja ka mängud - näiteks saad valida, mis värvi või kirjastiili kirjutamisel kasutada, mitu programmi arvutis korraga tahad lahti jätta, mis päeva ilmateadet soovid internetist vaadata, mitu abilist mängus soovid valida, mis riided oma tegelasele selga soovid panna jne.)


-----------------------


Koduülesanded


Tee kodus ära need ülesanded, mida tunnis ei jõudnud.
















Kommentaare ei ole:

Postita kommentaar