Scratch It!

Jednoduché grafické programy vytvárané pomocou populárneho nástroja Scratch

O čom je lab

Na tomto krátkom domácom cvičení budete pracovať s programom Scratch, ktorý je populárny na mnohých iných univerzitách v rámci začiatočníckych kurzov programovania. Obidva programy z tohto cvičenia sú riešené vo videách, ktoré sa nachádzajú nižšie. Viete ich použiť namiesto riešenia prvých dvoch úloh Monkey, Bananas and Broccoli, a Hungry Dino. Cvičenie by Vás malo pripraviť na zadanie Problem Set 4.

Ciele

  • Zoznámiť sa s nástrojom Scratch a naučiť sa v ňom vytvárať jednoduché grafické programy.
  • Rutinne používať vetvenie programu a cykly.
  • Osvojiť si prácu s premennými.
  • Pripraviť sa na vypracovanie Problem Set-u 4, prvého dobrovoľného zadania.

Postup

Krok 1: Monkey, Bananas and Broccoli

V tomto kroku vytvoríte program, v ktorom bude vystupovať opica, banány a brokolica. Úlohou opice je chytať banány a zároveň vyhýbať sa brokolici.

Úloha 1.1

Postupujte podľa videa alebo úloh uvedených nižšie.

Úloha 1.2

Vytvorte nový projekt pre Scratch na stránke scratch.mit.edu > Create.

V popredí uvidíte mačku, tzv. sprite a na pozadí uvidíte bielu plochu, tzv. stage. Sprite predstavuje objekt, ktorý bude v programe vykonávať nejaké operácie. Stage predstavuje pozadie, na ktorom je vykonávaný program.

Úloha 1.3

Pridajte do programu nový sprite - banány pomocou knižnice preddefinovaných objektov (Choose sprite from library).

Úloha 1.4

Podobným spôsobom pridajte opicu.

Úloha 1.5

Kým banány aj opicu nájdete v knižnici preddefinovaných objektov, brokolicu tam budete hľadať márne. Stiahnite si preto tento obrázok alebo vyhľadajte ľubovoľný iný obrázok brokolice. Pridajte do programu brokolicu načítaním stiahnutého obrázka (Upload sprite from file).

Poznámka

Je možné, že brokolica je oproti iným objektom príliš veľká. Označte brokolicu, v hornom menu zvoľte Costumes a zmenšite brokolicu tak, aby bola rovnaká resp. trochu menšia ako ostatné objekty. Potom ju presuňte do stredu plátna.

Úloha 1.6

Vymažte sprite s mačkou pomocou Shift+Click > Delete.
Výsledok úlohy po pridaní opice, banánu a brokolice
Obr. 1: Výsledok úlohy po pridaní opice, banánu a brokolice

Úloha 1.7

Hlavnou postavou vo Vašej hre bude opica. Aby ste naprogramovali jej správanie, definujte tzv. script. Pre spustenie skriptu pridajte zelenú vlajku z menu Scripts > Events. When clicked

Úloha 1.8

Úlohou opice je nasledovať myšku. Pridajte preto Go to mouse-pointer z menu Scripts > Motions. Go to

Úloha 1.9

Aby opica nasledovala myšku počas celej hry a nie iba raz, pridajte zvolený pohyb do nekonečného cyklu pomocou Scripts > Control > Forever. Forever

Úloha 1.10

Otestujte Vami pridanú funkcionalitu spustením programu pomocou zelenej vlajky. Zelená vlajka

Poznámka

Pre zastavenie programu stlačte červenú stopku. Červená stopka

Úloha 1.11

Do skriptu pre opicu pridajte podmienku, podľa ktorej ak sa opica dotkne banánov, na obrazovku sa po dobu 0.5 sec vypíše text: You won! a hra sa ukončí.

Použite nasledujúce riadiace prvky:

  • Scripts > Control > if, then
  • Scripts > Sensing > touching
  • Scripts > Looks > say ... for ... secs
  • Scripts > Control > stop all

Úloha 1.12

Podobným spôsobom pridajte pre opicu podmienku, podľa ktorej ak sa opica dotkne brokolice, na obrazovku sa po dobu 0.5 sec vypíše text: You lost! a hra sa ukončí.
Skript pre opicu
Obr. 2: Skript pre opicu

Úloha 1.13

Otestujte Vami pridanú funkcionalitu.

Úloha 1.14

Pridajte funkcionalitu pre brokolicu tak, aby sa náhodne pohybovala a otáčala po obrazovke počas celej hry.

