Tämänkertaisen tunnin aiheena opetella tekemään pieniä pallopelejä ja hahmottamaan niiden toimintamekanismeja.
| Oppiaine | tietotekniikka |
| Pituus | 90 minuuttia |
| Pedagoginen lähestymistapa | tekemällä oppiminen, teknologian avulla oppiminen |
| Kompetenssit | algoritmit, ohjelmointi, uudet teknologiat |
| Luokka-aste | 4.lk, 5.lk, 6.lk |
| Teknologiat | tabletti, älypuhelin, tietokone |
Muut tarvittavat materiaalit
Tietokone, verkkoyhteys ja mielellään Android-puhelin
Kuvaus
Aluksi aloitetaan uusi projekti

Nimeän pelin PalloPeliksi. Nimi ei saa sisältää välilyöntejä, mutta välilyönnin tilalla voi käyttää alaviivaa “_”.

Ruutu halutaan pelialustaksi ja sen aikaansaamiseksi täytyy muistaa estää ruudun vieritys. Tällöin ruudun koko on vain ja ainoastaan ruudun näkyvä osa. Klikataan “Scrollable” pois päältä Screen1:n valinnoista.

Lisätään ruutuun “Canvas” eli alusta, jossa hahmot, “spritet” liikkuvat. Vedetään ruutuun myös pallo.

Alusta ei ole kummallisen kokoinen, suurennetaan se koko ruudun kokoiseksi asetuksista. Sekä leveys, että korkeus (width ja height) asetetaan “Fill parent”, eli täytä näkyvä osa.

Seuraavaksi valitaan komponenteista pallo ja sen ominaisuuksista suurennetaan sen koko 10:ksi

Siirrytään Blocks-sivulle. Pallon valinnoista löytyy “Flung”-palikka. Flung tarkoittaa lennätettyä tai vipattua ja tätä pääsee ohjaamaan nopealla sormen pyyhkäisyllä. Sormi asetetaan siis pallon päälle ja se “heitetään” johonkin suuntaan.

Valitaan pallon palikoista nopeus (speed) ja suunta (heading), jotka vedetään flung-palikan sisään.



Klikkaamalla flung-palikassa näkyvää speed- ja heading-nappeja, saa näkyviin uusia palikoita. Näistä vedetään pallon suunnan ja nopeuden jatkoksi neppauksen suunta ja nopeus.

Tällaisenaan ohjelman pallo lässähtää tylsästi reunaan. Tämä voidaan korjata valitsemalla pallon valikosta EdgeReached-palikka. Tämän sisältö toteutetaan, kun pallo osuu reunaan.

Edelleen pallon valikosta otetaan pallon pomppaamista ohjaava palikka, johon kytketään EdgeReached-palikan edge-napin takaa löytyvä get edge. Tähän voitaisiin liittää myös jonkun muun hahmon reuna.

Nyt pallo liikkuu, mutta ainakin kokeilluilla puhelimilla suhteellisen hitaasti.

Otetaan apuun matematiikkakategoriasta kertolaskupalikka. Laitetaan toiselle puolelle get speed-palikka ja toiselle puolelle jokin kerroin. Kertoimella 10 pallo liikkuu jo hyvinkin liukkaasti.

Pallon ohjaaminen puhelinta kallistamalla
Tämä ohjaustapa rakennetaan uudeksi projektiksi, jotta edellinen tapa säilyy myöhempää käyttöä varten sellaisenaan. Seuraavaksi kokeillaan ohjata palloa puhelinta/tablettia kallistelemalla. Alkuvalmistelut tehdään kuten aiemminkin, pallo ja canvas vedetään ruudulle ja ruudun vierittäminen estetään valikosta.
Ihan aluksi mennään Designer-sivulle ja estetään ruudun kääntäminen. Tällä tavoin ruutu ei käänny palloa ohjattaessa. Sensoreista löytyvä orientation sensor lisätään Designer-sivulla ruudulle. Alla oleva kuva kertoo mitä roll, pitch ja azimuth tarkoittavat.


Seuraavaksi etsitään Blocks-sivulla “orientation changed”-palikka. Sen sisältö toteutetaan, kun puhelin havaitsee asennon muuttumisen. Laitetaan sen sisään pallon nopeutta ja suuntaa ohjaavat palikat. Nopeutta ohjataan kallistuksen määrällä, “Magnitude” ja suuntaa kulmalla “Angle”.

Pallo liikkuu taas todella hitaasti, mutta asia voidaan tässäkin tapauksessa korjata käyttämällä kerrointa.

Pallon ohjaaminen nappeja painamalla
Viimeisenä vielä tylsin tapa ohjata palloa, eli nappien käyttäminen. Taas uusi projekti ja alkuvalmistelut kuten aiemminkin. Vedetään Designer-näytössä ohjelmaan neljä nappia. Vedän myös layout-kategoriasta “HorizontalArrangement”-palikan, jolla saan napit jaoteltua vähän loogisemmin.


Vaihdan nappien tekstit kertomaan mitä ne oikeasti tekevät. Blocks-näytössä otan napin valikoista klikkaus-palikan.

Klikin sisälle vedän pallon valikoista suunnan ja nopeuden. Laitan aluksi jokaiseen nopeudeksi 100, suunnaksi laitetaan kullekin napille kuuluva suunta. Suunta ylöspäin on 90, vasemmalle 180, oikealle 0 ja alas -90.

Napeilla ohjaus on todella huono, pallo liukuu joko suoraan ylös-alas- tai vasen-oikea-suunnassa. Koska pallon kimpoaminen on vielä mukana, ei ohjauksesta voida tässä vaiheessa vielä oikein puhua.Vastaavaa tekniikoiden läpikäymistä jatketaan Ravistus-oppimiskuvauksessa. Siinä otetaan mukaan nopeutta ja suuntaa ohjaavat muuttujat, jolloin liikkeestä tulee luonnollisempaa. Muuttujat voidaan ottaa käyttöön kaikilla ohjaustavoilla. Napeilla ja asentoa vaihtaessa luonnollisuus tulee kiihtymisen kanssa, neppaamisessa pallon liikkeen hidastumisessa.
Arviointi
Oppilaiden itsearviointi liikkeen sulavuuden saavuttamisesta tai ohjelmoinnin onnistumisesta
Muuta
Ohjeen alkuperäinen idea on julkaistu osoitteessa App inventor -verkkosivulla. Tämä kyseinen ohje on laajempi ja peräisin Ohjelmoinnin opetusta yläkoululla -blogista. Kummallakin sivulla on useita saman tyyppisiä projekteja.
