Kyseisessä ohjelmassa asetamme ensimäisenä ohjelmassa valmiiksi luodun stage-olion taustan avaruustaustaksi kutsumalla sen set_background –metodia ja antamalla kutsun argumentiksi ”pluto”. ”Pluton” argumentin ympärillä on ”-hipsut, koska pluto-argumentti on tietotyypiltään string, eli merkkijonotyyppi.
Tämän jälkeen luomme tähden luomalla sprite-olion Circle-luokasta. Tähtioliolla on luotaessa useita prototyyppejä eli ominaisuuksia kuten sen x- ja y-koordinaatit, koko ja väri, jotka annamme oiota kutsuttaessa sille argumentteina.
Kuvion piirtäminen alkaa kun tähtioliota klikataan ja sprite.event_click(click) –tapahtuma tapahtuu.
Sprite.event_click(click) tapahtuman click on tapahtuman callback-funktio, jota kutsutaan, kun tapahtuma tapahtuu, eli tähteä klikataan.
Click-funktiossa kusumme käyttäjältä input-kirjastofuntiolla kuinka monta kuviota hän haluaa piirtää ja muutamme käyttäjän antaman string-tyyppisen vastauksen integer, eli numerotyyppiseksi vastaukseksi int-kirjastofuntiota käyttämällä. int-tyyppinen vastaus tallennetaan choice-muuttujaan.
Tämän jälkeen tietokone arpoo tähtisarakkeen kulmien määrän sekä kuvion sivun pituuden random-kirjastofunktiota käyttäen ja tallentaa arvotut vastaukset kulmat- ja sivu –muuttujiin.
Seuraavaksi käytämme for-looppia toistamaan choice-muuttujan määrän kuvioita. For-loopissa kutsumme piirra_kuvio-funktiota sivu- ja kulmat argumenteilla. Argumentit välitetään piirrä_kuvio -funktion sivun_pituus- ja kulmien_maara parametreihin, joiden perusteella funtio piirtää kuvion move_forward ja turn_right -metodeja kutsumalla. Turn_right -metodin argumentin muodostamme käyttämällä aritmeettista operaatiota 360/kulmien_maara.
Tämän jälkeen ohjelman suoritus palaa for-looppiin.
Sprite.turn_right –metodilla käännämme piirrossuuntaa, jonka jälkeen uuselleen piirra_kuvio -funtiota.
Tätä toistetaan niin monta kertaa kuin vastaus-muuttujan sisältö on.
Ja avot kuvio on valmis!
Toimiva ohjelma löytyy täältä ja voit vapaasti käyttää sitä ja yllä olevia ohjeita sekä itsesi että muiden opettamiseen 🙂