Ötökkämatikka
Informaatioverkostot, Studio1
Ohjelmointiprojekti
Maria-Karoliina Tiuraniemi
7.12.2008

Alkuun

    PROJEKTISUUNNITELMA

1. Yleiskuvaus

Ötökkämatikka on matematiikkaohjelma, joka on tarkoitettu lapsille noin kolmivuotiaasta ylöspäin. Pääasiallisina testihenkilöinä ovat omat lapset (iät koodin kirjoittamisen aikaan 3v 9kk ja 1v 9kk). Ohjelman ajatus on visualisoida yksinkertaisia laskutoimituksia, opettaa laskemaan lukumääriä, tutustuttaa yhteenlaskun perusteisiin ja palkita käyttäjää hauskoilla interaktiivisilla animaatioilla. Pääpaino on laskujen ratkaisemisessa, animaatiot ovat bonusta.

Alun dialogissa valitaan taso mahdollisimman helposti niin että lapsi osaa sen itsekin tehdä. Tätä projektia varten tasoja tehdään kaksi: Kuinka monta ja Laske yhteen. On kuitenkin mahdollista myöhemmin lisätä tasoja lapsen ymmärryksen kehittyessä.

    1. taso: Kuinka monta ötökkää näet kuvassa?
   
Jos käyttäjä valitsee väärän vaihtoehdon, numerolaatikon väri muuttuu hetkellisesti ja käyttäjä kuulee äänipalautteen. Samantien saa yrittää toista vaihtoehtoa. Kun lapsi valitsee oikean vaihtoehdon, siitä tulee samaten sekä visuaalinen että äänipalaute. Sen lisäksi oikean vastauksen jälkeen ötökät lähtevät liikkeelle, hiiren kursori muuttuu (tai käyttöön tulee esim. haavi tms. työkalu jota kontrolloidaan hiirellä). Käyttäjä voi työkalulla töniä rauhallisesti liikkuvia ötököitä ohjelman ruudun sisälle niin, että ne pysyvät mahdollisimman pitkään ruudun sisällä. Kun kaikki ötökät ovat poistuneet näkyvistä, siirrytään seuraavaan laskutoimitukseen.

    2. taso : Laske ötökät yhteen!
   
Toisella tasolla toiminta on periaatteessa sama kuin ensimmäisessä, mutta tarkoitus olisi oppia tuntemaan samalla myös numeroita ja ymmärtää yhteenlaskun perusteet. Lapsi voi edelleen laskea vain näkyvissä olevia ötököitä ja vastata siihen, mutta visuaalisessa ilmeessä erotellaan selkeästi minkä verran ötököitä mihinkin numeroon kuuluu. Visuaaliset ja äänipalautteet toimivat samoin kuin ensimmäisellä tasolla, lopun oikeasta vastauksesta tulee samanlainen animaatio.

    Vaikeustason valinta

Ohjelmaan tulee erillinen vaikeustason valinta, joka on tarkoitettu aikuisen käytettäväksi. Se avautuu menusta omaksi ikkunakseen. Siitä voidaan määritellä, mikä on maksimimäärä laskettavia ötököitä: vaikkapa fiksatut luvut 5, 10, 15 ja 20. Tai sitten määritellään vain ohjelmakohtainen maksimi ja käyttäjä saa asettaa itse oman maksiminsa.

Toinen säätö on animaation nopeudessa. Lapsen käden ja silmän yhteistoiminnan kehittyessä ja hiiren käytön opettelun parantuessa voidaan kasvattaa ötököiden liikkumisnopeutta.

Mahdollisesti tästä voidaan myös valita taso, jolla ohjelmaa käytetään. Taso jää muistiin seuraavaa käynnistyskertaa varten. Tällöin ei tietenkään olisi tarvetta erilliselle aloitusdialogille.

    Tuloslista

Tuloslistaa voidaan myös tallettaa erikseen ja näyttää parhaat tulokset. Tällöin tarvittaisiin myös käyttäjän nimen tallentaminen. Ehkä sen voisi asettaa asetuksista?

2. Tekninen toteutus

Ohjelmaa koodatessa lähden liikkeelle ensin peruslogiikasta. Ohjelman molemmat tasot on ensin saatava toimimaan tekstipohjaisesti. Sen jälkeen ohjelmoidaan GUI perustasolla, sen viilausta voidaan jatkaa loppupuolella jos jää aikaa. Sen jälkeen tehdään animaatio eli ötököiden satunnaistettu liikkuminen ja lopuksi käyttäjän interaktio liikkuvien ötököiden kanssa.

Yleisellä tasolla ohjelmassa on logiikka, GUI ja animaatio erikseen. Ne myös rakennetaan samassa järjestyksessä.

Luokat ja niiden summittainen toiminta:

Matikka - Asettaa ötököiden maksimilukumäärän. Arpoo käytetyt satunnaisluvut. Tarkistaa käyttäjän arvauksen oikeellisuuden.

Ötökkä - Pysyy paikallaan, kunnes arvaus on oikein. Sitten lähtee liikkumaan satunnaista rataa pitkin. Reagoi käyttäjän hiiren liikkeisiin.

Ikkuna - Piirtää graafisen käyttöliittymän muuttumattomat perusosat paikoilleen. Myös valikot.

