5. Pelihahmojen ohjelmoiminen – Event sheet
Näppäimistön ohjelmointi
Haluamme luoda toiminnon kun painetaan a-kirjain, niin sininen suorakulmio liikkuu ylös ja kun painetaan z-kirjain, niin sininen suorakulmio liikkuu alas. Vastaavasti kun painetaan nuoli ylös, niin punainen suorakulmio liikkuu ylös ja kun painetaan nuoli alas, niin punainen suorakulmio liikkuu alas. Mennään Event sheet – välihdelle.
- Paina Add event, valitse Keyboard ja paina Next.
- Valitse komento Keyboard: Key is down (Kun näppäin on pohjassa) ja paina Next.
- Paina <click to choose>, jonka jälkeen paina näppäimistöltä a-kirjainta ja kirjain: A ilmestyy ikkunaan. Kuittaa OK:lla. Paina lopuksi Done.
- Olemme nyt luoneet ehdon (Kun a-kirjainta on painettu), seuraavaksi lisäämme toiminnon. Napsauta hiirellä Add action tekstiä.
- Valitse Sininen ja paina Next.
- Valitse nyt ryhmästä 8Direction: Simulate control ja paina Next.
- Laita Control asetuksen arvoksi: Right ja paina Done.
Olemme nyt luoneet seuraavan toiminnon
Eli kun painetaan näppäimistöltä a-kirjainta, niin sininen suorakulmio liikkuu ylös.
Samalla tavalla luo seuraavat lauseet:
- Kun painetaan näppäimistöltä z-kirjain pohjaan, niin sininen suorakulmio liikkuu alas.
- Kun painetaan näppäimistöltä nuoli ylös pohjaan, niin punainen suorakulmio liikkuu ylös.
- Kun painetaan näppäimistöltä nuoli alas pohjaan, niin punainen suorakulmio liikkuu alas.
Testaa näppäimistön toimivuus painamalla Run layout.
Globaalit muuttujat
Peli tarvitsee seuraavia muuttujia.
Luodaan globaalit muuttujat Evet sheet - välilehdellä. Paina hiiren oikeaa painiketta ja valitse avautuvasta valikosta: Add global variable.
Anna Pelaaja1 muuttujalle alkuarvo (Initial value) 0, Pelaaja2 muuttujalle alkuarvo 0, nopeus muuttujalle alkuarvo 1, tila muuttujalle alkuarvo 0. Kun olet lisännyt kaikki muuttujat, niin sinun pitäisi nähdä seuraavaa.
Pelin tila
Kun peli on käynnissä (tila = 1), niin pallo silloin etenee eteenpäin. Kun peli on alussa (tila = 0), niin tee seuraavat toiminnot: Poista nykyinen pallo, arvo uusi kulma väliltä 0..360, aseta pallo ikkunan keskelle pisteeseen (400,300), tee pallosta klooni (uusi pallo), aseta pallon nopeus = 1 ja muuta pelin tila arvoon 1. Tämä toiminto tehdään seuraavasti:
Ampuminen hiiren avulla tapahtuu seuraavalla toiminnolla.
- Paina Add event.
- Valitse System ja paina Next.
- Valitse toiminto: Compare variable, joka löytyy ryhmästä Global & local variable ja paina Next.
- Laita asetukset: Variable: tila, Comparsion: = Equal to, Value: 0 ja paina Done.
- Paina Add action.
- Valitse Pallo ja paina Next.
- Valitse kohdasta Misc toiminto: Destroy ja paina Done.
- Paina Add action uudestaan.
- Valitse Pallo ja paina Next.
- Valitse kohdasta Angle toiminto: Set angle.
- Laita kohtaan Angle: random(0,360) ja paina Done.
- Paina Add action uudestaan.
- Valitse Pallo ja paina Next.
- Valitse kohdasta Size & Position toiminto: Set position ja paina Next.
- Laita kohtaan X: 400 ja kohtaan Y: 300 ja paina Done.
- Paina Add action uudestaan.
- Valitse Pallo ja paina Next.
- Valitse kohdasta Misc toiminto: Spawn another object ja paina Next.
- Napsauta hiirellä kohtaa <click to choose> ja valitse Pallo ja paina OK. Lopuksi kuittaa valinta painamalla Done.
- Paina Add action uudestaan.
- Valitse System ja paina Next.
- Valitse kohdasta Global & local variables toiminto: Set value ja paina Next.
- Laita seuraavat asetukset: Variable: nopeus, Value: 1. (Jos pallo liikkuu alussa liian hitaasti, niin laita silloin arvoksi 2 tai 3). Kuittaa valinnat painamalla Done.
- Paina Add action uudestaan.
- Valitse System ja paina Next.
- Valitse kohdasta Global & local variables toiminto: Set value ja paina Next.
- Laita seuraavat asetukset: Variable: tila, Value: 1. Kuittaa valinnat painamalla Done.
Olemme nyt luoneet seuraavan komennon.
Tämä komento suoritetaan vain kun peli alkaa alusta. Tehdään seuraavaksi ehto, kun peli on käynnissä
(tila = 1), niin liikuta palloa eteenpäin.
- Paina Add event.
- Valitse System ja paina Next.
- Valitse toiminto: Compare variable, joka löytyy ryhmästä Global & local variable ja paina Next.
- Laita asetukset: Variable: tila, Comparsion: = Equal to, Value: 1 ja paina Done.
- Paina Add action.
- Valitse Pallo ja paina Next.
- Valitse kohdasta Size & Position toiminto: Move forward ja paina Next.
- Laita kohtaan Distance teksti: nopeus eli pallon nopeus määräytyy muuttujan nopeus arvon, mukaan. Koska alussa nopeus muuttujan arvo on 1, niin pallo liikkuu alussa nopeudella 1. Kuittaa valinta painamalla Done.
Eli kun peli on käynnissä, niin pallo liikkuu eteenpäin. Pallon pitäisi nyt liikkua. Seuraavaksi teemme ehdot kuinka pallon törmäykset käsitellään. Pallo voi törmätä yläreunaan, alareunaan, siniseen suorakulmioon, ja punaiseen suorakulmioon. Kaikissa näissä tapauksissa arvotaan uusi kulma. Lisäksi jos pallo törmää suorakulmioon, niin kasvatetaan nopeus-muuttujan arvoa 0.5:llä. Pallo voi myös törmätä vasempaan tai oikeaan reunaan, silloin anna pelaajalle piste ja muuta pelin tila arvoon 0 eli peli alkaa tällöin alusta.
Tehdään ensin ehto, että jos pallo törmää siniseen suorakulmioon, niin arvo uusi kulma väliltä -45°…45°.
- Paina Add event.
- Valitse Pallo ja paina Next.
- Valitse toiminto: On collision with another object, joka löytyy ryhmästä Collisions ja paina Next.
- Napsauta kohtaa <click to choose> ja valitse sininen (suorakulmio). Kuittaa valinta painamalla Done.
- Paina Add action.
- Valitse Pallo ja paina Next.
- Valitse kohdasta Angle toiminto: Set angle ja paina Next.
- Kirjoita kohtaan Angle: random(-45,45) ja paina Done.
- Paina Add action uudestaan.
- Valitse System ja paina Next.
- Valitse kohdasta Global & local variables toiminto: Add to ja paina Next.
- Laita asetukset: Varible: nopeus, Value: 0.5 ja paina Done.
Olemme nyt luoneet seuraavan toiminnon.
Tee samalla tavalla myös toiminto kun pallo törmää punaisen suorakulmion kanssa. Ainut ero on se, että kulma arvotaan väliltä 135,…,225 eli arpomiskomento on tällöin: random(125,225). Lopputuloksen pitäisi näyttää tältä.
Myös törmäykset ylös eli pallon ja yläpalkin kanssa menee muuten samalla tavalla, paitsi että kulma on tällöin välillä 45…135. Nopeuden lisäystä ei silloin välttämättä tarvitse laittaa (edellä kohdat: 9. - 12. jäävät pois). Lopputulos on seuraavanlainen.
Lisätään vielä törmäys ehto alas eli pallon ja alapalkin kanssa. Uusi arvottu kulma on tällöin välillä 225…315. Lopputulos on nyt seuraavanlainen.
Vielä puuttuu pari törmäys ehtoa eli pallon törmäys vasemmalla ja oikealla olevien palkkien kanssa. Aloitetaan vasemmassa reunassa olevasta palkista. Tehdään seuraavasti.
- Paina Add event.
- Valitse Pallo ja paina Next.
- Valitse toiminto: On collision with another object, joka löytyy ryhmästä Collisions ja paina Next.
- Napsauta kohtaa <click to choose> ja valitse Kuittaa valinta painamalla Done.
- Paina Add action.
- Valitse System ja paina Next.
- Valitse kohdasta Global & local variables toiminto: Set value ja paina Next.
- Laita seuraavat asetukset: Variable: tila, Value: 0 ja paina Done.
- Paina Add action uudestaan.
- Valitse System ja paina Next.
- Valitse kohdasta Global & local variables toiminto: Add to ja paina Next.
- Laita asetukset: Varible: pelaaja2, Value: 1 ja paina Done
Lopputulos on seuraavanlainen.
Eli kun pallo osuus vasempaan palkkiin, niin aseta pelin tila arvoon 0 (= peli alkaa alusta) ja lisää pelaajalle 2 yksi piste.
Vastaavalla tavalla tee ehto, kun pallo osuu oikeaan palkkiin, niin aseta pelin tila arvoon 0 ja anna pelaajalle 1 yksi piste. Lopputuloksen pitäisi näyttää nyt tältä.
Pelin pitäisi jo toimia nyt oikein. Lisätään vielä tulostus, joka kertoo pisteet. Lisätään seuraavaksi kaksi Text- objektia pelikenttään kaksoisnapsauttamalla.
Valitse Text ja paina Insert.
Lopputuloksen pitäisi näyttää tältä. Voit kasvattaa fontin kokoa asetuksissa: Properties | Font.
Mene seuraavaksi Event Sheet - välilehdelle ja lisää sinne seuraava koodi.
- Paina Add Event.
- Valitse System ja paina Next.
- Valitse Every tick ja paina Done.
- Paina Add action.
- Valitse Text ja paina Next.
- Valitse kohdasta Text kohta: Set text ja paina Next.
- Kirjoita kohtaan Text: ”Pelaaja 1,pisteet: ”&Pelaaja1 ja paina Done.
Lopputulos näyttää tältä.
Samalla tavalla tee toiseen tekstikenttään samanlainen toiminto. Tulostuskomento on tällöin muotoa.
Lopputulos on nyt muotoa.
Kun ajat ohjelman, niin lopputuloksen pitäisi näyttää tältä (jos teksti ei näy kokonaan, niin suurenna teksti-laatikkoa tarvittaessa).
Kuten huomasit, niin voit kirjoittaa haluamasi tekstin lainausmerkkien sisään. Muuttujat kirjoitetaan ilman lainausmerkkejä. Tekstin ja muuttujan välissä käytetään &- merkkiä erottimena.
Peli on nyt valmis. Voit vielä lisätä peliin lopetusehdot, jossa verrataan muuttujan arvoja (Compare variable). Kun ehto on tosi, niin silloin mennään uuteen pelikenttään (Go to Layout). Ensin sinun pitää perustaa kaksi uutta pelikenttää Projects-ikkunassa (hiiren oikea painike ja komento : Add layout: voitto1 ja voitto2. (Kertaa se Zombie-pelistä). Esimerkiksi ehto voisi olla seuraavanlainen: Jos pelaaja1-muuttujan arvo on suurempi kuin 9, niin mene voitto1-pelikenttään. Vastaavasti, Jos pelaaja2-muuttujan arvo on suurempi kuin 9, niin mene voitto2-pelikenttään.Komento tehdään seuraavasti.
- Paina Add event.
- Valitse System ja paina Next.
- Valitse kohdasta Global & local variables komento: Compare variable ja paina Next.
- Laita asetukset: Varible: Pelaaja 1, Comparison: > Greater than, Value 9 ja paina Done.
- Paina Add action.
- Valitse System ja paina Next.
- Valitse kohdasta General toiminto: Go to layout ja paina Next.
- Laita asetukset: Layout: Voitto 1.