Navrhujeme projekt Maž bodky | Analyzujeme projekt Maž bodky | Navrhujeme projekt Mucha | Analyzujeme| Programujeme | Vylepšujeme projekt
Čo budeme robiť
Tí, čo riešili súťaž Cologobežka si možno spomenú na jednoduchý projekt, v ktorom sme mazali bodky: na stránke sa nachádza niekoľko bodiek, úlohou hráča je klikať na bodky – vtedy bodka zmizne – a takto zmazať všetky bodky.
Ak máte na nápad na podobný projekt, ktorý
využíva kliknutia na statické objekty a pripravíte ho, ho nezabunite nám
ho poslať, radi ho uverejníme na www stránke.
Ak potrebujete pomôcť, kliknite sem.
Veľmi podobnou hrou je projekt mucha – okrem toho, že sa na stránke nachádza korytnačka-mucha, ktorú budeme chytať mucholapkou, tak sa táto mucha aj nejakým spôsobom pohybuje.
Analyzujeme
projekt Mucha
Zrejme potrebujeme obrázky muchy, "chytenej" muchy a samotnej mucholapky – nakreslite ich v LogoMotion alebo si ich stiahnite ako samorozbaľovací exe súbor (34 KB). Obrázok muchy nakreslime tak, aby mala mucha niekoľko natočení. Aby obrázok v Imagine reagoval na zmenu smeru pravoklikneme do dolnej časti a vyberme možnosť Podľa uhla. Všetky 3 obrázky zapíšme na disk napr. s názvami mucha.lgf, chytena.lgf a mucholapka.lgf. Korytnačka bude opäť reagovať na ľavé tlačidlo myši, teraz však tak, že zmení svoj tvar na obrázok chytenej muchy a zastaví svoj pohyb. |
|
Programujeme
projekt Mucha
Príkazmi v riadku:
načítajme všetky pripravené obrázky do pamäte Imagine. Obrázky si do pamäte pripravujeme preto, že ich budeme neustále potrebovať – budeme meniť tvar korytnačky počas spustenia projektu. Nie je vhodné spoliehať sa na to, že s naším projektom si niekto prekopíruje aj súbory s obrázkami. Okrem toho, keď súbor zapíšeme pre web k súborom s obrázkami sa na webe nedá dostať – operácia s diskom sú v Imagine na webe zakázané. Presvedčme sa, že v pamäti vznikli tieto 3 premenné Korytnačke zmeňme tvar na muchu. Z riadku vyskúšajme spustenie 2 procesov
– jeden bude muchu hýbať, druhý ju bude otáčať:
|
|
Mucha sa hýbe. Zastavme procesy – F12.
Definujme udalosť priĽavomDolu
na muche:
Opäť rozbehnime z riadku predchádzajúce procesy a vyskúšajme chytať muchu.
|
|
Nakoniec vložme na stránku tlačidlo, ktoré
priZapnutí
zmení tvar myši – využijeme základný príkaz zmeňTvarMyši,
zmení tvar muchy na pôvodnú (nechytenú muchu) a rozbehne procesy pohybu
a
otáčania muchy:
zmeňTvarMyši :mucholapka nechTvar :mucha každých 60 [do 2] každých 800 [vp ?] Opäť si uvedomme, že hoci sme tu zapísali príkazy do viacerých riadkov, v udalosti priZapnutí budú v jednom riadku. |
Zrejme každého napadne, že kopírovaním cez schránku si môžeme vytvoriť niekoľko múch.
Vložme na stránku muchu-kópiu našej k1.
Po stlačení tlačidla sa nová mucha nehýbe
– malo by nám napadnúť, že zrejme nie je oslovená – to napravíme ľahko,
keď do riadku zapíšeme:
? odteraz všetky
Potom sa už po stlačení tlačidla rozhýbu obe muchy, ale pri chytení jednej z nich sa zastaví aj druhá mucha.
Prečo?
V udalosti priĽavomDolu sa zastavia všetky procesy, t.j. aj proces, ktorým sa hýbe druhá mucha.
To sa dá napraviť niekoľkými spôsobmi:
|
|
viem nováHra
zmeňTvarMyši :mucholapka nechTvar :mucha k1'každých 60 [do 2] k1'každých 800 [vp ?] k2'každých 60 [do 3] k2'každých 800 [vp 10+náhodne 100] koniec Tento krok navrhnutia nášho vlastného príkazu sme urobili hlavne kvôli prehľadnosti celého programu. Príkazy sme mohli dopísať aj do riadku priZapnutí, avšak celý riadok by bol príliš dlhý a nedalo by sa v ňom dobre orientovať. Keď napíšeme novú procedúru, môžeme príkazy zarovanávať a dávať do viacerých riadkov.
|
|
Stlačme tlačidlo t1
a vyskúšajme v riadku:
? zo všetkyProcesy [@Riadok [do 2] [vp ?] [do 3] [vp 10 + náhodne 100]] Keď teraz klikneme na niektorú z múch, ešte stále sa zastavia všetky procesy, ale z výpisu vidíme, že každý z nich vyzerá inak a tak môžeme opraviť udalosť priĽavomDolu oboch múch tak, aby každá z nich zastavila nie všetkyProcesy ale iba tie, ktoré sme spustili pre ňu. Prejdime do dialógu Zmeň k1 a zmeňme jej udalosť tak, že zastaví iba procesy [do 2] a [vp ?] Podobne pre k2. |
Vyskúšajme projekt – ak chytíme jednu muchu, zastaví sa iba ona a druhá sa hýbe ďalej.
Takto môžeme pridávať ďalšie muchy, vymýšľať
im iné procesy a potom ich zastavovať v ich udalosti priĽavomDolu.
Druhá možnosť, ako zastaviť iba konkrétny
proces je, že ho pri jeho spustení pomenujeme.
Opravme teda procedúru nováHra
tlačidla t1:
Spustime procesy stlačením tohto tlačidla
a opäť si nechajme vypísať všetky idúce procesy
Vidíme, že hoci sú procesy rovnaké t.j.
[do
2] a [vp ?],
keď sme ich pomenovali, sú navzájom odlišné. Teraz môžeme pre každú korytnačku
zmeniť udalosť priĽavomDolu
a zastaviť práve jej 2 procesy:
Podobne pre k2. |
Upravme teda procedúru nováHra
tak, aby spustila toľko procesov, koľko je na stránke korytnačiek a vhodne
ich pomenovala:
viem nováHra
zmeňTvarMyši :mucholapka
odteraz všetky
nechTvar :mucha
každá
[(každých 60 [do 2]
slovo kto "h)
(každých 800
[vp ?] slovo kto "o)]
koniec
Vysvetlime si príkazy:
Pre k1 opravme
udalosť priĽavomDolu:
nechTvar :chytena zastav
slovo mojeMeno "h zastav slovo mojeMeno "o
Príkaz najprv zmení tvar korytnačke a potom zastaví oba procesy, ktoré boli pre ňu spustené – názvy procesov vytvorí opäť zložením jej mena a písmena "h a "o do jedného slova.
Teraz, keď nakopírujeme cez schránku korytnačku
k1
a vytvoríme na stránke ľubovoľný počet korytnačiek tlačidlo t1
pre ne spustí a pomenuje procesy a každá z nich bude zastavovať iba dva
svoje procesy, ktoré ju hýbali a otáčali.