Zastavuj kocky
Čo budeme robiť
- budeme hrať jednoduchú hru, v ktorej sa budeme snažiť zastaviť kocky vtedy, keď bude aspoň na dvoch z nich rovnaká hodnota
Čo už musíme vedieť
- pracovať s korytnačkami, ich tvarmi, tlačidlami
Naučíme sa
- spúšťať a zastavovať procesy, zväčšovať tvar korytnačiek
Na hracej ploche sa nachádzajú 3 kocky, ktoré sa akoby otáčajú. Úlohou hráča je stlačiť tlačidlo STOP vtedy, keď je aspoň na 2 z nich rovnaký počet bodiek.
- Kocky sú zrejme korytnačky s tvarom, ktorého zábery vyjadrujú jednotlivý počet bodiek.
- Tlačidlo START musí zabezpečiť, aby sa všetky kocky začali otáčať, t.j. meniť svoje zábery. Nie však naraz vždy na ďalší záber, lebo vtedy by sa bodky na kockách menili rovnako a nikdy by nenastala situácia, že na niektorých 2 je rovnaký počet bodiek.
- Tlačidlo STOP musí zabezpečiť, aby sa otáčanie kociek zastavilo a aby hráč mohol vidieť, či sa má dobrý postreh a kocky zastavil v okamihu, keď je aspoň na 2 z nich rovnaký počet bodiek.
C:\Program Files\Imagine\Obrazky\) V pravoklikovom menu korytnačkyk1 vyberme Zmeň k1, v dialógu kliknime na tlačidlo Tvar a vyberme súbor s obrázkom kocky: |
Ak sa nám zdá kocka malá, prejdime do záložky Tvar a v časti Zväčšenie napíšme napr. číslo 3, t.j. kocka sa bude zobrazovať ako 3x väčšia ako bola v skutočnosti nakreslená – súbor ani jej obrázok sa v skutočnosti nezmenili, zmenilo sa len jej zobrazovanie na stránke.
Kocku môžeme premiestniť na iné miesto na stránke – v jej pravoklikovom menu vyberme Presúvaj k1.
Ďalšie 2 kocky s rovnakým tvarom aj zväčšením získame kopírovaním tejto korytnačky cez schránku:
- v pravoklikovom menu korytnačky-kocky vyberme Skopíruj do schránky a v pravoklikovom menu stránky vyberme Prilep zo schránky
- Dávajme pozor, aby sme omylom nekopírovali celú stránku – všímajme si, v koho pravoklikovom menu sa nachádzame.
- Položme na stránku tlačidlo, prejdime do jeho pravoklikového menu, vyberme Zmeň t1. Zmeňme jeho popis na ŠTART a jeho udalosť priZapnutí na spustenie všetkých 3 procesov tak ako sme to skúšali v riadku.
- Položme na stránku ďalšie tlačidlo, prejdime do jeho pravoklikového menu, vyberme Zmeň t2. Jeho popis bude STOP a udalosť priZapnutí bude zastavovať všetky procesy rovnako ako tlačidlo v hlavnom paneli, ktorým sme ich zastavovali, keď sme ich pustili z riadku – využijeme základný príkaz zastavVšetky:
V riadku vyskúšajme, či funguje otáčanie kocky, t.j. výmena jej záberov:
? k1'nechZáber 2
? k1'nechZáber 3
? k1'nechZáber 4
...
Takto by sme mohli pokračovať...
Vyskúšajme koľko bodiek bude na kocke, keď záber, ktorý chceme nastaviť má väčšie číslo ako je skutočný počet záberov tvaru korytnačky. Vidíme, že záber 7 je ten istý ako záber 1, záber 8 je rovnaký ako záber 2, atď.
Chceli by sme však, aby sa kocka otáčala, kým ju používateľ nezastaví tlačidlom STOP.
Na to, aby sa v Imagine dialo niečo dokola, ale s prestávkami medzi oboma zmenami použijeme základný príkaz každých (pozrite si jeho definíciu v Pomocníkovi).
? k1'každých 200 [nechZáber záber+1]
Týmto sme pre k1 spustili proces, ktorý každých 200 milisekúnd zmení jej záber na ďalší.
Podobne môžeme pre k2 a k3 spustiť ich procesy:
? k2'každých 500 [nechZáber záber+1]
? k1'každých 800 [nechZáber záber+1]
Ak chceme procesy zastaviť, môžeme stlačiť tlačidlo v hlavnom paneli alebo stlačiť kláves F12.
Keď procesy spustíme s rovnakým počtom milisekúnd, budú sa bodky meniť v rovnakom čase a nikdy sa nestane, že by boli niektoré 2 z nich rovnaké.
Alebo naopak, ak všetkým nastavíme ich záber na 1 a potom ich spustíme v jednom riadku naraz, bude na všetkých 3 vždy rovnaký počet bodiek:
? k1'každých 200 [nechZáber záber+1] k2'každých 200 [nechZáber záber+1] k3'každých 200 [nechZáber záber+1]
Pozor, možno sú na vašej obrazovke tieto príkazy vo viacerých riadkoch, ale treba ich zapísať do jedného príkazového riadku bez stlačenia klávesu <Enter>.
Aby sa kocky otáčali nerovnako môžeme každej z nich nastaviť iný počet milisekúnd. Alebo ak nám nevadí, že sa budú otáčať nepravidelne, môžeme ich zábery meniť náhodne:
? k1'každých 200 [nechZáber ?] k2'každých 200 [nechZáber ?] k3'každých 200 [nechZáber ?]
- V projekte môžeme počítať počet všetkých zastavení – napr. v texte, pričom pri každom stlačení tlačidla STOP s hodnota v text1 zvýši o 1. Dávajme však pozor, aby sme zvýšenie urobili predtým ako zastavíme všetky procesy. Ak by sme tento príkaz zapísali až za príkazom zastavVšetky už by sa nevykonal. A tiež nezabudnime dať do text1 hodnotu 0, lebo inak by vznikla chyba pri pripočítavaní čísla 1 k tejto hodnote.
- Počítajme len také pokusy, v ktorých bol aspoň na 2 kockách rovnaký počet bodiek – opäť zrejme upravíme udalosť priZapnutí tlačidla t2, tentoraz však bude príkaz o niečo dlhší:
ak (alebo (k1'záber=k2'záber)(k1'záber=k3'záber)(k2'záber=k3'záber))
[text1'nechHodnota text1 + 1]
zastavVšetky
Rozdelenie do niekoľkých riadkov je opäť len kvôli prehľadnoti, v udalosti priZapnutí je nutné zapísať všetko to jedného riadku.
- Vyskúšajte, čo sa bude diať, keď viackrát stlačíme tlačidlo ŠTART bez toho, aby sme procesy zastavili.
- Doplňte do programu ešte aj počítanie takých pokusov, keď sa hráčovi nepodarilo zastaviť kocky tak, že aspoň na dvoch z nich je rovnaký počet bodiek.
- Vytvorte aktivitu Akvárium z CD, na ktorom ste od projektu Infovek dostali program Imagine. Postupujte podľa PDF súboru, ktorý nájdete v adresári Prve projekty s Imagine, ktorý je podadresárom adresára, kde máte nainštalovaný Imagine.