Materiaalit on lisensoitu Creative Commons BY-SA-lisenssillä, joten voit levittää niitä vapaasti, kunhan alkuperäisten tekijöiden nimiä ei poisteta. Jos teet muutoksia materiaaliin ja haluat levittää muunneltua versiota, se täytyy lisensoida samanlaisella vapaalla lisenssillä.
Alkuperäinen tekijä (2013): Jenna Tuominen
Lentelypelin ideana on ohjata hahmoa hiirellä ja väistellä tiettyjä ilmassa vastaan tulevia esteitä ja osua toisiin esineisiin mistä saa pisteitä.
Vastaan tulevia esteitä ovat pilvet ja ukkospilvet, joista pilviin osuessa pelin nopeus kasvaa (ja siten väistely hankaloituu) ja ukkospilviin osuessa hahmo tuupertuu hetkeksi ja ohjaaminen keskeytyy. Toisaalta ilmassa leijaileviin kolikoihin osuessa saa pisteitä ja peli hidastuu, jolloin ohjaileminen on taas helpompaa.
Pelihahmo pitää siis aluksi saada liikkumaan hiiren mukana. Toiminnallisuus halutaan pelin alusta lähtien, mutta niin, että hahmo ei heti aluksi lähde vihreätä lippua kohti. Valitaan alotukseksi, että painetaan itse valitsemaamme kirjainta.
Aloituksen jälkeen halutaan siis, että hahmo liikkuu ikuisesti hiirtä kohti, joten tarvitaan haarukkapalikka ikuisesti ja sisällöksi liukuminen kohtaan x:_ y:_. Liukumisen kestoksi voisi pelin toiminnan vuoksi valita tällä kertaa vaikka 0.1 sekuntia. Liukumisen päämääräksi saa hiiren sijainnin Tuntoaisti-työkalupakin hiiren sijainti -palikoin.
Klikkaa mustaa aluetta kun luulet, että olet saanut pelihahmosi toimimaan halutusti.
Jos haluat voit myös lisätä tavan lopettaa pelihahmon liikkuminen. Tätä varten tarvitset jonkun toisen kirjaimen, josta lopetuksen voi valita, ja pysäytä kaikki-toiminnon.
Luo nyt uusi hahmo toimimaan pilvenä.
Pilven tulisi liikkua tietyllä nopeudella ikkunan halki ja hävitä päätyessään ikkunan oikeaan laitaan. Jotta peli olisi pitempi lisätään sille myös ominaisuus, että hävitessään se ilmestyy jälleen ikkunan vasempaan laitaan. Näin näyttää, että vasemmalta tulee jatkuvasti uusia pilviä.
Aloitetaan pilvenkin liike samasta kirjaimesta kuin pelihahmon liike. Laitetaan itse liikkeen sisällöksi liikkuminen vasemmalle toistaiseksi nopeudella 5.
Laitetaan lisäksi oikean laidan tunnistus eli "jos ollaan oikeassa laidassa niin siirrytään vasempaan laitaan". Oikean laidan voit tunnistaa hahmon koordinaateista. Voit kuvassa hiirtä liikuttamalla tunnistaa pitääkö hahmon koordinaattia verrata x:ään vai y:hyn, ja minkä arvon hahmo reunassa saa.
"Jos"-tapaukseksi pitää siis laittaa sijainti > _ ja > -merkin toiselle puolelle määrittelemäsi reunan arvo. Vertailu merkki > löytyy Toiminnot-työkalupakista. Siis verrataan onko hahmon sijainti suurempi kuin reunan sijainti, jos on niin hahmo on siirtynyt reunan oikealle puolelle.
Kun reunassa olo on tunnistettu pitää pilven vielä siirtyä uudelleen väistettäväksi kuten päätettiin jo aiemmin: "niin siirrytään vasempaan laitaan". Tunnista nyt vasemman laidan sijainti koordinaateissa ja siirrä pilvi aseta :lle arvo _-palikalla.
Kokeile nyt toimiiko pelihahmosi ja pilvesi oikein.
Kuten huomaat, pilvi siirtyy aina takaisin samalle korkeudelle. Lisätään vaihtelua, jotta peli olisi järkevämpi. Asetetaan pilvi satunnaiselle korkeudelle eli muutetaan myös sen y-arvoa jos reunaan päädytään. Scratch osaa antaa satunnaisen arvon jos sille vain antaa ylä- ja alarajan mistä arvo halutaan, vähän niin kuin noppa jossa on tietyt numerot tietyltä väliltä. Tässä nopassa on vain paljon enemmän vaihtoehtoja. Toiminnot-työkaluista löytyy tähän tarkoitukseen valitse satunnaisluku väliltä _ - _. Valitaan alarajaksi -180 ja ylärajaksi 180.
Voit tästä kuvasta katsoa toimiiko pilvesi nyt halutulla tavalla.
Voit uudelleennimetä hahmoja klikkaamalla skriptien (työskentelytilan) päältä löytyvää harmaata laatikkoa, jossa lukee Hahmo1.
Pilvi ja pelihahmo on nyt saatu liikkumaan, mutta ne eivät vielä vaikuta toisiinsa. Nyt siis halutaan, että jos hahmot koskettavat niin pilven nopeus kasvaa.
Aiemmin kirjoitettiin, että pilven nopeus on aina 5, joten nyt tarvitaan avuksi muuttujaa. Muuttuja on vähän niin kuin lokero, tai kaveri, jolle annetaan muistettavaksi jokin arvo, jota voidaan sitten myöhemmin aina kysyä. Samaten arvoa voidaan aina vaihtaa ja tämän jälkeen arvoa kysyttäessä se palauttaa muuttuneen arvon.
Uuden muuttujan saamme Muuttujat-työkaluista. Paina siellä nappia Uusi muuttuja, anna sille nimeksi "nopeus" ja määritä, että se näkyy kaikille hahmoille.
Muuttujat-työkalulaatikkoon ilmestyi uusia palikoita. Ota nyt yksinkertaisin nopeus palikka ja laita se aiemman nopeuden (5) paikalle. Tästä eteenpäin pilvi liikkuu aina sillä nopeudella mikä muuttujasta löytyy. On siis myös tärkeää, että asetamme sille alkuun jonkun alkunopeuden. Ota tätä varten aseta nopeus arvoon 5 palikka ja laita se pilven ohjelmassa ihan alkuun ennen liikkumisen aloitusta.
Ollaan saatu siis pilvi liikkumaan muuttuvalla nopeudella, mutta haluttaisiin vielä myös muuttaa nopeutta jos osutaan pelihahmoon. Ohjelmoidaan seuraavaksi "jos kosketetaan pelihahmoa niin kasvatetaan nopeutta". Tehdään tätä varten uusi kun painetaan välilyönti ohjelma.
Erillisiä ohjelmia tehdään, jotta yksittäiset toiminnot pysyisivät toisistaan erillä ja siten helpommin muokattavissa ilman, että muutkin toiminnot muuttuvat.
Aloitetaan jos-osuudesta. Koskettaminen löytyy Tuntoaisti-työkaluista, mutta "jos" kannattaakin tällä kertaa vaihtaa odottamiseksi eli "odota kunnes kosketetaan pelihahmoa". Tämän voisi myös ohjelmoida normaalilla "jos"-toiminnolla, mutta "odota kunnes" voi olla koneelle helpompi.
Kun odottaminen on suoritettu ja hahmot ovat saaneet kosketuksen niin halutaan vielä nopeuden kasvavan. Lisää tätä varten ohjelmaan odottamisen jälkeen muuta nopeus 5 askeleella -palikka.
Testaa nyt peliäsi ja katso milloin nopeus oikeasti muuttuu. Mitä ohjelmaan pitäisi vielä lisätä, että joka kosketus kasvattaisi nopeutta?
Entä halutaanko, että nopeus kasvaa koko ajan kun hahmot ohittavat toisiaan ja siis koskettavat jatkuvasti? Tätä varten Ohjaus-työkaluista löytyy odota 1 sekuntia palikka.
Testaile millaisella alkunopeudella, nopeuden muutoksella ja odotusajalla peli toimii parhaiten.
Kun olet saanut lisättyä kaikki toiminnot pilvelle tulisi sen näyttää tältä.
Ohjelmoidaan seuraavaksi napattava esine eli kolikko. Tee hahmolle ensin kuva.
Kolikko liikkuu oikeastaan täsmälleen samalla tavalla kuin pilvi, joten ohjelmoidaan sille samanlainen liikkuminen.
Toisaalta sekin voi osua pelihahmoon ja ainoa ero pilven toimintaan on, että nyt nopeuden tulisi pienentyä ja pelaajan kuuluisi saada piste. Samaten kolikon voisi olla hyvä hävitä näkyvistä jos siihen osutaan. Voit kirjoittaa kolikolle samanlaisen osumisohjelman kuin pilvellekin, mutta muokataan sitä sitten hieman kolikolle sopivammaksi.
Määritetään ensin, että nopeus hidastuukin. Mieti miten muuttujaa "nopeus" tulisi muuttaa, että tämä saadaan toimimaan?
Ohjelmoidaan tässä välissä myös kolikon häviäminen. Eli nopeuden muutoksen jälkeen lisätään palikka joka piilottaa kolikon Ulkonäkö-työkaluista. Samaten kolikko on taas määritettävä näkyväksi kun ollaan siirrytty vasempaan laitaan.
Mitä tapahtuu nyt nopeudelle jos osut liian moneen kolikkoon? Entä miten saisit tilanteen korjattua?
Seuraavaksi lisätään ohjelmaan vielä pisteet. Ne saadaan jälleen muuttujalla. Siis määritetään uusi muuttuja "pisteet" ja tehdään niitä varten uusi ohjelma samaan tilaan kolikon muiden ohjelmien kanssa sillä pisteet liittyvät hyvin paljon juuri kolikkoon.
Valitaan siis jälleen aloitukseksi välilyönti ja sen jälkeen asetetaan pisteiden määrä nollaan.
Pisteiden kasvattaminen tapahtuu toisaalta kun pelihahmoon osutaan, joten se pitää ohjelmoida samaan paikkaan missä nopeuttakin vähennettiin.
Kolikon tulisi nyt siis näyttää tältä.
Viimeisenä lisättävänä olisi vielä ukkospilvi. Tee nyt sille kuva.
Ukkospilven toiminnallisuudeksi halutaan siis, että jos osutaan ukkospilveen niin pelihahmoa ei voi tiettyyn aikaan liikuttaa. Ukkospilvi muuten liikkuu jälleen kuten pilvi (ja kolikko), joten ohjelmoi ukkospilvi nyt alkuun liikkumaan.
Ukkospilvi ei voi kuitenkaan muuttaa pelihahmon toiminnallisuutta, joten tällä kertaa ohjelmoidaankin osuminen suoraan pelihahmon skriptiin.
Lisätään pelihahmolle liukumisen perään tarkistus, että osutaanko ukkospilveen. Jos osutaan niin laitetaan skripti odottamaan tietyn ajan, jolloin hiiren liikuttaminen ei siirrä pelihahmoa.
Pelihahmon tulisi nyt siis näyttää tältä:
Testaa peliäsi ja kokeile millä numeroarvoilla peliä on mukavin pelata.
Peliin voisi lisätä myös ajastuksen, jonka perusteella sitten eri pelaajien saatuja pistemääriä voisi vertailla.
Ajastuksen voisi saada helposti odota ja pysäytä skripti toiminnoilla.