perjantai 8. marraskuuta 2013

Kolmas tunti, autopelin aloittaminen

Tämä on ensimmäinen kaksoistunti Scratchin käyttöä. Tarkoituksena on harjoitella jos-lauseen käyttöä, tuntoaisti-kategorian käyttöä jos-lauseessa ja muuttujien tekemistä. Tämän saa tehtyä helposti esimerkiksi autopelin avulla.
Aluksi piirrettiin auto ja esiintymislava piirrettiin radaksi. Pelistä tulee todenmukaisemman näköinen, jos auto kuvataan ylhäältä päin, mutta minä piirsin sen jääräpäisesti sivulta päin.

Upea taidonnäyte, grafiikan sputnik...
Skripti rakentuu aloituspalikasta, ikuisesti-silmukasta ja neljästä jos-lauseesta. Ilman ikuisesti-silmukkaa ohjelma tarkistaa painetut nappulat vain kerran, eikä auto lähde liikkeelle laisinkaan.

Jos-lauseeseen voi liittää Tuntoaisti-kategoriasta "Onko painike **** painettu?"-palikan, jossa painettavaa nappia voi vaihtaa. Tässä tapauksessa haluan autoa ohjattavan nuolinäppäimillä, joten teen jokaiselle nuolinäppäimelle oman Jos-lauseensa. Kun nuoli ylös-näppäin painetaan, auton rintamasuunta vaihtuu ylöspäin ja auto liikkuu 10 askelta. Samanlaiset jos-lauseet rakennetaan jokaiselle nappulalle.

 Nyt autoa voi ohjata ympäri areenaa. Tiellä tai vihreällä nurmikolla ei ole eroa, vaan auto kulkee joka paikassa samalla tavalla. Tämä saadaan korjattua jos-lauseella. Tarkoituksena on, että auto nurmelle osuessaan ilmestyy pienellä viiveellä lähtöpaikalle. Alla oleva pätkä siirtää auton lähtöruutuun ja tarkistaa ikuisesti osuuko auto vihreälle. Vihreälle osuessaan auto katoaa näkyvistä, siirretään aloituskohtaan ja palautetaan näkyviin yhden sekunnin kuluttua. Kirjoitan tämän selkeyden vuoksi omaksi skriptikseen.


Jotta pelissä olisi jotain jännitystä, tehdään ohjelmaan mukaan kierroslaskuri. Kierroslaskuri on helppo tehdä muuttujien avulla. Muuttujat-kategoriasta luodaan uusi muuttuja "Kierrokset", joka laitetaan koskemaan vain nykyistä hahmoa (syy selviää myöhemmin).
Muuttujan "Kierrokset" palikat.
 Teen kierroslaskurille oman skriptinsä. Kun vihreää lippua klikataan, muuttuja "Kierrokset" asetaan nollaksi. Tämän jälkeen ketju tarkistaa ikuisesti koskeeko auto valkoista väriä. Maaliviiva on valkoinen, joten auton ylittäessä sen, muuttuja "Kierrokset" kasvaa yhdellä. Koska auto koskee maaliviivaan yli ajettaessakin jonkin aikaa, kierrosluku kasvaa useamman numeron jokaisella ylityksellä. Tämä voidaan estää laittamalla laskuriin viive, joka tässä tapauksessa on 5 sekuntia. Nyt kierrosluku voi kasvaa yhdellä lyhimmillään viiden sekunnin välein.
Jotta peliin saadaan kilpailuhenkeä, peliin voidaan laittaa mukaan ajastin. Tähän esimerkkiin laitan ajaksi 20 sekuntia. Tarkoituksena on, että aika juoksee alaspäin ja ajan loputtua auto pysähtyy. Uuden pelin voi aloittaa vihreästä lipusta. Luon esiintymislavalle oman muuttujan "Aika" ja teen skriptin, jossa vihreää lippua painettaessa muuttuja "Aika" asetetaan arvoon 20. 20 kertaa toistettava silmukka vähentää joka kerta "Aika"-muuttujasta yhden ja odottaa yhden sekunnin, jolloin silmukan suorittaminen kestää oikeasti yhden sekunnin. Kun aika päätyy nollaan, kaikki skriptit pysähtyvät ja autot jäävät paikoilleen.





Koska kyseessä on intensiivinen ja nopeatempoinen rallipeli (hehheh), ajastin voidaan laittaa laskemaan myös kymmenesosasekunteja. Tästä ei ole mitään vastaavaa hyötyä, ainoastaan pieni visuaalinen plussa ajastimen kymmenesosasekuntien näkymisestä.


Muuttujat voi vetää näkyviin haluamalleen kohdalle ruutua. Minä päädyin radan keskikohtaan, jossa ei tapahdu mitään muuta.

Jännittävä rallipeli on tuplasti jännittävämpi kahdella autolla ajettuna, joten monistin alkuperäisen auton ja muokkasin sen värin siniseksi. Ensimmäisen auton skriptin voi kopioida suoraan toiselle, kunhan muistaa muuttaa ohjaukseen käytettävät nappulat. Minä valitsin peleissä yleisesti käytössä olevat W, A, S ja D-nappulat, jotka muodostavat samanlaisen kuvion näppäimistöllä kuin nuolinäppäimetkin.

Koska muuttuja "Kierrokset" on kullekin hahmolle oma, voidaan samaa muuttujaa käyttää laskemaan kummankin auton kierrokset. Huomaathan, että autojen ikkunat ovat harmaat ja maaliviiva on valkoinen. Jos autojen ikkunat olisivat valkoiset, ne laskisivat kierroksia aina koskettaessaan toisiaan.

Pelin tätä versiota voi käydä kokeilemassa täällä.

Seuraavalla tunnilla jatketaan samaa aihetta ja tehdään pientä animointia auton liikkumiseen ja törmäämiseen. Nopeimmilla oppilailla oli jo nyt omia ulosajolaskureita ja pieniä animointeja rysähdyksissä, osaavat siis soveltaa opittuja tietoja. :) Tähän mennessä oppilaiden kännyköitä tai fb-sivuja ei ole tunnilla näkynyt. Tunnilla riittää puhetta ja oppilaat kommentoivat toistensa töitä ja tapaa toteuttaa esimerkiksi liikettä.

Ei kommentteja:

Lähetä kommentti