Pelilauta - Piirtää pelilaudan interaktiiviset osat, numeronapit ja ötökät paikoilleen. Hiiren kuuntelijat selvittävät, mitä käyttäjä tekee ja pelilauta reagoi sen mukaisesti.

Asetukset - Menusta avattava erillinen ikkuna, jossa päästään vaikuttamaan ohjelman vaikeustasoon.

Tulokset - Tallentaa käyttäjän nimen ja tuloksen, näyttää tuloslistan.

Ohjelma tullaan koodaamaan Eclipsellä. Ohjelmasta tehdään Applet-versio, jotta se saadaan toimimaan myös netin kautta. Suurimmat haasteet ovat varmaankin animaation ja interaktion kanssa. Sen vuoksi haluan ensin saada ohjelman perustoiminnot toimimaan ja vasta sitten lähden selvittämään animaation tekemistä. Jos satunnaisesti kiertelevät ja kaartelevat, toisiinsa törmäilevät ötökät ovat liian vaikeita toteuttaa, ötökät voivat myös liikkua suoraviivaisesti ruudulta pois toistensa yli ja käyttäjän reagointi näihin aiheuttaa normaalia biljardipallomatematiikkaa.

3. Ajankäyttöarvio & aikataulu

Olen varannut ohjelmointiprojektille aikaa keskimäärin 2,5 päivää viikossa, kaksi täyttä 8h päivää viikolla ja 4h lauantaisin. Suunnittelen pitäväni lyhyen joululoman, enkä työskentele sunnuntaisin, joulunpyhinä, uudenvuoden päivänä tai loppiaisena. Eli käytännössä aikataulussa on paljon joustonvaraa. Pyrin ohjelmoimaan päiväsaikaan, jolloin ajatus kulkee parhaiten. Projektin loppuvaiheessa on helppo lisätä aikatauluun myös iltatunteja jos tuntuu siltä että projekti vaatii lisätyötä.

Omassa aikataulussani on otettava huomioon myös perheen vaikutus, lasten hereilläoloaikaan on vaikea keskittyä ohjelmointiin. Töitä pitäisi myös tehdä kaksi päivää viikossa ja tietenkin juhlia myös joulu ja uusi vuosi välissä. Tämän takia pyrin jakamaan työnteon tasaisesti koko ajalle enkä jätä kaikkea viimeiselle viikolle. Aikaa on varattu yhteensä 92h, mutta sitä on mahdollista saada vielä enemmän käyttöön.

Viikko Viikonpäivät Aika Yhteensä
15. - 21.12.2008 ma 8h, ke 8h, to 8h, la 4h 28 28
22. - 28.12.2008 ma 4h, (joululoma), la 4h 8 36
29.12. - 4.1.2009 ma 8h, ti 4h, (uusi vuosi), la 4h 16 52
5. - 11.1.2009 ke 8h, pe 8h, la 4h 20 72
12. - 18.1.2009 ti 8h, ke 8h, la 4h 20 92

Aikataulu

Suunnittelu - 16h, kaksi täyttä työpäivää. Käyn läpi projektiarkistoa, selvitän olisiko siellä vinkkejä siitä miten asioita kannattaa tai ei kannata toteuttaa. Selvitän olemassaolevia valmiita lasten matematiikkaohjelmia, olisiko siellä toteuttamiskelpoisia ideoita.
  deadline: 18.12. ohjelman tarkempi luokkarakenne ja toteutustavat selvillä.

Toteutus & testaus - 52h, suurin osa varatusta ajasta. Käytännössä testaan metodi kerrallaan ja tarkistan toiminnallisuuden eri tilanteissa, tämä on ollut hyväksi koettu metodi myös harjoitustehtävissä. aloitan perustoiminnallisuudesta, sitten lähden lisäilemään ja vaikeuttamaan toimintoa. pyrin jättämään GUIn tarkemman viilauksen loppuun vaikka se kiinnostaisikin eniten.
  deadline: 9.1. toiminnallisuus valmis

Viimeistely - 12h, puolitoista päivää. Varaan kunnolla aikaa viimeistelylle ettei tarvitse palauttaa kiireessä puolivalmista koodia.
  deadline: 13.1. koodia kehtaa esitellä

Dokumentointi - 12h, puolitoista päivää. Dokumentoin prosessin edetessä, tämän verran varaan aikaa loppuraportille ja JavaDocin viimeistelylle.
  deadline: 18.1. loppuraportti valmis.

Tulen pitämään päiväkirjaa työn etenemisestä, kirjaan ylös päivittäin tehdyt tunnit, työn etenemistä, perusteluja teknisistä ratkaisuista sekä havaittuja virheitä ja puutteita. Päiväkirja tulee olemaan minulle sparraaja, pidän sen avulla huolta siitä että teen viikkotasolla vähintään aikomani määrän tunteja. Jos päivät jäävät lyhyiksi, työ jatkuu illalla. Kirjoitan JavaDoc-kommentteja työn edetessä, todennäköisesti aloitan aina kommenteista ja jatkan sen jälkeen vasta varsinaisella koodilla. Näin vältän sen, ettei loppuun tarvitse kirjoittaa kaikkia kommentteja kerralla.

Tietolähteet: