maanantai 29. joulukuuta 2014

Lielahden koodauskerhon syksy 2014

Vedin tänä syksynä ensimmäistä kertaa elämässäni koodauskerhoa. Kerho kokoontui keskiviikkoisin (2h) ja siellä kävi säännöllisesti noin kymmenen 5.-7.-luokkalaista. Kerholaisista vain kaksi oli ohjelmoinut aikaisemmin, toinen CoolBasic:llä ja toinen Scratch:llä, joten pääsimme lähtemään liikkeelle lähes tyhjältä pöydältä.

Aloitimme ohjelmointiin tutustumisen pelaamalla code.org:in ohjelmointipelejä. Kerholaiset jaksoivat pelata näitä pelijä 1-2 tuntia, mutta sitten kiinnostus lopahti. Seuraavalla kerhokerralla siirryimme tekemään peliä Scratch:llä. Tein koko ryhmälle yhteiset tunnukset Scratch - sivustolle ja jokainen sai ryhtyä suunnittelemaan omaa peliänsä. Näytin aluksi miten Scratch-kissan saa liikkumaan ja kääntymään ja sen miten hahmot lähettävät toisilleen viestejä. Näytin myös miten uusia hahmoja ja taustoja piirretään. Kävimme läpi myös miten hahmon liikkeitä voi animoida vaihtamalla asusteita ja miten huomataan törmääminen esim. jonkin värin kanssa. Kävimme yhdessä läpi myös muuttujien käytön, koska useampi kerholainen halusi tehdä hyppäävän hahmon, jonka hypyn korkeus määräytyi siitä montako kertaa välilyöntiä oli painanut. Myös taustan (tason) vaihtuminen käytiin yhdessä läpi. Näitä asioita opetin useammalla kerhokerralla sitä mukaan, kun niitä peleissä tarvittiin.

Scratch-peleissä vaikeinta taisi olla oman peli-idean löytäminen ja siinä pysyminen. Osa kerholaisista vaihtoi peli-ideaansa useammankin kerran eikä sitten lopulta saanut mitään valmiiksi. Myös toisten tekemiin Scratch-peleihin tutustuminen netissä (=pelaaminen) kiinnosti välillä enemmän kuin oman pelin tekeminen. Parilla kerholaisella ongelmia tuotti myös itse ohjelmointi: haluttiin tehdä heti ensimmäisessä pelissä suhteellisen monimutkaista pelilogiikkaa. En aina itsekään osannut heti neuvoa oppilaita kun ruudulla tapahtui jotain outoa: hahmot putosivat maanpinnan läpi tai  hyppylaskuri kasvoi holtittomasti jne. Huomasin myös, että osalla työ ei edennyt koska hahmojen tarkkaan piirtämiseen käytettiin paljon aikaa jolloin varsinainen ohjelmointi jäi sivuseikaksi.

Tässä erään kerholaisen tekemän Scratch - pelin kaksi tasoa sekä pelihahmot
Lopulta vain 2 oppilasta sai oman Scratch - pelinsä valmiiksi, lopuilla into lopahti joko siksi, että en osannut aina neuvoa heti kun ongelma ilmeni tai pelin loppuun saattaminen olisi vain ollut liian hidasta. Ehkä peli-ideat olivat lopultakin liian vaativia tai lopputuloksen suhteen oltiin liian kriittisiä? Tässä kuitenkin yksi valmistuneista peleistä: bomb boy.

Bomb boy:ssä on monta level:iä
Kun huomasin että Scratch - projekti ei oikein edennyt, ehdotin parille 7. luokkalaiselle ohjelmointia Racket:llä. Annoin heille linkin opettajille pitämäni Racket - pajan materiaaliin ja kävimme sen avulla läpi Racketin piirtofunktioita. Pienen harjoittelun jälkeen he koodasivat autot ja funktion käsitteen selittettyäni myös "maalaa-auto"-funktiot. Lopuksi he pääsivät kokeilemaan myös autolla "ajelua". Autolla ajelu ja mm. auton nopeuden säätö olivat pojista hauskaa mutta toisaalta harjoitusta tehdessämme huomasin, että funktion käsite oli melkoisen vaikea vielä 7.-luokkalaisille. Tältä autolla ajelu "Racket-autolla" näyttää:


