perjantai 22. marraskuuta 2013

Viides tunti: Matematiikkaohjelma

Blogilla on ollut jo noin tuhat lukijaa, olen positiivisesti yllättynyt tästä. Kommentoikaa, jos haluaisitte lukea tarkempia tai vähemmän tarkkoja kuvauksia ohjelmien toiminnasta. Ideanani oli tuottaa tekstejä, joiden avulla kuka tahansa voisi pitää muutamia tunteja ohjelmointia ilman aiempaa kokemusta.

Tällä tunnilla on tarkoitus tehdä peli, joka kyselee matemaattisia tehtäviä. Oppilaat tutustuvat kysymys-vastaus -palikoihin, toiminnot-kategoriaan ja joutuvat miettimään laskujen asettelua.

Aloitetaan suorastaan ärsyttävän innostuneella lausahduksella.

 Teen kaksi muuttujaa, joilla muodostan kaikki laskut.
 

 Molempien muuttujien arvot valitaan satunnaisesti välille 1-10. Tietenkin luvut voisivat olla suurempia tai käyttäjä voisi valita suuruusluokan itse. Nyt mennään tällaisilla.


 Tehdään kysymyslause. Tähän tarvitaan vihreästä Toiminnot-kategoriasta "yhdistä"-palikoita, jotta voin yhdistää samaan pötköön muuttujia ja sanoja.


 Rakennan "yhdistä"-palikoista ketjun.

Tekstiin pitää muistaa jättää välilyöntejä muuttujien molemmille puolille, muuten sanat ja muuttujien luvut kirjoitetaan yhteen kissan puhekuplissa.


 Nyt kysymyslauseessa on yhdistettynä "Paljonko on_", arvottu muuttuja 1, "_plus_", arvottu muuttuja 2 ja kysymysmerkki.


Kysymyksen jälkeen tarvitaan jotain, joka kertoo oliko vastaus oikein. Teen tämän jos-muuten -palikalla. Jos-lauseeseen merkitään vastaus yhtäsuureksi muuttujien summan kanssa.


Jos vastaus on oikein, Jos-lause suoritetaan. Väärin mennyt vastaus suorittaa Muuten-lauseen. Tässä vaiheessa ohjelma vain onnittelee tai sanoo laskun menneen väärin.

 Ohjelma toimii ihan niinkuin pitääkin.

 Koska kyseessä on peli, pitää siinä olla jonkinmoinen pistelaskurikin. Teen uuden muuttujan, jota oikein mennyt lasku kasvattaa yhdellä. Lisäsin alkuun muuttujan nollauksen.


Annoin oppilaille tehtäväksi tehdä erilaisia laskuja kysyvän ohjelman. Toteutustapoja oli monenlaisia. Jotkut kysyivät pelaajalta mitä laskuja haluttiin treenata, jotkut kysyivät laskuja samassa järjestyksessä. Minä tein muuttujan, joka arpoo joka kerta plus-, miinus-, kerto-, jako-, potenssi- ja neliöjuurilaskun väliltä. Teen muuttujan "Lasku".


Laskulle arvotaan satunnaisluku väliltä 1-6 ja jokainen laskutyyppi laitetaan oman Jos-lauseensa sisään. Jos "Lasku" on esimerkiksi 1, ohjelma kysyy pluslaskun. Jos muuttuja on 4, ohjelma kysyy jakolaskun.


Jakolaskut muodostuvat todella vaikeiksi, jollei asiaa mieti yhtään etukäteen. Esimerkiksi 5/7 olisi n. 0,714285.. Tämä täytyy kiertää jotenkin.  Kerron luvut 1 ja 2 kysymyksessä ja pyydän jakamaan tuloksen luvulla 2. Tällöin luvut ovat automaattisesti jaollisia ja tuloksena toimii luku 1.


Potenssilasku tehdään melkein samalla tavalla. Kysymyksessä on vain luku 1 ja vastauksen Jos-lauseessa luku 1 on kerrottu itsellään.


Neliöjuurilaskussa sama juttu tehdään taas päinvastoin. Luku 1 kerrotaan itsellään kysymyksessä ja vastauksessa luku 1 on yksinään.


Pelattavuutta  voidaan parantaa vielä pelikellolla.


Alkutervehdyksiin menee yhteensä 4 sekuntia, joten laitan skriptin odottamaan sen verran alussa. Kaksi minuuttia tuntuu sopivan pitkältä ajalta ennätyksien hakkaamiseen. Skripti pysähtyy, kun aika on mennyt loppuun.


Jätin tässä esimerkissä visuaalisuuden täysin toissijaiseksi. Oppilaat tekivät hahmoilleen voitontansseja, pisteisiin prosenttilaskureita ja muuta pelattavuuteen vaikuttavaa. Yksi hauskimmista oli kysymyksiä esittävä Einstein, jonka pää oli animoitu South Park-tyylisesti.

Esimerkkiä voi käydä pelaamassa täällä.

Ei kommentteja:

Lähetä kommentti