|
| 1 | +--- |
| 2 | +title: Dodgeball |
| 3 | +level: Scratch 2 |
| 4 | +language: cs-CZ |
| 5 | +stylesheet: scratch |
| 6 | +embeds: "*.png" |
| 7 | +materials: ["Club Leader Resources/*","Project Resources/*"] |
| 8 | +... |
| 9 | + |
| 10 | +# Úvod { .intro } |
| 11 | + |
| 12 | +V tomto projektu se naučíš, jak vytvořit plošinovku, kde se musíš vyhýbat pohybujicím se míčům a dostat se až na konec levelu (úrovně). |
| 13 | + |
| 14 | +<div class="scratch-preview"> |
| 15 | + <iframe allowtransparency="true" width="485" height="402" src="http://scratch.mit.edu/projects/embed/39740618/?autostart=false" frameborder="0"></iframe> |
| 16 | + <img src="dodge-final.png"> |
| 17 | +</div> |
| 18 | + |
| 19 | +# Krok 1: Pohyb postavy { .activity } |
| 20 | + |
| 21 | +Nejdřív vytvoříme postavu která se může pohybovat doprava a doleva a která taky může šplhat po tyčích. |
| 22 | + |
| 23 | +## Postup { .check } |
| 24 | + |
| 25 | + |
| 26 | ++ Vytvoř nový projekt ve Scratchi a smaž kocoura tak, aby byl projekt prázdný. Webový scratch editor najdeš na <a href="http://jumpto.cc/scratch-new">jumpto.cc/scratch-new</a>. |
| 27 | + |
| 28 | ++ Pro tento projekt bys měl mít složku 'Project Resources', kde bude obrázek s pozadím, který použiješ. Přesvědč si že víš kde tato složka je, pokud ne, zeptej se vedoucího. |
| 29 | + |
| 30 | +  |
| 31 | + |
| 32 | ++ Přidej obrázek 'background.png' jako nové pozadí scény, nebo si nakresli vlastní! Pokud budeš kreslit vlastní úroveň, ujisti se ze tyče a podlahy mají jiné barvy, a že tam jsou dveře (nebo něco jiného) kam musíš se svou postavičkou dojít. Takhle nějak by měl tvůj projekt vypadat: |
| 33 | + |
| 34 | +  |
| 35 | + |
| 36 | ++ Přidej novou postavu, která bude "panáček". Lepší je vybrat si postavu s více kostýmy, aby se dalo udělat, že postava zdánlivě chodí. |
| 37 | + |
| 38 | +  |
| 39 | + |
| 40 | ++ K pohybování panáčkem budeme používat šipky. Když hráč zmáčkne pravou šipku, chceš, aby se tvoje postava otočila doprava, posunula se o několik kroků a přepnula se do dalšího kostýmu: |
| 41 | + |
| 42 | +```blocks |
| 43 | + po kliknutí na ⚑ |
| 44 | + opakuj dokola |
| 45 | + když <klávesa [šipka vpravo v] stisknuta?> tak |
| 46 | + natoč se směrem (90 v) |
| 47 | + posuň se o (3) kroků |
| 48 | + další kostým |
| 49 | + end |
| 50 | + end |
| 51 | +``` |
| 52 | ++ Vyzkoušej pohyb své postavy kliknutím na vlajku a pak podržením šipky doprava. Hýbe se panáček doprava? Vypadá to, jako že chodí? |
| 53 | + |
| 54 | +  |
| 55 | + |
| 56 | ++ Na pohyb postavy doleva, budeme potřebovat další `když` {.blockcontrol} blok uvnitř tvého cyklu `opakuj dokola` {.blockcontrol}, který to zařídí. Nezapomeň vyzkoušet svůj nový kód, aby ses ujistil, že funguje! Pokud se tvoje postava otočí vzhůru nohama ve chvíli, když jde doleva, přidej blok `nastav způsob otáčení` {.blockcontrol} nad blokem `opakuj dokola` {.blockcontrol}: |
| 57 | + |
| 58 | +```blocks |
| 59 | + po kliknutí na ⚑ |
| 60 | + nastav způsob otáčení na [jen vlevo-vpravo v] |
| 61 | + opakuj dokola |
| 62 | + když <klávesa [šipka vpravo v] stisknuta?> tak |
| 63 | + natoč se směrem (90 v) |
| 64 | + posuň se o (3) kroků |
| 65 | + další kostým |
| 66 | + end |
| 67 | + end |
| 68 | +``` |
| 69 | + |
| 70 | ++ Pro šplhání po tyči se panášek musí pohnout maličko nahoru, když je zmáčknuta šipka nahoru a postava se dokýká správné barvy. Přidej tento kód dovnitř bloku `opakuj dokola` {.blockcontrol}: |
| 71 | + |
| 72 | +```blocks |
| 73 | + když <<klávesa [šipka nahoru v] stisknuta?> a <dotýká se barvy [#FFFF00] ?>> tak |
| 74 | + změň y o (4) |
| 75 | + end |
| 76 | +``` |
| 77 | ++ Vyzkoušej to - můžeš vyšplhat po žlutých tyčích a dostat se na konec úrovně? |
| 78 | + |
| 79 | +  |
| 80 | + |
| 81 | +## Ulož svůj projekt { .save } |
| 82 | + |
| 83 | +## Výzva: Dokončení úrovně {.challenge} |
| 84 | +Dokážeš přidat kód ke tvé postavě, aby nečo řekla, `když` {.blockcontrol} se dostane ke hnědým dveřím? |
| 85 | + |
| 86 | + |
| 87 | + |
| 88 | +## Ulož svůj projekt { .save } |
| 89 | + |
| 90 | +# Krok 2: Gravitace a skákání { .activity } |
| 91 | + |
| 92 | +Uděláme pohyb postavy více realistický tím, že přidáme gravitaci a umožníme postavě skákat. |
| 93 | + |
| 94 | +## Postup { .check } |
| 95 | + |
| 96 | ++ Možná sis všiml že tvoje postava může chodit i mimo podlahy a zůstat ve vzduchu. Zkus vyjít stranou z podlahy a pozoruj co se stane. |
| 97 | + |
| 98 | +  |
| 99 | + |
| 100 | ++ Abychom to napravili, přidáme do hry gravitaci. Vytvoř novou proměnnou nazvanou `gravitace` {.blockdata}. Tuto proměnnou můžeš ze scény skrýt, pokud chceš. |
| 101 | + |
| 102 | +  |
| 103 | + |
| 104 | ++ Přidej následující nový blok kódu, který nastaví gravitaci na zápornou hodnotu, a pak použije tuto na změnu y-pozice tvé postavy. |
| 105 | + |
| 106 | +```blocks |
| 107 | + po kliknutí na ⚑ |
| 108 | + nastav [gravitace v] na [-4] |
| 109 | + opakuj dokola |
| 110 | + změň y o (gravitace) |
| 111 | + end |
| 112 | +``` |
| 113 | + |
| 114 | ++ Klikni na vlajku, a pak přetáhni svou postavu na vršek tvé scény. Co se stane? Funguje gravitace, jak jsi očekával(a)? |
| 115 | + |
| 116 | +  |
| 117 | + |
| 118 | ++ Gravitace by neměla hýbat s postavou skrz podlahu nebo tyč! Přidej blok `když` {.blockcontrol} do kódu, aby gravitace fungovala, jen pokud bude postava ve vzduchu. Kód pro gravitaci by měl vypadat asi takto: |
| 119 | + |
| 120 | +```blocks |
| 121 | + po kliknutí na ⚑ |
| 122 | + nastav [gravitace v] na [-4] |
| 123 | + opakuj dokola |
| 124 | + když <není <<dotýká se barvy [#0000FF] ?> nebo <dotýká se barvy [#FFFF00] ?>>> tak |
| 125 | + změň y o (gravitace) |
| 126 | + end |
| 127 | + end |
| 128 | +``` |
| 129 | + |
| 130 | ++ Vyzkoušej gravitaci znovu. Zastaví se pád postavy, když stojí na podlaze nebo se drží tyče? Vyzkoušej spadnout z kraje hodní podlahy a dopadnout na dolní, funguje to? |
| 131 | + |
| 132 | +  |
| 133 | + |
| 134 | ++ Pojďme taky zařídit, aby postava skočila když hráč zmáčkne mezerník. Velmi jednoduchý způsob, jak to zařídit je pohnout postavou několikrát nahoru pomocí takovéhoto kódu: |
| 135 | + |
| 136 | +```blocks |
| 137 | + po stisku klávesy [mezerník v] |
| 138 | + opakuj (10) krát |
| 139 | + změň y o (4) |
| 140 | + end |
| 141 | +``` |
| 142 | + |
| 143 | + Protože gravitace stále tlačí postavu dolů o 4 pixely, musíš zvolit číslo větší než 4 ve bloku `změň y o (4)` {.blockmotion}. Změň toto číslo tak, aby jsi byl spokojený s tím, jak tvoje postava skáče. |
| 144 | + |
| 145 | ++ Až budeš tento kód zkoušet, všimni si, že pohyb postavy není moc plynulý. Aby bylo skákání plynulejší, budeš muset hýbat postavou o čím dále menší počet pixelů, dokud se její pohyb nahoru zastaví. |
| 146 | + |
| 147 | ++ Na to vytvoříme další proměnnou `výška skoku` {.blockdata}. Můžeš tuto proměnnou opět skrýt, pokud chceš. |
| 148 | + |
| 149 | ++ Smaž kód skákání, který jsme přidali k postavě, a nahraď tímto kódem: |
| 150 | + |
| 151 | +```blocks |
| 152 | + po stisku klávesy [mezerník v] |
| 153 | + nastav [výška skoku v] na [8] |
| 154 | + opakuj dokud nenastane <(výška skoku) = [0]> |
| 155 | + změň y o (výška skoku) |
| 156 | + změň [výška skoku v] o (-0.5) |
| 157 | + end |
| 158 | +``` |
| 159 | + |
| 160 | + Tento kód hýbe postavou o 8 pixelů, poté o 7,5 pixelů, poté 7 pixelů a tak dále, dokud postava neskončí skok. Toto pomůže aby byly skoky o hodně plynulejší. |
| 161 | + |
| 162 | ++ Změň počáteční hodnotu tvé proměnné `výška skoku` {.blockdata} a vyzkoušej program tak, aby jsi byl spokojen s výškou skoku tvé postavy. |
| 163 | + |
| 164 | +## Ulož svůj projekt { .save } |
| 165 | + |
| 166 | +## Výzva: vylepšené skákání {.challenge} |
| 167 | +Tvoje postava může skočit kdykoliv je zmáčknutý mezerník, i když je postavička ve vzduchu. Vyzkoušej to podržením mezerníku. Dokážeš to opravit tak, aby mohla postava skočit pouze `když` {.blockcontrol} se dotýká modré podlahy? |
| 168 | + |
| 169 | +## Ulož svůj projekt { .save } |
| 170 | + |
| 171 | +# Krok 3: Uhýbání míčům { .activity .new-page} |
| 172 | + |
| 173 | +Teď, když už tvoje postava chodí, přidáme nějaké míče, kterým se bude muset tvoje postava vyhnout. |
| 174 | + |
| 175 | +## Postup { .check } |
| 176 | + |
| 177 | ++ Vytvoř novou "postavu" míče. Vyber si jakýkoliv typ míče, který se ti bude líbit. |
| 178 | + |
| 179 | +  |
| 180 | + |
| 181 | ++ Změň velikost míče tak, aby přes něj mohla tvoje postava skočit. Zkus míč přeskočit, abys vyzkoušel(a), že to jde. |
| 182 | + |
| 183 | +  |
| 184 | + |
| 185 | ++ Přidej následující kód k míči: |
| 186 | + |
| 187 | +  |
| 188 | + |
| 189 | + Tento kód vytvoří nový klon míče každé 3 vteřiny. Každý nový klon se pohybuje po vrchním podlaží. |
| 190 | + |
| 191 | ++ Klikni na vlajku abys to vyzkoušel. |
| 192 | + |
| 193 | +  |
| 194 | + |
| 195 | ++ Přidej další kód do "postavy" míče, aby se mohl pohybovat přes všechny 3 podlaží. |
| 196 | + |
| 197 | +  |
| 198 | + |
| 199 | ++ Nakonec budeš také potřebovat kód pro případ, že byla tvoje postava zasažena míčem. K "postavě" míče přidej tento kód: |
| 200 | + |
| 201 | +```blocks |
| 202 | + když startuji jako klon |
| 203 | + opakuj dokola |
| 204 | + když <dotýká se [Pico walking v] ?> tak |
| 205 | + rozešli všem [zásah v] |
| 206 | + end |
| 207 | + end |
| 208 | +``` |
| 209 | + |
| 210 | ++ Taky budeš potřebovat přidat kód ke tvé postavě panáčka, aby se vrátila na začátek, když je zasažena: |
| 211 | + |
| 212 | +```blocks |
| 213 | + po obdržení zprávy [zásah v] |
| 214 | + natoč se směrem (90 v) |
| 215 | + skoč na pozici x: (-210) y: (-120) |
| 216 | +``` |
| 217 | + |
| 218 | ++ Vyzkoušej panáčka a ujisti se, že se vrátí na začátek, když je zasažena míčem. |
| 219 | + |
| 220 | +## Ulož svůj projekt { .save } |
| 221 | + |
| 222 | +## Výzva: náhodné míče {.challenge} |
| 223 | +Všechny míče, kterým se musí postava vyhnout, vypadají stejně a objevují se pravidelně každé 3 sekundy. Dokážeš to vylepšit tak, aby: |
| 224 | + |
| 225 | ++ nevypadaly všechny stejně? |
| 226 | ++ objevovaly se po uplynutí různé doby? |
| 227 | ++ měli náhodné velikosti? |
| 228 | + |
| 229 | + |
| 230 | + |
| 231 | +## Ulož svůj projekt { .save } |
| 232 | + |
| 233 | +# Krok 4: Lasery! { .activity .new-page} |
| 234 | + |
| 235 | +Udělejme hru trochu těžší tím, že přidáme lasery! |
| 236 | + |
| 237 | +## Postup { .check } |
| 238 | + |
| 239 | ++ Přidej do hry novou "postavu", která se bude jmenovat 'Laser'. Měl by mít dva kostýmy, které nazveme 'zapnuto' a 'vypnuto'. |
| 240 | + |
| 241 | +  |
| 242 | + |
| 243 | ++ Umísti svůj nový laser mezi 2 podlahy, kamkoliv se ti zlíbí. |
| 244 | + |
| 245 | +  |
| 246 | + |
| 247 | ++ Přidej kód k laseru, aby se mu přepínaly kostýmy. |
| 248 | + |
| 249 | +```blocks |
| 250 | + po kliknutí na ⚑ |
| 251 | + opakuj dokola |
| 252 | + změň kostým na [zapnuto v] |
| 253 | + čekej (2) sekund |
| 254 | + změň kostým na [vypnuto v] |
| 255 | + čekej (2) sekund |
| 256 | + end |
| 257 | +``` |
| 258 | + |
| 259 | + Pokud chceš, můžeš použít `čekej` {.blockcontrol} `náhodné číslo` {.blockoperators} sekund mezi výměnou kostýmu. |
| 260 | + |
| 261 | ++ A na konec přidej k laseru kód pro odeslání zprávy 'zasaženo', pokud se laser dotkne postavy. Tento kód bude stejný, jako kód který jsi přidal k míči. |
| 262 | + |
| 263 | + K panáčkovi nemusíš přidat už nic - on už ví, co má dělat, pokud je zasažen! |
| 264 | + |
| 265 | ++ Vyzkoušej svou hru aby ses ujistil, že se dokážeš dostat přes laser. Změň číslo u `čekej` ve kódu, pokud je to moc jednoduché nebo naopak moc obtižné. |
| 266 | + |
| 267 | +## Výzva: více překážek {.challenge} |
| 268 | +Pokud si stále myslíš, že je hra příliš jednoduchá, můžeš do úrovně přidat další překážky. Můžeš přidat cokoliv budeš chtít a tady je několik nápadů: |
| 269 | + |
| 270 | ++ Létající smrtící motýl; |
| 271 | ++ Podlahy které se objevují a mizí; |
| 272 | ++ Padající tenisové míčky kterým musíš uhnout. |
| 273 | + |
| 274 | + |
| 275 | + |
| 276 | +Můžes dokonce udělat více než jedno pozadí a přesunout se do další úrovně, když postava dojde k hnědým dveřím: |
| 277 | + |
| 278 | +```blocks |
| 279 | + když <dotýká se barvy [#714300] ?> tak |
| 280 | + změň pozadí na [next backdrop v] |
| 281 | + skoč na pozici x: (-210) y: (-120) |
| 282 | + čekej (1) sekund |
| 283 | + end |
| 284 | +``` |
| 285 | + |
| 286 | +## Ulož svůj projekt { .save } |
| 287 | + |
| 288 | +## Výzva: vylepšená gravitace {.challenge} |
| 289 | + |
| 290 | +Tvoje hra má ještě jednu malou chybičku: gravitace nemá vliv na postavu, pokud se _jakákoliv_ její část dotýká modré podlahy - dokonce i hlava! Můžeš toto vyzkoušet když vyšplháš skoro až nahoru po tyčí a pak pohybem doleva. |
| 291 | + |
| 292 | + |
| 293 | + |
| 294 | +Uměl bys tuto chybu opravit? Aby to bylo možné, musíš dát postavě jinak barevné kalhoty (ve _všech_ kostýmech)... |
| 295 | + |
| 296 | + |
| 297 | + |
| 298 | +... a poté nahradit kód: |
| 299 | + |
| 300 | +```blocks |
| 301 | + <dotýká se barvy [#0000FF] ?> |
| 302 | +``` |
| 303 | + |
| 304 | +kódem: |
| 305 | + |
| 306 | +```blocks |
| 307 | + <barva [#00FF00] se dotýká barvy [#0000FF] ?> |
| 308 | +``` |
| 309 | + |
| 310 | +Nezapomeň svojí opravu otestovat, abys si byl jist, že jsi chybu opravil! |
| 311 | + |
| 312 | +## Ulož svůj projekt { .save } |
| 313 | + |
| 314 | +## Výzva: více životů {.challenge} |
| 315 | +Uměl bys dát hráči 3 `životy` {.blockdata} namísto pouhého odesíání na začátek hry? Takhle nějak by hra mohla fungovat: |
| 316 | + |
| 317 | ++ Na začátku má hráč 3 životy; |
| 318 | ++ Po každém zásahu se odečte jeden život, a poté se vrátí postava na začátek; |
| 319 | ++ Pokud již nejsou k dispozici žádné další životy, hra končí. |
| 320 | + |
| 321 | +## Ulož svůj projekt { .save } |
0 commit comments