Yhdellä kerhokerralla emme päässeet kirjautumaan ollenkaan Scratch - sivustolle, joten koodasimme koko ryhmä Racket:llä. Ihmeekseni myös 5.luokkalaiset ymmärsivät miten lippuja ohjelmoidaan ja kahden tunnin aikana syntyi monen eri maan lippuja! Racket kokeilun jälkeen moni hylkäsi Scratch - projektinsa kokonaan ja jatkoi Racketin kanssa piirtelyä. Osa jatkoi omatoimista koodailua, ja näiden kokeilujen tuloksena syntyi mm. mielikuvitusmaan lippu ja kolmiulotteisuutta mallintavan "Death Star".

Tässä 6.luokkalaisten Racket - koodausnäytteitä: "Death Star" ja lippuja
Osa kerholaisista jatkoi Racketin kanssa, joko maalaa-auto-funktioiden parissa tai ryhtyi opiskelemaan ufon laskeutumislogiikkaa näiden ohjeiden pohjalta. Yksi oppilas pääsi ufonsa kanssa jopa siihen pisteeseen, että hän pystyi ohjailemaan ufon laskeutumista nuolinäppäilillä oikealle ja vasemmalle! Vaikka saimmekin ufon laskeutumaan, huomasin että ohjeet eivät olleet riittävän tarkat jotta kerholaiset olisivat itsenäisesti voineet niitä seurata... Ja tältä ufon laskeutuminen näyttää valmiina:


Marraskuussa kerhomme osallistui myös Majava - kilpailuun. Kilpailu oli itselleni uusi tuttavuus mutta se toimi hienosti ja sopi hyvin toteutettavaksi yhdellä kerhokerralla. Tähän osallistumme myös ensivuonna!

Joulukuuhun mennessä 2D-hommat oli osan mielestä "jo niin nähty", että he halusivat että asennutan koulun koneille 3D-mallinnusohjelman (Blender). Varoittelin kerholaisia etukäteen siitä, että en osaa itse käyttää ko. ohjelmaa (vaikka olen kurssin käynytkin) mutta siitä huolimatta he saivat aikaan 3D - malleja, jopa animoituja sellaisia! Yksi oppilas kokeili myös ohjelmoida Blenderin pelilogiikka-moduulilla. Tässä yhden kerholaisen tekemä Blender-3D-animaatio:


Aivan kaikki eivät Blenderistä innostuneet vaan jatkoivat Racketillä koodaamista. Ennen joulua valmistui vielä pari koodattua joulukorttiakin:


Keväällä jatkamme koodailua ja uutena juttuna aloitamme Lego-robottien rakentamisen ja ohjelmoinnin. Jos saamme jotain valmista aikaan, voisimme yrittää osallistua myös keväällä järjestettävään  RoboCupJunior - kisaan. 

Kerhon vetäminen on ollut mukavaa mutta myös opettavaista. Olen saanut opetella olemaan vähemmän "opettaja" ja enemmän "ohjaaja". Jokainen kerholainen on saanut itse valita mitä tekee, ja olen opetellut ohjaamaan montaa eri juttua yhtäaikaa. Tästä johtuen en ole voinut suunnitella kerhokertoja juurikaan etukäteen. Toisaalta minulla on pitänyt olla takataskussa tasaisin väliajoin joitain "uutta kivaa". Silti kerholaiset yllättivät minut tekemällä sellaisia juttuja Blenderillä, joita en itse osaisi edes tehdä. Sain siis huomata, että vaikka kerhonvetäjän omat taidot ovat toki tärkeitä, kaikkein tärkeintä ovat kerholaisten omat ideat sekä motivaatio ja halu saada jotain toimivaa aikaiseksi. Mistä se motivaatio sitten syntyy, ja miten se pidetään hengissä? Ehkä sekin vielä selviää...

Ei kommentteja:

Lähetä kommentti