Materiaalit on lisensoitu Creative Commons BY-NC-SA-lisenssillä, eli materiaalin levittäminen ja muokkaaminen on sallittu, kunhan tekijöiden nimet säilyvät mukana ja jatkoversiot julkaistaan samalla lisenssillä. Kaupallinen käyttö kielletty.

Alkuperäiset tekijät (2015): Aino Haavisto ja Virpi Sumu


Takaisin: Kevät 2015

Sammakkopeli

Pelin toiminta Sammakon täytyy päästä tien yli. Tiellä on monta kaistaa, ja autot liikkuvat tiellä eri suuntiin. Jos sammakko jää auton alle, peli loppuu. Pelin voittaa selviytymällä tien yli, mutta sammakon täytyy hyppyjen välillä aina levätä, eli ylitys ei ole helppoa.
Vaikeustaso Peli sopii myös aivan aloittelijoille, mutta ei ole ehkä ihan paras ensimmäinen peli aloittelevalle ohjelmoijalle.
Oppimistavoitteita - Tutustutaan koordinaatistoihin ja suuntiin.
- Opitaan luomaan hahmoja, jotka liikkuvat nuolinäppäimillä sekä itsekseen.
- Opitaan luomaan eri hahmojen välisiä vuorovaikutuksia ja jakamaan ohjelman tehtäviä oikeille hahmoille.
- Opitaan silmukoiden käyttöä ja ehtolauseita.
Toimiva versio Sammakkopeli mallina Scratchissa
Variaatioita toteutuksessa Peliä voi monimutkaistaa antamalla eri autoille eri nopeuksia tai ominaisuuksia

Kuvia mallipelistä:

Työvaiheet:

Väriselite:

Oppimistavoite
Tarkennus tekotapaan
  1. Piirtäminen
    1. Piirrä tietä ylittävä hahmo.
    2. Hahmon pitää olla aika pieni, jotta kaistoja mahtuu monta pelialueelle.
    3. Piirrä tausta.
    4. Autokaistojen tulisi olla hieman hahmoa korkeampia ja mahdollisimman samanlevyisiä, jotta hyppiminen onnistuu.
  2. Sammakko liikkeelle
    Opitaan toteuttamaan nuolinäppäimillä ohjattava hahmo. Tutustutaan koordinaatistoon ja suuntiin.
    1. Hyppiminen ylös ja alas
      1. Ikuisesti-silmukka
      2. Kuunnellaan näppäinten painalluksia silmukan sisällä (ei siis tehdä tätä ruskeilla näppäinkuuntelupalikoilla, koska ne ovat jäykempiä käyttää).
      3. Hypyn pituus
      4. Katso, mikä on oman pelisi kaistojen leveys, ja muuta y:n arvoa sen verran.
      5. Odotus
      6. Jotta peli ei olisi liian helppo, odotetaan noin 0,3 sekuntia aina liikkumisen jälkeen.
    2. Liikkuminen sivuittain
    3. Sama silmukka-periaate kuin yllä, mutta liikkumisen määrä ei ole välttämättä niin tarkka. Voidaan toteuttaa myöhemminkin tai jättää kokonaan pois.
    4. Aloituskohta
    5. Laitetaan sammakko aina pelin alussa määrättyyn paikkaan - ole tarkkana, että sijoitat sammakon niin, että se hyppää juuri kaistalle liikuttaessa.
  3. Oikealle liikkuva auto
    Opitaan toteuttamaan itsekseen liikkuva hahmo.
    1. Piirretään auto
    2. Scratchin perussuunta on oikealle, joten jotta hahmo liikkuisi oikein, piirrä hahmo osoittamaan myös oikealle.
    3. Autot kaistoille
      1. Auton sijoitus
      2. Alkuperäinen hahmo asettuu alimmalle kaistalle.
      3. Luodaan kloonit
      4. Luo toistosilmukassa niin monta kloonia kuin on kaistoja. Muista siirtää hahmoa kaistan verran ylöspäin joka kloonin luomisen jälkeen.
    4. Liikkuminen
    5. Toteutetaan seuraava Kun aloitan kloonina-palikalla.
      1. Liikutaan kunnes päästään reunaan
      2. Muutetaan x:n arvoa esim. 10:llä kunnes x­sijainti > 240. Nyt autot liikkuvat pelialueen halki kerran.
      3. Liikkuminen ikuisesti-silmukan sisään
      4. Kun liikkuminen loppuu (eli x > 240), asetetaan x:n arvoksi -240, eli vasen reuna. Odotetaan vielä satunnainen määrä sekunteja, jotta peliin tulee sattumanvaraisuutta.
      5. Näkyvyys
      6. Alkuperäinen hahmo piiloon, ja kloonit näkyviin. Piilotetaan kloonit myös kun ne pääsevät reunaan, ja tuodaan ne näkyville kun ollaan odotettu satunnainen aika.
  4. Voittaminen ja häviäminen
    Opitaan ehtolauseiden käyttöä. Opitaan käsittelemään hahmojen törmäyksiä.
    1. Törmäyksen kuuntelu
    2. Laitetaan tämäkin ikuisesti-silmukkaan. On loogista laittaa kuuntelu sammakko-hahmolle (auto jatkaa matkaansa vaikka tulisi törmäys).
    3. Voittaminen
    4. Tehdään sammakolle uusi skripti, joka tarkistaa, onko sen sijainti tarpeeksi korkealla (eli tien yläpuolella). Yksinkertainen Odota kunnes -palikka riittää.
  5. Vasemmalle menevä auto
    Opitaan käsittelemään hahmojen törmäyksiä. Opetellaan satunnaisuutta.
    1. Tee kopio ensimmäisestä autosta
    2. On muutettava ainakin auton liikettä; muuta x:n arvoa -10, ja tarkistettaessa reunassa olemista ja toiseen reunaan siirtymistä x:n arvot toisin päin.
    3. Piirrä autolle uusi asuste
    4. Tällä kertaa auton nokan kannattaa osoittaa siis vasemmalle.
    5. Autot eivät aja toistensa päälle
    6. Korjataan kloonien luontia siten, että kumpaakin autoa luodaan vain puolet kaistojen määrästä, ja luomisten välissä hypätäänkin kahden kaistan verran ylöspäin.
  6. Lisäideoita
    1. Miten autoista saisi tehtyä erivärisiä, kuten esimerkkipelissä, tai kokonaan erinäköisiä?
    2. Voi kokeilla esim. erilaisia asusteita kullekin autolle, tai efektejä kloonien luonnin yhteydessä.
    3. Miten autot saisi aloittamaan satunnaisesta kohdasta, eikä siten, että kaikki lähtevät aluksi yhtä aikaa?
    4. X-sijainnin arpominen kloonien luonnin yhteydessä on helppo vaihtoehto. Klooneilla voi myös olla omia muuttujia (valinta "Vain tälle hahmolle" muuttujan luonnin yhteydessä).
    5. Miten pelin saisi aloitettua uudestaan, kun sammakko pääsee tien yli? Voisiko autojen nopeus olla joka kerta nopeampi kuin viimeksi?
    6. Tässä tarvitaan ainakin muuttujia.
    7. Miten kaistalle saisi yhtä aikaa monta autoa?
    8. Jokaiselle kaistalle voi esimerkiksi luoda useamman kloonin heti aluksi, ja antaa niille omat nopeudet ja/tai odotusajat muuttujiin.
      Toisaalta klooneja voi myös luoda koko pelin ajan uusia, ja tuhota vanhat aina kun ne pääsevät reunaan. Tämä on ehkä pelin jatkokehityksen kannalta parempi ajatus, mutta vaatii pelin perusmekaniikkaan enemmän muutoksia.
      1. Miten estetään autojen ajaminen päällekkäin? Satunnaistetuilla odotusajoilla ja nopeuksilla näin todennäköisesti käy.
    9. Voisiko sammakko selviytyä joistakin törmäyksistä? Miten autoille saisi erilaisia ominaisuuksia, esim sammakon pukkaamalla pökerryttävä pikkuauto?