lauantai 21. maaliskuuta 2015

Bootstrap I - pelin kimpussa

Kevään aikana olen tutustunut amerikkalaisen Bootstrap-projektin ohjelmointimateriaaleihin yläkoulun matematiikan opiskelussa. Heidän lähestymistapansa on mielenkiintoinen, ei vähiten siksi, että hekin käyttävät Racket-kieltä vaan sen takia, että materiaalin keskiössä on matematiikka, ei ohjelmointi. Projektissa jokainen oppilas tekee itselleen oman "videopelin" melko valmiiseen pohjaan. Pelipohja on suunniteltu niin, että oppilaan pitää ratkaista jonkin verran matemaattisia ongelmia, mutta kirjoittaa mahdollisimman vähän ja mahdollisimman yksinkertaista koodia.
 
Vaikka periaatteessa Bootstrap I - pelipohja on aivan toimiva sellaisenaan (se on riisuttu niin yksinkertaiseksi kuin pelin koodaamisen lausekielellä nyt voi riisua), niin olen törmännyt sen kanssa muutamaan harmilliseen asiaan:
  • Pelipohja on toteutettu niin, että sillä voi tehdä yhden ja saman pelin variaatioita ja sitten tulee seinä vastaan. Esim. vaara (DANGER) ja kerättävä (TARGET) liikkuvat vain x:n suunnassa, eikä sitä voi muuttaa mitenkään. Myös koko big-bang on piilotettu, joten esim. hiiren tai kosketusnäytön eventtien lisääminen ei onnistu mitenkään helposti.
  • Pelipohjan käyttämä kirjasto kääntää koordinaatiston ns. "oikeinpäin" (Racket:issa (0, 0) on normaalisti vasemmassa ylänurkassa, Bootstrap:illä se on vasemmalla alhaalla). Äkkiseltään ajatus tuntuu loistavalta, mutta kun kaikki muut toiminnot kuten overlay/xy toimii Racketissä vasemman ylänurkan origon logiikalla niin tämä Boostrapin versio aiheuttaa vain turhaa hämmennystä.
  • Bootstrap:in pelipohjassa on mainio "kolmio"-trace, jolla nähdään miten hahmojen etäisyyden laskemiseen tarvittava kolmio muodostuu livenä. Vaikka kolmio auttaakin Pythagoraan lauseen hahmottamisessa niin näkisin, että paikallaan olevaa kolmiota olisi helpompi tutkia ja oikeita lukuja voisi pyöritellä helpommin kuin hahmojen koordinaatit näkyisivät kuvassa (nyt ne eivät näy, sen sijaan etäisyydet näytetään sitten kun ne on ohjelmoitu).
  • Pelipohjassa ärsytti myös se, että Bootstrap - kirjasto on taas yksi "black box", jonka toimintaa voi vain arvailla, eikä kaikkia pelin asetuksia pääse muuttamaan (pelin korkeus, leveys, hahmojen lähtösijainnit jne.) 
  • Kerholaisteni kanssa törmäsin myös siihen, että 5.-7. luokkalaisille oli melkoisen vaikea opettaa Pythagoraan lausetta, kun potenssit sekä neliöjuurikin puuttuivat sanavarastosta. Törmäys pitäisi siis voida todeta myös ilman Pythagoraan lausetta.
Kokeilin pystyisikö vastaavan pelipohjan kirjoittamaan kokonaan ilman rajoittavaa Bootstrap - kirjastoa, ja tällaisen version sain aikaan: Peruspeli-pohja. Oppilaan koodattavaksi on jätetty vastaavat osuudet kuin Bootstrap I - pelissäkin, mutta valmis koodi on jätetty tiedoston loppuun niitä oppilaita ja opettajia varten, jotka haluavat nähdä mitä "kulissien takana" tapahtuu ja vaikka jatkaa pelin muokkaamista vielä pidemmälle. Tein pelipohjasta kaksi eri versiota: 1a versiossa törmäys havaitaan ilman Pythagoraan lausetta ja 1b, jossa Pythagoraan lause on käytössä.

Koodista ei tullut aivan niin selkeää kuin olisin toivonut: törmäystä havainnolistavien kolmioiden/suorakulmioiden ja koordinaattien tulostaminen teki siitä turhankin monimutkaista. Kumpi on sitten loppupeleissa tärkeämpää, tarjota apuja niille oppilaille, jotka eivät heti hahmota miten hahmojen törmäysehdon voi koodata vai antaa helppo ja selkeä pohja innostuneille pikkukoodareille jatkaa pelin kehittelyä eteenpäin?

Tältä näyttää valmis Peruspeli (1a):


Ja tältä näyttää valmis Peruspeli (1b):

1 kommentti: