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äinen tekijä (2015): Jenna Tuominen


Takaisin: Scratch-oppitunnit opettajille

Labyrintti

Pelin toiminta Labyrinttiin on suljettu pelihahmo ja vihollinen. Pelihahmon tulee vihollista karttaen kerätä satunnaisiin paikkoihin ilmestyviä aarteita. Labyrintin seinät ovat vaarallisia ja niihin ei saa koskea (esim. laser, laava, tuli, myrkkymuratti).
Vaikeustaso Peli on kohtuu yksinkertainen, mutta sisältää pari ajatuksellisesti haastavampaa "odota kunnes" -ehtoa, joita nuorempien kanssa voi vielä vältellä. Labyrintin piirtelyyn saattaa helposti mennä aikaa. Pelissä on mahdollisuus harjoitella perustoimintojen jälkeen myös haastavampia asioita kuten tekoälyä ja lohkoja.
Oppimistavoitteita
  • Opitaan hahmojen liikuttelua hiirellä
  • Opitaan hahmojen välisestä vuorovaikutuksesta (kosketus)
  • Harjoitellaan vektoripiirtämistä
  • Tutustutaan koordinaatistoon
  • Tutustutaan lukujen arpomiseen
  • Harjoitellaan monimutkaisempia loogisia ehtoja
  • Valinnainen: Tutustutaan tekoälyyn
  • Valinnainen: Tutustutaan lohkoihin
Toimiva versio Labyrintti mallina Scratchissa
Muut mallit Opettajan tulostettava muistilista komennoista
Opasvideot Opasvideo opettajalle + bonus-osa
Variaatioita toteutuksessa Ilman vihollista peli voi olla tyypillisempi labyrintti, jonka läpi tulee löytää reitti. Peliin voi myös keräilypelin pohjalta lisätä pisteet aarteiden keräilyyn.

Kuva mallipelistä:

Screenshot esimerkkipelistä. Screenshot esimerkkipelistä.

Työvaiheet:

Väriselite:

Oppimistavoite
Tarkennus tekotapaan
  1. Pelihahmon liike
    Pelihahmoa ohjataan hiirellä, mutta hahmo liikkui vain kun hiiren nappi on painettuna. Tällä lähestymistavalla pelissä tulee ratkaista myös vihreän lipun painalluksesta syntyvä virheellinen liikekomento.
    1. Pelihahmo seuraa hiirtä
    2. Pelihahmon tulee siis vuorotellen kääntyä kohti hiirtä ja sitten liikkua valitsemaansa suuntaan.
    3. Pelihahmo liikkuu vain hiiren napin ollessa painettuna
    4. Edellisten komentojen ympärille lisätään testiksi hiiren napin painallus (tuntoaisti-palikat).
    5. Hahmon pyörimissuunta rajoitetaan sivusuuntiin
    6. Tähän löytyy asetus hahmon i -ominaisuuksista.
    7. Pelin alussa ennen liikkumista odotetaan, että hiiren nappi ei ole enää painettuna
    8. Vähintään joillakin hiirillä tai hiiren korvikkeilla vihreän lipun klikkaus venyy pitkäksi tapahtumaksi. Ohjelmoidessa pyritään tekemään usein erilaisilla alustoilla toimivia ratkaisuja ja peliin kannattaakin toteuttaa odotus, joka toimii muuallakin pelattuna.
  2. Piirrä labyrintti
    Labyrinttia piirtäessä on hyvä harjoitella vektorigrafiikkaa. Vektoritilassa kaikki luodut kuviot ovat myöhemmin siirrettävissä, muokattavissa ja poistettavissa. Tämä antaa paljon tilaisuuksia myöhemmin korjata labyrinttia paremmin peliin sopivaksi. Bittikarttatilassa jokaista pikseliä muokataan erikseen ja esimerkiksi kokonaisen labyrintin seinän siirtäminen parilla pikselillä on suuri työ. Bittikarttatilassa muokkauksista jää myös usein jälkeen joitakin yksittäisiä väritettyjä pikseleitä, jotka pelissä myöhemmin aiheuttavat virheellisiä kosketuksia.
    Labyrintista piirretään vain seinät, jotta myöhemmin seiniin kosketusta voidaan suoraan testata kysymällä osutaanko labyrinttiin. Muista piirtää myös reunaseinät, jottei hahmo tai vihollinen karkaa alueelta.
    1. Vaihda asu vektoritilaan
    2. Tämä löytyy piirtoalueen oikeasta alakulmasta.
    3. Luo uusia seiniä esimerkiksi täytetyllä neliö-työkalulla
      Kaarevia seiniä voi tehdä esimerkiksi ympyrätyökalun ja "reunan venytys" -työkalun avulla.

    4. Tarvittaessa siirrä/muokkaa seiniä valitsemalla niitä nuoli-työkalulla
  3. Asettele labyrintti ja pelihahmo sopivasti
    1. Käske pelihahmo menemään pelin alussa aloituspaikkaansa
    2. Käske labyrintti menemään pelin alussa peruspaikkaansa
    3. Jos pelissä myöhemmin syystä tai toisesta raahataan vihollista tai hahmoa, on olemassa riski, että labyrintti lähtee vahingossa hiiren mukaan. Tällöin on hyvä, että sen paikka korjaantuu pelin alussa.
  4. Lisää aarre
    1. Aarre menee pelin alussa alkupaikkaansa
    2. Pelihahmo koskettaessaan aarretta lähettää viestin "Aarre löydetty" ja kertoo sitten siitä pelaajalle
    3. Pelihahmolle voi esimerkiksi antaa pariksi sekunniksi puhekuplan.
    4. Aarteen vastaanottaessa viestin se arpoo itselleen satunnaisen paikan
    5. Lyhyesti ohjelmoituna peli voidaan myös päättää ensimmäisen aarteen löytymiseen "pysäytä kaikki" -komennolla.
    6. Valinnainen: satunnaista paikkaa arvotaan kunnes aarre ei koske labyrinttiin eikä pelihahmoon
    7. Tässä pääsee harjoittelemaan vähän haastavampia loogisia ehtoja; ja, tai, ei. Myös "toista kunnes" -palikan hahmottaminen on normaaleja toistoja ja testejä haastavampaa.
      Looginen ehto luodaan siis: ( (ei koske labyrinttiin) ja (ei koske pelihahmoon) ). Kummankin ehdon tulee siis olla totta yhtä aikaa. Pelihahmon ehtoon sisällyttäminen tarkoittaa myös, että ennen toistoa ei tarvitse arpoa valmiiksi uutta paikkaa. Jos pelihahmoon kosketusta ei testattaisi, sopiva paikka olisi löytynyt jo ennen uuden paikan arpomista ja arpomista ei suoritettaisi.
  5. Valinnainen: Vihollinen liikkuu oman päänsä mukaan
    Tutustutaan ajatukseen tekoälystä. Tässä tehtävässä voi toteuttaa myös omia ideoita ja tehdä vihollisesta fiksumman.
    1. Vihollinen liikkuu ikuisesti eteenpäin
    2. Seinään törmätessään vihollinen peruuttaa ja vaihtaa suuntaansa
      Tässä tehtävässä tutustutaan lohkoihin. Lohkot Scratchissa ovat käytännössä itse määritettyjä komentoja. Lohkon sijasta voi aina sijoittaa lohkon komennot siihen kohtaan, jossa lohko käskettäisiin suorittamaan, jos lohko sattuisi ajatuksena olemaan liian haastava käsite. Lohkot ovat kuitenkin ohjelmallisesti hyvin käteviä kun jonkin osan tehtävästä voi eristää alitehtäväksi. Tämän jälkeen ohjelmoitu koodi on luettavampaa kun lohkot ovat hyvin nimettyjä ja lohkojen käyttö sopivissa tilanteissa vähentää usein saman asian usein kirjoittamista.
      1. Luo lohko "Vaihda suuntaa"
      2. Lohkon määrittelyssä käännä vihollista 90° oikealle tai vasemmalle sattumanvaraisesti
      3. Jotta käännös olisi satunnainen, arvo numero väliltä 1-2. Jos numero oli 1 käännä esim. oikealle, muuten käännä vasemmalle.
      4. Kutsu uutta "Vaihda suuntaa" -komentoa peruutuksen jälkeen
    3. Aseta vihollisen kuva kääntymään vain sivuttaissuunnassa tai olemaan kääntymättä
    4. Jos vihollisen kuva kääntyisi osia siitä voisi joutua seinän sisälle. Kääntymiset on määritetty hahmon i -asetuksissa.
    5. Aseta vihollinen myös kääntymään aika ajoin muuten vain
    6. Käytä tässäkin uutta "Vaihda suuntaa" -komentoa. Vaihtojen välillä vihollinen voi odottaa säännöllisen määrän aikaa tai aika voidaan arpoa.
      Lohkokomentojen tekeminen on erityisen kätevää silloin kun samaa komentoa voidaan käyttää sitten useammasta paikasta. Tällöin ilman lohkoa joka käyttöpaikkaan olisi joutunut laittamaan saman koodin pätkän. Ohjelmoidessa copy-paste (samoin toistuva koodi ympäriinsä) on merkki huonosta koodista. Copy-paste lisää luettavan/ymmärrettävän koodin määrää ja jos komentoa myöhemmin joutuisi muuttamaan niin työn joutuisi tekemään niin monta kertaa kuin käyttöpaikkoja oli.
  6. Pelin päättyminen
    1. Pelihahmo odottaa kunnes se koskee viholliseen ja peli päättyy siihen
    2. Pelihahmo voi esimerkiksi harmitella miten se kääntyi vihollisen suuntaan ja sitten pysäyttää kaikki muut komentosarjat.