Rämpytysralli. Pelikehys sisältää GameObject luokan, Scene luokan, SceneManager luokan, InputListener luokan, StaticImage luokan

Samankaltaiset tiedostot
Jypelin käyttöohjeet» Ruutukentän luominen

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

GEOS 1. Ilmastodiagrammi Libre Office Calc ohjelmalla

Testivetoinen ohjelmistokehitys

KODU. Lumijoen peruskoulu

Kodu Ohjeet. Jos päivityksiä ei löydy niin ohjelma alkaa latautumaan normaalisti.

Osa 7: Hahmojen ohjelmointi ja hienosäätö

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.)

LibreOffice Writer perusteita

Google Sites: sivun muokkaaminen (esim. tekstin, kuvien, linkkien, tiedostojen, videoiden ym. lisääminen)

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Mainosankkuri.fi-palvelun käyttöohjeita

JUnit ja EasyMock (TilaustenKäsittely)

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Pikaohjeita OneNote OPS:in käyttäjille

GeoGebra-harjoituksia malu-opettajille

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen

Pelaajan tietojen lisääminen

Transkribuksen pikaopas

Scratch ohjeita. Perusteet

Kirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta.

Tietosuoja-portaali. päivittäjän ohje

Liveseuranta (1/9) Suomen Palloliiton Tampereen piiri

Epooqin perusominaisuudet

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

KOTISIVUJEN KÄYTTÖOHJE ULVILAN PESÄ-VEIKOT RY

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Eclipse & WindowBuilder

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

BaseMidlet. KÄYTTÖOHJE v. 1.00

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

VSP webmail palvelun ka yttö öhje

Nettisivujen Päivitysohje

Jypelin käyttöohjeet» Ruutukentän luominen

Purentafysiologinen status

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

H5P-työkalut Moodlessa

SIVIILEIHIN KOHDISTUNEET KONFLIKTIT AFRIKASSA. Matias Järvinen 2019

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

1. Taustatietoa näppäimistönkuuntelusta

FOTONETTI BOOK CREATOR

Helsingin yliopisto WebOodi 1 Opiskelijarekisteri Versio 3.2. Tenttityökalu

UpdateIT 2010: Editorin käyttöohje

1. ASIAKKAAN OHJEET Varauksen tekeminen Käyttäjätunnuksen luominen Varauksen peruminen... 4

Kopio saamasi pelaajatiedosto (.plr) Game01-alikansioon. Valitse pelissä Continue Campaign.

AUTOCAD-TULOSTUSOHJE. Tällä ohjeella selitetään Autocadin mittakaavatulostuksen perusasiat (mallin mittayksikkönä millimetrit)

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE

NAP: Merenkulun reitti- ja aikataulueditorin käyttöohje

Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

HP ProBook 430 G5 kannettavien käyttöönotto

Uuden lukuvuoden aloitus ViLLEssa

KTKO104 Demo 3. Marika Peltonen

OpenOffice.org Impress 3.1.0

TOOLS KÄYTTÖOHJEET OPETTAJALLE

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

1. HARJOITUS harjoitus3_korjaus.doc

Pikaopas kotisivujen tekoon

Integroidun maksupäätteen lisääminen käyttöönotossa