Použite nasledujúce riadiace prvky:

  • Scripts > Events > when clicked
  • Scripts > Control > forever
  • Scripts > Motion > turn ... degrees
  • Scripts > Operators > pick random -15 to 15
  • Scripts > Motion > move 4 steps
  • Scripts > Motion > if on edge, bounce
Skript pre brokolicu
Obr. 3: Skript pre brokolicu

Úloha 1.15

Otestujte Vami pridanú funkcionalitu spustením programu pomocou zelenej vlajky.

Poznámka

V prípade, že sa brokolica pohybuje chaoticky, overte v Costumes, či sa obrázok brokolice nachádza v strede plátna (otáčanie prebieha podľa stredovej osi).

Úloha 1.16

Pridajte nasledujúcu funkcionalitu pre banány: Ak je opica blízko, vyhýbajú sa jej. Inak sa pohybujú náhodne po obrazovke.

Použite nasledujúce riadiace prvky:

  • Scripts > Events > when clicked
  • Scripts > Control > forever
  • Scripts > Control > if, then, else
  • Scripts > Operators > ... < 50
  • Scripts > Motion > point towards Monkey
  • Scripts > Motion > move -10 steps
  • Scripts > Motion > if on edge, bounce

Poznámka

Pre skopírovanie náhodných pohybov brokolice presuňte skupinu krokov do menu Sprites (vľavo dole) na banány.
Skript pre banány
Obr. 4: Skript pre banány

Úloha 1.17

Otestujte Vašu hru.

Krok 2: Hungry Dino

V tomto programe bude dinosaurus naháňať chrobáka.

Úloha 2.1

Najskôr si vyskúšajte funkcionalitu projektu scratch.mit.edu/projects/12148550.

Poznámka

Dinosaura je možné ovládať pomocou šípok Left, Up, Right.

Úloha 2.2

Pozrite si obsah pripraveného projektu pomocou See inside.

Poznámka

Je vhodné, aby ste na tomto mieste prešli všetky skripty, ktoré má chrobák aj dinusaurus.

Úloha 2.3

Postupujte podľa videa alebo úloh uvedených nižšie.

Úloha 2.4

Do skriptu pre pohyb dinosaura pridajte podmienku, na základe ktorej dinosaurus zatvorí a otvorí ústa pri stlačení medzery (SPACEBAR). Vaše riešenie overte.

Použiť môžete nasledujúce riadiace prvky:

  • Control > if, then
  • Sensing > key space pressed?
  • Looks > switch costume to dino-chomp
  • Control > wait 1 secs
  • Looks > switch costume to dino-hungry
Skript pre dinosaura - ústa
Obr. 5: Skript pre dinosaura - ústa

Úloha 2.5

Upravte skript pre chrobáka tak, aby sa pohyboval rýchlejšie, až po koniec obrazovky. Vaše riešenie overte.

Použiť môžete nasledujúce riadiace prvky:

  • Control > repeat until
  • Sensing > touching edge
  • Motion > move 50 steps

Úloha 2.6

Upravte skript pre chrobáka tak, aby postupne preletel cez obrazovku. Vaše riešenie overte.

Použiť môžete nasledujúce riadiace prvky:

  • Motion > glide 1 secs to x: y:
  • Sensing > x position of bug
  • Operators > x position of bug + 70
  • Sensing > y position of bug
Skript pre chrobáka - prelet
Obr. 6: Skript pre chrobáka - prelet

Úloha 2.7

Upravte skript pre dinosaura tak, aby hneď po stlačení medzerníka (SPACEBAR) vyslal do programu tzv. broadcast s novým názvom chomp. Upravte aj skript pre chrobáka tak, aby po prijatí chomp zmizol a po 1 sekunde sa objavil nový chrobák. Vaše riešenie overte.

Použiť môžete nasledujúce riadiace prvky:

  • Events > broadcast chomp
  • Events > when I receive chomp
  • Control > if, then
  • Sensing > touching Dino
  • Looks > hide
  • Control > wait 1 secs
  • Events > broadcast new bug1
Skript pre dinosaura - chomp
Obr. 7: Skript pre dinosaura - chomp
Skript pre chrobáka - chomp
Obr. 8: Skript pre chrobáka - chomp

Úloha 2.8

V rámci menu Scripts > Data pridajte do programu novú premennú s názvom score.

Úloha 2.9

Upravte skript pre chrobáka tak, aby sa premenná score zvýšila o 1 po prijatí chomp. Vaše riešenie overte.

