9. Ülesanded: PyGame: aken, värvid, joonistamine
Teooriapeatükid:
Ülesanne 1
Loo uus aken enda jaoks sobiva taustavärviga, mille pealkirjaks (caption, akna ülaservas olev tekst) on "Minu aken". Seadista aken sulguma (akna üleval nurgas olevast nupust).
Ülesanne 2
Defineeri muutujad valge, punane, sinine, kollane, must, roheline, mille väärtusteks on vastavad värvid. Täienda eelmist programmi selliselt, et akna tausta värvi saaks valida. Kasutajalt küsitakse näiteks, mis värvi akent ta soovib avada, ning seejärel avatakse vastavat värvi aken.
Ülesanne 3
Joonista eelmises ülesandes loodud aknasse ühte ritta 8 ruutu. Tee seda tsükliga: joonista üks ruut tavalisel moel, asenda esimene koordinaat muutujaga ja väärtusta see eelnevalt, lisa tsükkel ümber ruudu joonistamise käsu ning lisa tsükli sisse ka muutuja suurendamise käsk. Ilmselt peaks esimene e. x-koordinaat muutuma vähemalt ruudu laiuse võrra (muidu joonistataks ruudud üksteise peale), samas võib olla ka veidi suurem, et ruutude vahele jääks näha ka veidi tausta.
Täienda lahendust nii, et selliseid ridu joonistataks samuti 8 e. tulemuseks oleks 8*8 ruudustik. Vajame topelttsüklit ja samuti peame muutma nüüd ka vertikaalset e. y-koordinaati.
Kuidas võiks saada ruudustikku malelaua taoliseks, s. t. ruute oleks kaht värvi ning iga ruuduga külgnev ruut oleks teist värvi?
Ülesanne 4
Koosta programm, kus avanevas aknas on lumememm (kolm lumepalli, torukübar, silmad, nina, nööbid, luud).
Ülesanne 5
Proovi programmi täiendada selliselt, et ekraanile joonistatakse kolm lumememme. Muidugi on mõistlik seda teha tsükliga, mitte käsitsi koodi kopeerides.
Ülesanne 6
Joonista aknasse 100 juhusliku asukoha, värvi ja raadiusega ringi. Ringi joonistamiseks loo funktsioon. Kuidas arvad: kas parem on koostada funktsioon, mis enda sees leiab juhuslikud väärtused, või funktsioon, millele antakse vastavad suurused argumentidena ette? Või sõltub lahendus sellest, kuidas soovime seda funktsiooni tulevikus teistes programmides kasutada?
Creative Commons litsentsiga Autorile viitamine + Mitteäriline eesmärk 3.0 Eesti (CC BY-NC 3.0 EE) - https://creativecommons.org/licenses/by-nc/3.0/ee/