Pri skúmaní sveta korytnačky sme sa už dozvedeli mnoho užitočného. Teraz spoločne naprogramujme hru Putovanie vesmírom. O akú hru pôjde? Na začiatku hry sa na oblohe objaví kopa jasnožltých hviezd. Úlohou hráča je pozbierať všetky hviezdičky. Na oblohe sa však z času na čas objavujú čierne diery ak hráč prejde ponad čiernu dieru, diera ho pohltí a hra končí. V hre použijeme známe techniky: zmenu tvaru korytnačky na obrázok a návod na kreslenie, generovanie korytnačiek pomocou príkazu nová, hlavná postavička vesmírny cestovateľ bude reagovať na farbu pozadia, postavičku budeme ovládať tlačidlami, postavička si bude uchovávať informáciu o vlastnej rýchlosti, pomocou posúvača môžeme meniť nastavenia hry. Ďalej si ukážeme ako korytnačka môže reagovať na stretnutie s inou postavičkou, ako počítať body. V niektorých úlohách si môžete zvoliť jednoduchšiu alebo zložitejšiu verziu hry. Obe verzie sú rovnako funkčné, líšia sa však mierou použitých prvkov programovania. Môžete začať s jednoduchšou verziou a neskôr hru upraviť na zložitejšiu verziu. Alebo môžete v niektorých úlohách naprogramovať zložitejší variant a v iných jednoduchší. Takže poďho programovať:-) Najskôr si pripravíme prostredie hry. Stránke nastavíme tmavomodré pozadie a pustíme sa do vytvárania hviezdičiek. Úloha 1 Definujte príkaz mojahviezda zmení tvar korytnačky pomocou návodu na kreslenie na štvorcípu hviezdičku. Hviezdička má náhodnú farbu z odtieňov žltej žltá4, žltá, žltá7, žltá9. jednoduchá verzia: Príkaz mojahviezda nastaví tvar korytnačky na štvorcípu hviezdičku s cípmi veľkosti 30 pokročilá verzia: Upravte príkaz mojahviezda tak, aby sme pri kreslení cípu použili vlastnú premennú korytnačky cíp. Úloha 2 Definujte príkaz rozsievaj na náhodných miestach na stránke vytvorí v jednoduchej verzii projektu 50 korytnačiek, v pokročilej verzii sa počet hviezdičiek dá voliť pomocou posúvača. Každá korytnačka má vypnuté pero. V pokročilej verzii má aj vlastnú premennú cíp, v ktorej si pamätá veľkosť svojho cípu. Veľkosť cípu je náhodná hodnota od 10 po 30. Hneď po vytvorení zmení svoj tvar na hviezdičku pomocou príkazu mojahviezda. Úloha 3 Naučte korytnačku príkaz machule s parametrom :početd. Korytnačka nakreslí na náhodných miestach na stránke :početd čiernych dier čiernych bodov veľkosti 20..25. Poznámka: čierne diery teda nie sú korytnačky, ale iba obyčajná kresba na stránke. Dobrá rada: nepomenúvajte premennú udávajúcu počet počet, počítadlo, poč tieto slová už Imagine pozná a používa. VECIT 2006 Tento materiál vznikol v rámci projektu, ktorý je spolufinancovaný Európskou úniou. 1/15
AKCIA: NÁHODNÁ HODNOTA INAK Okrem príkazu?prvok existuje ďalší spôsob, ako vniesť do programu náhodnosť. Príkaz náhodne koľko vráti náhodné číslo od 0 po koľko 1. Teda náhodne 4 vráti jedno z čísel 0, 1, 2 alebo 3; náhodne 10 jedno z čísel 0..9. Pripočítaním vhodnej konštanty môžeme hranice intervalu náhodných čísel posunúť napríklad príkaz 5 + náhodne 10 vráti čísla od 5 po 14. Príklad 1 Spoločne definujeme príkaz štart vytvorí dve korytnačky korytnačku raketka a korytnačku tvor. Obe korytnačky majú vypnuté pero. Ako tvar korytnačky raketka použijeme obrázok potvorka3.lgf. Stiahnite si obrázok potvorka3.lgf alebo použite obrázok rakety z knižnice obrázkov Imagine. Všimnite si, že v príkaze start korytnačky pokrstíme pomenujeme ich raketka a tvor. viem štart zrušobjekt všetky nová "korytnačka meno raketka pero ph farbapera biela tvar potvorka3 písmo Verdana 22 400 0 0 0 238 Korytnačka tvor je pomocná vytvára čierne diery. Upravíme príkaz štart tak, aby bol tvor neviditeľný. nová "korytnačka meno tvor pero ph vidno nie Projekt uložte pod názvom mojeputovanie. Úloha 4 Doplňte príkaz štart korytnačka tvor rozseje hviezdy a nakreslí čierne diery. Počet čiernych dier zvoľte podľa uváženia. Doposiaľ sme nevyriešili ovládanie hry. Hlavná postavička projektu korytnačka raketka sa bude neustále pohybovať dopredu na pohyb postavičky použijeme motorček. Ak chceme zmeniť smer postavičky, použijeme tlačidlá: Úloha 5 Vložte do projektu mojeputovanie 2 tlačidlá na ovládanie postavičky raketka jedným z tlačidiel sa raketka otáča o 30 vpravo, druhým o 30 vľavo. Úloha 6 Definujte príkaz spustilet spustenie viacerých motorčekov: všetky korytnačky okrem raketky sa každých 200 ms otočia o 1 stupeň, korytnačka tvor vytvorí na náhodnej pozícii vo vesmíre každých 5 sekúnd (5 000 ms) novú čiernu dieru, raketka sa každých 100 ms pohne vykoná príkaz krok. Poznámka: nezabudnite, že krok má vykonávať iba raketka. Pekne ju oslovte každých 100 pre "raketka krok Všetky motorčeky pomenujte rovnako let. Bude sa nám to neskôr hodiť:). VECIT 2006 Tento materiál vznikol v rámci projektu, ktorý je spolufinancovaný Európskou úniou. 2/15
Ako otáčať všetky korytnačky okrem raketky? Pokiaľ nemeníme poradie korytnačiek, bude raketka ako najstaršia vytvorená korytnačka prvá v zozname všetky. Otáčať budeme teda všetky korytnačky okrem prvej - v jazyku Logo to zapíšeme ako bezprvého všetky. Vyskúšajte? zobraz všetky? zobraz bezprvého všetky? pre bezprvého všetky vpravo 30 Príkaz krok jednoducho hýbe raketkou: dopredu 5 Úloha 7 Upravte príkaz krok pokiaľ raketka stúpi na čiernu dieru, diera ju zhltne. Hra vypíše Smola a skončí. Poznámka: stačí, ak postavičku skryjete. Alebo zrušíte (pomocou zrusobjekt "raketka) Príklad 2 Príkaz krok upravíme pokiaľ raketka stúpi na hviezdu, otočí sa náhodným smerom. Neskôr si ukážeme, ako môže zobrať hviezdu. Ako overíme, či sa raketka nestretla s nejakou inou korytnačkou? Použijeme test na prekrývanie sa s inou korytnačkou: vp? dopredu 5 Pomocou prekrýva? zistíme, či tvar raketky neprekrýva inú korytnačku. Napríklad ak prekrýva? Mimivp 180 korytnačka sa otočí, ak sa stretla s korytnačkou Mimi, ak prekrýva? Pepek Mimi Lolovp 180 korytnačka sa otočí, ak sa stretla s niektorou z korytnačiek Pepek, Mimi, Lolo vp? korytnačka sa otočí, ak sa stretla s niektorou z korytnačiek na stránke Krok znova upravíme tak, aby hviezdy pri stretnutí s raketkou zmizli. Raketka vie totiž zistiť, ktoré korytnačky ju prekrývajú mená týchto korytnačiek má Imagine uložené v zozname prekrývajúma. VECIT 2006 Tento materiál vznikol v rámci projektu, ktorý je spolufinancovaný Európskou úniou. 3/15
Do projektu vložte tajné tlačidlo štart na spustenie hry. Poznámka: všimli ste si, že raketka nikdy nezruší tvora vytvárajúceho čierne diery? Príkaz prekrývajúma sa totiž týka iba viditeľných korytnačiek. Podobne príkaz prekrýva? vráti nie, pokiaľ sa raketka zrazí s neviditeľným tvorom. Čo je ľahšie zbierať hviezdy alebo sa zachraňovať pred pádom do čiernej diery? :) Zahrajte sa... Mliečna dráha (2). Nápady a podnety Naše putovanie po mliečnej dráhe sa zatiaľ nikdy šťastne neskončí hra končí, pokiaľ nás zhltne čierna diera :-(. A čo ak pozbierame všetky hviezdy? Príklad 3 počítame hviezdy Korytnačke raketka pridáme počítadlo hviezd, ktoré nazbierala. Upravme príkaz štart korytnačke raketka doplníme premennú body. viem štart zrušobjekt všetky nová "korytnačka meno raketka body 0 Úloha 8 Do projektu mojeputovanie vložte nový objekt Text. Budeme ho používať na zobrazovanie bodov, ktoré získa raketka pri zbieraní hviezdičiek. Pri každom zrušení hviezdičky sa počet bodov pre raketku zvýši o 1. Príkaz krok upravíme: nechbody body + 1 Teraz pridáme prepojenie medzi objektom text1 a korytnačkou raketka. Objekt text1 bude zobrazovať počet bodov, ktoré sme získali: nechbody body + 1 text1'nechhodnota body VECIT 2006 Tento materiál vznikol v rámci projektu, ktorý je spolufinancovaný Európskou úniou. 4/15
Programovanie v Imagine? 7 užitočných trikov Príklad 4 dobrý začiatok Pokiaľ počas hry stlačíme tlačidlo štart, vytvoria sa nové a nové hviezdy. Ba čo viac, rýchlosť raketky sa bude zväčšovať spúšťame nové motorčeky. Upravme preto príkaz štart zastavme motorček let a zrušme všetky korytnačky. Keďže v príkaze štart vytvárame korytnačky raketka a tvor a nové hviezdy vytvárame pomocou príkazu rozsievaj, nič zlé sa nestane. Príklad 5 šťastný Ako zistíme, či sme pozbierali všetky hviezdy? Použijeme zoznam mien všetkých korytnačiek: všetky. Po zrušení hviezdičky jej meno zo zoznamu vypadne zoznam všetky sa skráti. Aké mená ostanú po zmazaní všetkých hviezdičiek v zozname všetky? Zo všetkých korytnačiek ostanú iba dve raketka a tvor. Takže sa pri každom vykonaní príkazu krok opýtame, či neostali iba tieto dve korytnačky. Pokiaľ áno, vyhrali sme! ak všetky = raketka tvor text "Super zastav "let Poznámka: za obrázok potvorky ďakujeme autorom učebnice 1. zošit z programovania. Tvorivá informatika. SPN 2005 VECIT 2005 Tento materiál vznikol v rámci projektu, ktorý je spolufinancovaný Európskou úniou. 5/14