Materiaalit on lisensoitu Creative Commons BY-SA-lisenssillä, joten voit levittää niitä vapaasti, kunhan alkuperäisten tekijöiden nimiä ei poisteta. Jos teet muutoksia materiaaliin ja haluat levittää muunneltua versiota, se täytyy lisensoida samanlaisella vapaalla lisenssillä.

Alkuperäiset tekijät (2014): Jenna Tuominen ja Virpi Sumu


Takaisin: Kirjastopaja

Pong-maalivahti

Pelin toiminta Klassikkopeli Pongissa pallotellaan kahdella mailalla. Tässä versiossa teemme kuitenkin vain seinistä kimpoilevan pallon ja yhtä seinää suojelevan maalivahdin, joka potkii palloa takaisin kentälle.
Vaikeustaso Peli sopii hienosti aloitteluun.
Oppimistavoitteita
  • Tutustutaan suuntiin ja koordinaatistoon.
  • Tutustutaan satunnaisuuteen.
  • Opitaan luomaan hahmoja, jotka liikkuvat itsekseen tai hiirisyötteellä.
  • Opitaan luomaan eri hahmojen välisiä vuorovaikutuksia ja jakamaan ohjelman tehtäviä oikeille hahmoille.
  • Opitaan silmukoiden käyttöä ja ehtolauseita.
  • Tutustutaan muuttujiin paikkoina säilyttää muistissa arvoja.
  • Tutustutaan ohjelmien pysäyttämiseen.
Toimiva versio Yksinkertainen: Pong-maalivahti mallina Scratchissa
Variaatioita toteutuksessa Taustaa ja hahmoja voi valita sekä piirtää niin, että lajina voi olla monet muutkin pallottelupelit kuin vain jalkapallo.

Kuvia mallipelistä:

Työvaiheet:

Oppimistavoite
Tarkennus tekotapaan
  1. Pallon liikkuminen
    Opitaan luomaan hahmo, joka liikkuu itsekseen.
    1. Pallo liikkuu ikuisesti ja pomppaa reunista
    2. Pelin alusta lähtien pallo liikkuu ja pomppaa reunasta (jos sattuu reunan kohdalla olemaan), ja toistaa tätä yhdistelmää ikuisesti pelin loppuun saakka.
    3. Pallo lähtee satunnaiseen suuntaan
    4. Tutustutaan suuntiin ja satunnaisuuteen. Satunnaista lähtösuuntaa voi verrata siihen, että heitetään noppaa suunnasta. Tässä nopassa vain on niin monta sivua kuin ohjelmoija päättää siinä olevan.
      Esimerkiksi 20-160 astetta lähtösuuntana johtaa oikealle lähtevään palloon.
    5. Pallo pomppaa maalivahdista
    6. Tutustutaan ehtolauseisiin, "JOS pallo osuu vahtiin NIIN kimpoa siitä"
      Testaa jokaisen liikkumisen jälkeen osutaanko maalivahtiin, jos osutaan niin kimmotaan. Kimpoamiseen hahmosta ei ole Scratchissä suoraa komentoa, mutta tarpeeksi hyvään tulokseen päästään jos ensin osoitetaan suoraan kohti maalivahtia ja sitten käännytään päinvastaiseen suuntaan (käänny 180 astetta).
  2. Maalivahdin liikkuminen
    Opitaan luomaan hahmo, joka liikkuu hiirisyötteellä.
    1. Valitaan maalivahdille alkupaikka
    2. Raahaa maalivahti vasempaan laitaan haluamaasi paikkaan. Tämän jälkeen ota ohjelmaasi pelin alkuun mene kohtaan x:_ y:_-palikka, siihen tulevat numerot vastaavat paikkaa mihin hahmon raahasit.
    3. Maalivahti liikkuu ylös ja alas hiiren mukana
    4. Laita maalivahti ikuisesti menemään samalle korkeudelle kuin missä hiiren osoitin on.
  3. Pisteet
    Opitaan muuttujien käyttöä.
    Tee tämä pallo-hahmossa. Jokaisella hahmolla on pelissä tietty rooli ja pallo on maalien ja torjuntojen tekemistä varten, joten pisteiden laskenta on sen tehtävänä.
    1. Luo pallolle muuttuja "torjuntoja"
    2. Luo muuttuja kaikille hahmoille.
    3. Alusta muuttujan arvo joka pelin alussa
    4. Kasvatetaan torjuntoja kun pallo torjutaan
    5. Eli muutetaan muuttujan arvoa yhdellä samassa vaiheessa kun pallo käännetään poispäin maalivahdista.
  4. Maalin käsittely
    Tätä toimintoa varten tehdään uusi irrallinen skripti pallo-hahmoon, sillä siinä missä jokaisella hahmolla on tietyt määrätyt tehtävät ohjelmassa niin myös jokaisella skriptillä on jokin tietty tehtävä. Ei ole mitään mieltä siinä, että jokin skripti olisi "jumala-skripti", joka osaa kaiken. Tällainen skripti olisi luultavimmin tavattoman pitkä ja sekava lukea. Aiemmin tekemämme skripti hallinnoi liikkumista, nyt ohjelmoitavan skriptin tehtävä on huomata maali.
    1. Tunnista tilanne, missä maali on tehty
    2. Tutustutaan koordinaatistoon.

      Tee peliin uusi skripti, joka odottaa pelin alusta lähtien, että pallo pääsisi maaliin. Maali tunnistetaan siitä, että pallo on päässyt tarpeeksi pieniin arvoihin x-akselilla.

      Jos pallo ei myöhemmin tunnu tunnistavan maalia niin se ei välttämättä pääse niin vasemmalle kuin minkä asetit rajaksi. Voit kasvattaa rajaa, mutta vaihtelua aiheuttaa myös pallon satunnainen asento. Asennon muuttumisen voit estää klikkaamalla hahmon kohdalta i-painiketta ja asettamalla kiertytyyliksi "pisteen", eli tällöin hahmo ei käänny.

      Jos edellinenkään ei auttanut niin voit laittaa maalivahdin keskemmälle ja määrittää maaliksi sen, että pallon x on pienempi kuin maalivahdin x, tai piirtämällä maalille oman hahmon, jos pallo osuu maaliin niin tulee maali.

    3. Maalin tullessa pysäytä pallon liike
    4. Tutustutaan valikoitujen toimintojen pysäyttämiseen.
      Pysäytä muut hahmossa olevat skriptit.
    5. Aseta pallolle puhekupla, missä ilmoitetaan maalista.