Použiť môžete nasledujúci riadiaci prvok:

  • Data > change score by 1
Skript pre zmenu skóre
Obr. 9: Skript pre zmenu skóre

Úloha 2.10

Upravte program tak, aby sa po zastavení a opätovnom pustení hry znulovalo skóre. Vaše riešenie overte.

Použiť môžete nasledujúci riadiaci prvok:

  • Data > set score to 0

Poznámka

Je potrebné upraviť skript pre celú hru, t.j. pre Stage.
Skript pre znulovanie skóre
Obr. 10: Skript pre znulovanie skóre

Krok 3: Hungry Dino 2

Vyskúšajte si funkcionalitu projektu scratch.mit.edu/projects/12148585 a upravte Váš program Hungry Dino tak, aby mal podobnú funkcionalitu.

Krok 4: Space Invaders

V tomto programe vytvoríte strieľačku podľa predlohy Space Invaders.

Úloha 4.1

Pridajte novú postavu (sprite): Raketa.

Po pridaní rakety bude potrebné:

  • Zmenšiť raketu, nastaviť stred
  • Pridať ovládanie doľava a doprava
  • Obmedziť pohyb, aby nezachádzala za okraj
Skript pre raketu
Obr. 11: Skript pre raketu
Postavenie rakety
Obr. 12: Postavenie rakety

Úloha 4.2

Pridajte novú postavu (sprite): Strela.

Po pridaní strely (Ball) bude potrebné:

  • Zmenšiť na 5x5 (prípadne zmeniť farbu), nastaviť stred a skryť
  • Vytvoriť ako klon
  • Pridať zvukový efekt, posunúť y (vyššie)
Skript pre strelu
Obr. 13: Skript pre strelu
Ako skryť strelu
Obr. 14: Ako skryť strelu

Úloha 4.3

Upravte skript rakety tak, aby sa po stlačení medzerníka vytvoril nový klon strely.
Skript pre raketu - nový klon strely
Obr. 15: Skript pre raketu - nový klon strely

Úloha 4.4

Pridajte novú postavu (sprite): Ufo.

Po pridaní ufa bude potrebné:

  • Prispôsobiť veľkosť (cca 15x15), nastaviť stred a skryť
  • Pridať klonovanie na náhodnú súradnicu x, y = 180 a ukázať
  • Pridať premennú gameover
  • Zmazať klon, ak ho zasiahne strela

Poznámka

Môžete si stiahnuť tento obrázok ufa.
Skript pre ufo
Obr. 16: Skript pre ufo

Úloha 4.5

Pre premennú gameover nastavte ukončenie hry, ak hráč (Spaceship) prehral.
Skript pre gameover
Obr. 17: Skript pre gameover

Úloha 4.6

Pridajte premennú score a time_to_win, nastavte časovač a víťaznú podmienku pre hráča (Spaceship).
Skript pre výhru
Obr. 18: Skript pre výhru

Úloha 4.7

Inicializujte premenné a nastavte pozadie scény (stage).

Po pridaní pozadia scény bude potrebné:

  • Inicializovať premenné a vynulovať časovač
  • Odoslať všetkým správu
  • Po odoslaní správy posielať klony ufa
Skript pre pozadie - poslanie správy
Obr. 19: Skript pre pozadie - poslanie správy
Skript pre ufo - spracovanie správy
Obr. 20: Skript pre ufo - spracovanie správy
Pozadie
Obr. 21: Pozadie

Poznámka

Môžete si stiahnuť tento obrázok vesmíru.

Úloha 4.8

Ak si teraz hru pustíte, stále v nej nájdete nedokonalosti. Opravte hru tak, aby ju bolo možné hrať.

Bude potrebné:

  • Znulovať časovač na začiatku hry (pre Spaceship)
  • Strela zmizne, ak zasiahne ufo
  • Ufo sa objavuje nielen kým hráč neprehral, ale aj kým beží časomier
Výsledný skript pre raketu
Obr. 22: Výsledný skript pre raketu
Výsledný skript pre strelu
Obr. 23: Výsledný skript pre strelu
Výsledný skript pre ufo
Obr. 24: Výsledný skript pre ufo

Krok 5: Problem Set 4: Scratch

Teraz by ste už mali byť pripravení na vypracovanie dobrovoľného zadania Problem Set 4.

Doplňujúce zdroje

  1. Scratch Wiki
  2. Scratch Help Page
  3. Scratch 2 Offline Editor
  4. Pikatchu
  5. Ivy's Hardest Game
  6. Space Invaders