Eelmisel korral jõudsime päris kaugele ja “kivide”kukutamisega tegelev programm töötab edukalt. Mainisin juba otsapidi ka, et lisaks otseselt nähtavale peab programmeerides mõtlema ka veidi kaugemale…
“Kivide kukutaja” algsel versioonil oli näiteks komme veaga programm lõpetada kui osade “ekraanilt mööda” kukkunud kivide koordinaadid läksid liiga suureks. Selle vastu tegutsemiseks sai lisatud kontroll:
for kivi in kivid:
if kivi.y > 795 :
kivi.y=799
Nii ei saa kivid “kukkuda” lõputult.
Järgnev video näitab, et ka kivide arvu tõus ei pruugi olla hea:
Tänapäeva arvutitel on väga palju mälu, kivi objekt (kolm numbrit – koordinaadid ja kukkumiskiirus) ei võta palju mälu, aga kui iga mõne sekundi tagant kive juurde lisatakse, siis on kive varsti kümneid, sadu ja poole tunni pärast tuhandeid. See on juba märgatav kogus. Kujutleme nüüd ette, et unustame arvuti seda programmi pikalt näitama või teeme sellest programmist “ekraanisäästja” … jõuetum arvuti (nagu meil koolis) on varsti ülekoormatud, võib jääda aeglaseks ja suisa ebanormaalseks.
Seepärast lisame kivide eemaldamise mängule.
Mida edasi?
Võime lisada mängule “võitmise”.
Selleks on kaks võimalust:
1. Ajaline limiit – kui mängija suudab “ellu jääda” ehk kivita mitte pihta saada mingi aja, siis on ta esimese taseme võitnud.
2. Kokku kukkunud kivide arvu limiit – selleks peame peale kivide kustutamise lisamist tegema eraldi kokku kukkuma pandud kivide loenduri. Kui loendur jõuab mingi suurema ilusa arvuni – näiteks 1000 – siis on mängija võitnud.
Kokkuvõttes erilist vahet ei ole – kuigi kuna kivisid pannakse kukkuma juhuslikult, siis mäng on igakord veidi erinev mõlemal juhul.
Et mängu põnevamaks teha, siis võiks lisada mitu taset (levelit). Igal tasemel võiksid erineda kivide välimus ja suurus (teised pildid), kukkumiskiirus ja/või kukkuvate kivide arv olla suuremad, kolmandal või neljandal tasemel võiks lisada võimaluse osadel kividel kukkuda veidi viltu – vasakule või paremale kaldu.
Kui programmeerimise poolest õigesti teha, siis levelite kirjeldused võiksid olla eraldi konfiguratsioonifailis (vastava taseme piltide nimed, kiirusandmed, suvaliste numbrite alumised ja ülemised limiidid jne).
Proovimiseks ja uurimiseks mõned näited: lihtsam “banaanipommidega” näide, kosmosesõda ja keerulisem “kahuritule” programm.
Meie programmi mõnede muutustega versioon (kukub kuni 100 kivi ja kui suudad pihta saamata toime tulla, siis võidad).