Obiranje
Pozor: ker smo na koncu semestra, ima naloga zgodnejši rok: oddati jo je potrebno do konca časa predavanj, petka, 17. januarja!
Na predavanjih sem vas nalagal. Rešitev celotne domače naloge (za vse ocene) nima 65, temveč 60 vrstic čisto lepe kode. Med njimi je deset praznih; nobena tudi ni daljša od 80 znakov (pa še česa bi se dalo znebiti.
Nalogo lahko rešujete objektno (priporočam) ali ne.
Novi modul risar ima spremenljivki risar.levo
in
risar.desno
. Uporabljaš ju takole:
print
zamenjaš s tem, kar hočeš v resnici narediti).
Poleg tega novi risar nekoliko drugače dela s slikami: če jo postavimo na koordinate (x, y), na teh koordinatah ne bo levi gornji kot slike temveč bo tam njeno središče. To vam bo prišlo prav za merjenje razdalj med čebelo in cvetovi.
Testov tokrat ni. Testirajte sami, ročno. ;)
Za oceno 5
Nariši 20 cvetov, po štiri vsake barve, na naključna mesta v oknu, vendar vsaj 20 točk od levega, desnega in gornjega roba, po višini pa naj bodo na 300 ali višje (torej ne prenizko, da ne trčijo takoj v čebelo).
Za oceno 6
Cvetovi naj se pomikajo navzdol. Predlagam, da po pet točk v vsakem koraku. Premikanje bo lepše, če funkcije risar.cakaj
ne boste klicali po vsakem premiku cveta, temveč šele, ko se premakne vseh 20 cvetov.
Za oceno 7
Ko pride cvet do dna, naj se ponovno pojavi na vrhu okna, a z drugo, naključno koordinato x.
Za oceno 8
Dodaj čebelo in njeno premikanje, takole: čebela ima določeno hitrost v smeri levo ali desno. Če uporabnik pritisne (oz. tišči) tipko levo, se ta hitrost povečuje v smeri na levo, če pritisne desno, na desno. Če uporabnik ne tišči nobene tipke, se hitrost ne spreminja.
V moji rešitvi vsakič, ko vidim, da uporabnik tišči desno, povečam hitrost za 0.2 in ko tišči levo, jo zmanjšam za 0.2 (tako da je lahko tudi negativna).
Za oceno 9
Ko se čebela dotakne cveta, naj ta izgine, na vrhu pa se pojavi nov cvet (iste barve) na naključni koordinati x. Čebela se dotakne cveta, če se mu po koordinati x približa na manj kot 40 ali manj in po y na manj kot 10.
Za oceno 10
Ko čebela požre moder cvet ali ko zadane rob, je igre konec in okno se zapre (samo klic risar.stoj()
ne bo zadoščal).
Pazi, spoiler!
Sam sem naredil
takole. Imam razred Cvet
, ki ima konstruktor in tri metode:
ena premakne cvet za pet točk nižje, druga prestavi cvet na vrh (ko pride
do dna ali ko ga čebela požre), tretja prejme koordinate čebele in pove, ali
so dovolj blizu cveta ("self
-a"), da je požrt, poleg tega pa vrne
True
, če gre za moder cvet. Drugi razred, čebela, ima konstruktor
in dve metodi; prva spremeni hitrost čebele, če uporabnik tišči levo ali desno,
poleg tega pa premakne čebelo v smeri, v kateri se trenutno premika. Druga
metoda po le, ali je čebela slučajno zunaj. V kodi, ki je izven razredov
sestavim cvetove in čebelo ter v zanki kličem ustrezne metode, dokler je treba.