Labyrintti. Pelihahmon toiminta. Piirrä pelihahmo (älä piirrä esim. sivusta, ettei hahmon tarvitse

CEM DT-3353 Pihtimittari

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

HAKUKONEMARKKINOINTI KOTISIVUJEN PÄIVITYSOHJE

Moodle-alueen muokkaaminen

Fixcom Webmail ohje. Allekirjoitus. Voit lisätä yhden tai useamman allekirjoituksen.

Office 365 palvelujen käyttöohje Sisällys

KÄYTTÖOHJE. Servia. S solutions

M-FILES JÄSENREKISTERIN KÄYTTÖOHJE

Eclipse, SVN ja HelloWorld

E-RESULTS LITE -OHJEET

EDMODO. -oppimisympäristö opettajille ja oppilaille KOONNUT: MIKA KURVINEN KANNUKSEN LUKIO

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat

OKLV120 Demo 7. Marika Peltonen

Yrjö Määttänen Kokemuksia SuLVInetin käytön aloituksen

TEHTÄVÄ 1.1 RATKAISUOHJEET

Sukelluskeräily. Pelihahmon liikuttaminen. Aarre ja pisteet

TIE = JOTU. VH5 - MagicDraw

Google-dokumentit. Opetusteknologiakeskus Mediamylly

Opetussuunnitteluprosessi WebOodissa - OpasOodi

SUOMI LIIKKUU KOULULIIKUNTATAPAHTUMIEN ILMOITTAUTUMISJÄRJESTELMÄ

Muistitikun liittäminen tietokoneeseen

Ohjeita kirjan tekemiseen

Harjoitus Particle View

Artikkelin lisääminen

Uutiskirjesovelluksen käyttöohje

Geni - pikaopas. Kuvalliset pikaohjeet, jotta pääset aloittamaan Geni -sukupuusi rakentamisen.

Ohjeet asiakirjan lisäämiseen arkistoon

Eclipse ja JUnit-ohjelmoijatestit

Uuden lukuvuoden aloitus ViLLEssa

Uuden Peda.netin käyttöönotto

Uuden työtilan luonti

Viva-16. Käyttöohje Veikko Nokkala Suomen Videovalvonta.com

Moodle-oppimisympäristö

Ryhmänkerääjän ABC - pidä ryhmäsi ilmoittautumiset ja huonejako kätevästi hallussa

Päänäkymä Opiskelijan ohjeet Kurssin suorittaminen Opettajan ohjeet kurssin teko

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Ohjeistus yhdistysten internetpäivittäjille

Transkriptio:

Materiaalit on lisensoitu Creative Commons BY NC SA lisenssillä, eli materiaalin levittäminen ja muokkaaminen on sallittu, kunhan tekijöiden nimet säilyvät mukana ja jatkoversiot julkaistaan samalla linsenssillä. Kaupallinen käyttö kielletty. Alkuperäiset tekijät (2015): Matti Tahvanainen ja Tero Keinänen Rämpytysralli Mitä projektipohja sisältää ja miten avaat sen Alfaversiossa oleva Masan ja Kenkun tekemä Libgdx pelikehys (nimi ideoita otetaan vastaan), minkä avulla on tarkoitus pystyä aloittamaan kätevästi 2D projektit. Pohja löytyy osoitteesta: http://www.cs.helsinki.fi/group/linkki/materiaali/kerho/ohjkevat_2015/rampytysralli.zip Pura zip latauksen jälkeen (oikea korva + Extract here ). Avaa NetBeans ja File valikosta Open Project. Valitse projektiksi purkamastasi zip:stä löytyvä rampytysralli tyhj /Rampytysralli ja klikkaa Open Project. Näkymän Projects välilehdelle ilmestyy Ralli Parent. Saat projektin käyttövalmiiksi kaksoisklikkaamalla Modules kohdasta löytyvää Rampytysralli :a. Edellisen kohdan ohjeiden avulla sinulle pitäisi rakentua Projects näkymään uusi, todellinen Rampytysralli projekti. Klikkaa sitä vielä hiiren oikealla korvalla ja etsi Clean and Build, jotta projekti kasaa vielä kokoon sen tarvitsemat muualta löytyvät kirjastot. Tämä voi kestää hetken. Pelikehys sisältää GameObject luokan, Scene luokan, SceneManager luokan, InputListener luokan, StaticImage luokan Pelikehyksen idea Kaikki pelin hahmot ja kuvat ovat GameObjecteja. Kaikki pelin kentät/tasot/valikot yms. ovat Scenejä (suom. kohtaus/tapahtumapaikka). SceneManager tallentaa kaikki Scenet listaan, jolloin Scenestä voi mennä toiseen vaivattomasti. Valikon teko Aloitetaan pelin teko luomalla siihen alkuvalikko. Pelin kaikki kentät, tasot tai valikot laajentavat luokan Scene toiminnallisuutta. 1

1. Avaa luokka MenuScene. (Löytyy kohdasta Rampytysralli > Source Packages > rampytysralli > ) Luokka laajentaa (extends) luokkaa Scene. 2. Lisätään MenuScenelle taustakuva initialize() metodissa eli alustettaessa. Kaikki paikallaan jököttävät muuttumattomat kuvat ovat tyypiltään StaticImage, joka löytyy valmiina pelikehyksestä. Uuden kuvan tekeminen onnistuu seuraavalla tavalla: //Tallennetaantaustakuvamuuttujaan SpritebackgroundImg=newSprite(newTexture( assets/bg.png )); //TehdäänStaticImage,jokasaakoordinaatistonpisteen //parametrina,sekäylläluodunkuvan StaticImagebackground=newStaticImage(kuvan_x-koordinaatti, kuvan_y-koordinaatti,backgroundimg); Libgdx:ssä koordinaatiston origo (kohta (0,0)) sijaitsee ikkunan vasemmassa alakulmassa. Kaikki hahmot myös piirretään alkaen vasemmasta alakulmasta. Täytä kohdat kuvan_x koordinaatti, sekä kuvan_y koordinaatti oikeilla arvoilla. 3. Jos Sprite ja/tai StaticImage alleviivautuu punaisella niin klikkaa rivin alussa näkyvää hehkulamppua ja lisää ehdotettu kirjasto: Add import for 4. Seuraavaksi laitamme kuvan näkyviin peli ikkunaan. Scene luokasta löytyy valmiina lista kaikille yhden Scenen sisältämille hahmoille. Listaan voi lisätä hahmon kutsumalla MenuScenessä initialize() metodissa adddrawable(background); Koska Scene luokka huolehtii hahmojen piirtämisestä, taustakuvan pitäisi ilmestyä peli ikkunaan kuin taikaiskusta kun klikkaat vihreästä play napista ohjelman käyntiin! Jos NetBeans kysyy minkä pääluokan haluat ajaa niin valitse rampytysralli.gameinitializer. 5. Lisää ylläolevan esimerkin mukaisesti MenuSceneen otsikko kuvana. Huomaa, että sinun täytyy nyt muuttaa luotavan Sprite muuttujan ja StaticImage muuttujan nimi, ettei otsikon kuva tallennu taustakuvan tilalle. Päätä myös mihin kohtaan ikkunaa haluat otsikon ilmestyvän. Otsikko löytyy tiedostosta assets/topic.png Valikon napit Valikko tarvitsee nappeja, koska ilman nappeja se on vain kuva. MenuScenestä löytyy valmiina lista napeille: privatearraylist<menubutton>buttonlist; Tähän listaan haluamme lisätä valikkomme napit, eli Start napin ja Quit napin. Nappeja voi luoda seuraavalla tavalla: MenuButtonexampleButton=newMenuButton(x-koordinaatti, y-koordinaatti,napin_kuva_vakio,napin_kuva_aktiivinen, napin_teksti ); 2

Napin vakio kuva piirretään silloin, kun nappia ei osoiteta hiirellä. Vastaavasti napin aktiivinen kuva piirretään silloin, kun nappia osoitetaan. MenuButtonille annettavien kuvien tulee olla Spritejä. Huom! Pelipohjassa tulee valmiina MenuButton luokka. Jos haluat harjoituksen vuoksi toteuttaa osan luokasta itse, kysy ohjaajalta apua! Nappeja voi lisätä buttonlistiin seuraavalla tavalla: buttonlist.add(examplebutton); 1. Luo MenuScenen initialize() metodiin Start nappi ja Quit nappi ylläolevan esimerkin mukaan. Jos et halua piirtää omia kuvia napeille, voit käyttää projektin mukana tulevia valmiita kuvia. Valmiit kuvat ovat: assets/buttonstart.png (start napin vakiokuva) assets/buttonstarthover.png (start napin aktiivikuva) assets/buttonquit.png (quit napin vakiokuva) sekä assets/buttonquithover.png (quit napin vakiokuva). a. Luo napin kuvista Sprite hahmot b. Luo MenuButton, huom! aseta napin_teksti:ksi START tai QUIT, jotta napit myöhemmin toimivat 2. Lisää luomasi napit buttonlistiin ylläolevan esimerkin mukaisesti. 3. Anna lopuksi Scene luokalle tieto piirrettävistä napeista kutsumalla initialize() metodin lopussa addbuttons(buttonlist); 4. Napit eivät vielä tunnista hiiren kosketusta tai klikkausta. Poista MenuScenen checkinputs() metodista rivien alusta kommentit. Kommentit näyttävät tältä: // Emme tässä pelissä toteuta itse nappien klikkaamista, koska toteutus on pelikehyksessä vielä keskeneräinen. Tutki ja koita ymmärtää kuitenkin samalla, kun poistat kommentteja, miten nappien painaminen on toteutettu. Ralli alkaa Luodaan seuraavaksi itse pelikenttä ja laitetaan autot liikkumaan käskystä! 1. Ensin tarvitaan uusi Scene, johon siirrytään kun päävalikosta on napsautettu aloitusnappia. MenuScene löytyi valmiina, mutta tehdään tällä kertaa luokka itse! Jos osaat jo, tee näin: luo rampytysralli pakettiin uusi luokka nimeltä RallyScene ja laita se perimään/laajentamaan (extends) luokkaa Scene Jos et niin katso eteenpäin ohjeita: 3

a. Uusi luokka luodaan klikkaamalla rampytysralli pakettia oikealla napilla ja valitsemalla valikosta New > Java Class b. Vaihda luokan nimeksi ( Class Name ) RallyScene ja paina Finish. c. Laitetaan RallyScene perimään luokka Scene. Kun luokka perii jonkun toisen luokan, saa se perimänsä luokan ominaisuudet. Scene osaa tehdä paljon valmiiksi, esimerkiksi piirtää sille annetut GameObjectit. Lisää siis RallyScene luokan määrittelyyn extendsscene. Mallia voit katsoa esimerkiksi MenuScene luokan määrittelystä. d. Nyt Scene sana on alleviivattu punaisella virheen merkiksi. Koodi ei käänny, koska Java ei tiedä mistä etsiä Scene luokkaa! Kerrotaan Javalle mistä Scene löytyy: lisää tiedoston alkuun (ennen publicclassrallyscene alkuista riviä) rivi importlibraries.scene; Toinen tapa lisätä puuttuva import on klikata virheellisen rivin vasemmalla puolella olevaa hehkulampun kuvaa ja valita Add import for libraries.scene e. Nyt Scene löytyy, mutta ei tämä vieläkään kelpaa Javalle. Scene vaatii, että siitä perivä luokka toteuttaa muutaman metodin. Klikkaa rivin vasemmalla puolella olevaa hehkulamppua ja valitse Implement all abstract methods. f. Poista vielä metodien sisältä, eli aaltosulkeiden { ja } välistä automaattisesti luotu sisältö (rivit alkavat thrownew ) 4

2. SceneManager tarvitsee tiedon uudesta RallyScenestämme, koska muuten ohjelma ei ymmärrä, että siihen lisättyä uutta luokkaa pitäisi myös käyttää jossain. Etsi MyGame luokasta metodi create(). Siellä pitäisi olla seuraavanlaiset rivit: scenemanager=newscenemanager(); MenuScenemenu=newMenuScene(); menu.initialize(); scenemanager.addscene(menu); Ensimmäisellä rivillä alustamme scenemanagerin. Toisella rivillä käskemme luomaan MenuScene olion (MenuSceneen kirjoitettujen määritelmien mukaisesti). Kolmannella rivillä kutsumme menun initialize() metodia, jonka toteutimme aiemmin. Lopuksi lisäämme scenemanagerille tiedon menusta. Toteuta näiden rivien alle vastaavalla tavalla RallyScenen alustus, kutsu luodun olion initialize() metodia, sekä lisää scenemanagerille tieto uudesta Scenestä. 3. Lisätään taustakuva myös peliruutuun a. Tämä tapahtuu täysin samalla tavalla kuin taustan lisääminen valikkoon. Vilkaise Valikon teko osion kohtia 2 4! 4. Luodaan Player luokka a. Tämäkin tapahtuu kuten aikaisemmin RallyScene luokan luominen. Katso siis ylempää vinkkiä kohdista 1 a ja 1 b! Luokan nimeksi tulee siis Player b. Player ei kuitenkaan peri (extends) Scene luokkaa, vaan GameObject luokan. GameObject osaa mm. piirtää sille annetun kuvan automaattisesti oikeaan paikkaan. Voit kerrata ylempää miten periminen tapahtuu (1c). c. Playerin tapauksessa perimisestä aiheutuu vähän erilaisia seurauksia, sillä Player luokka tarvitseekin konstruktorin, joka suoritetaan aina kun uusi pelaaja luodaan. Playerille riittää automaattisesti luotu konstruktori, jonka saa tehtyä klikkaamalla hehkulamppua ja valitsemalla Add Constructor 5. Olemme luoneet reseptin miten tehdä yksi pelaaja. Yhden reseptin avulla voi toki luoda useita kopioita ja luodaankin nyt kaksi pelaajaa RallyScene luokkaan a. Ensin esitellään muuttujat, joihin Player luokasta tehdyt oliot laitetaan muistiin. Haluamme että muuttujiin pääsee käsiksi koko RallyScene luokassa, joten muuttujat esitellään luokan määrittelyn jälkeen. Muuttujien esittelyn pitäisi 5

näyttää suunnilleen tältä: b. Seuraavaksi luodaan oliot, jotka sijoitetaan player1 ja player2 muuttujiin. Lisää initialize metodin loppuun koodi, jolla luodaan player1: player1=newplayer(20,520,car1image); c. car1image antaa nyt virheen. Korvataan se kuvanlatauskoodilla. Kuva ladataan samalla tavalla kuin aiemminkin tehtiin Spritejä. Maaginen koodi on muotoa newsprite(newtexture("assets/ferrari.png")). Laita se car1imagen paikalle ja virheen pitäisi hävitä. Näyttää aika samanlaiselta kuin new Sprite(newTexture("assets/bg.png"))! d. Seuraavaksi vielä kerrotaan Scenelle, että ensimmäinen pelaaja pitäisi piirtää. Tämäkin tapahtuu samalla tavalla kuin taustan kanssa, eli adddrawable metodia kutsuen! Voit kerrata tämän Valikon teko otsikon alta kohdasta 3. e. Toisen pelaajan luominen tapahtuu lähes samalla tavalla. Toista äsken tehty koodi, mutta vaihda pelaaja1 muotoon pelaaja2. Kannattaa myös vaihtaa toisen pelaajan y koordinaattia, muuten pelaajat piirretään päällekkäin. Y koordinaatti on esimerkissä 520, kokeile itse millä saat toisen pelaajan oikeaan kohtaan. Muista myös lisätä player2 piirrettävien hahmojen joukkoon! Pelaajat liikkumaan Haluamme muokata hieman aiemmin tekemäämme Player luokkaa. Lisätään Playerille näppäimet: (lisättävä teksti on mustalla) packagerampytysralli; importcom.badlogic.gdx.gdx; importcom.badlogic.gdx.graphics.g2d.sprite; importlibraries.gameobject; 6

publicclassplayerextendsgameobject{ privateintleftbutton; privateintrightbutton; privatebooleanleftpressed=false; publicplayer(floatx,floaty,spriteimg,intleftbutton,int rightbutton ){ super(x,y,img); this.leftbutton=leftbutton; this.rightbutton=rightbutton; } @Override publicvoidmove(){ } } Näppäimen painallusta voi tarkistaa käyttämällä Libgdx:n tarjoamaa painalluksen tarkistusta: if(gdx.input.iskeypressed(leftbutton)){ //tännekooodia } 1. Muuta luotavaa Player hahmoa siten, että se tietää oman vasemman ja oikean näppäimensä. Lisää RallyScene luokassa uuden pelaajan luonnin yhteyteen (initialize() metodi) pelaajalle näppäimet esimerkiksi näin: Playerfirst=newPlayer(x-koordinaatti,y-koordinaatti, pelaajankuva,keys.a,keys.d); NetBeans alleviivaa Keys sanat, klikkaa hehkulamppua rivin alussa ja Add import for com.badlogic.gdx.input.keys 2. Lisää myös toiselle Player hahmolle näppäimet. 3. Lisää Player luokan move() metodiin tarkistus, onko Playerin vasenta näppäintä painettu (tähän oli esimerkki äsken). Jos näin on, aseta leftpressed arvoon true. 4. Lisää Player luokan move() metodiin tarkistus edellisen tarkistuksen jälkeen (ei sisäkkäin), onko Playerin oikeaa näppäintä painettu JA ( ehto && ehto ) onko leftpressed arvossa true (leftpressed==true) JA (&&) vasenta näppäintä ei (! ehto ) ole painettu. Jos näin on, muuta pelaajan x sijaintia seuraavalla tavalla: this.setx(this.getx() + 10); Aseta tämän jälkeen leftpressed arvoon false. Kysy ohjaajalta apua, jos tämä kohta tuntuu vaikealta. 7

5. Nyt Player osaa liikkua jos sitä siltä pyydetään. Mene vielä RallySceneen ja lisää updatescene() metodiin kummallekin autolle komennot testata pitäisikö niiden liikkua: player.move(); Voittoruutu Lisätään peliin vielä uusi Scene, johon siirrytään kun peli loppuu eli toinen pelaajista pääsee oikeaan reunaan. 1. Luodaan taas uusi Scene. Tämä tapahtuu samalla tavalla kuin RallyScenen luonti, mutta valitaan nimeksi VictoryScene. Ohjeet tähän löytyvät Ralli alkaa otsikon alta. Kuvana voit käyttää tätä: assets/victory.png 8