NUORTEN PELIOHJELMOINTI. Jyväskylän yliopisto. Kesä 2010

Koko: px
Aloita esitys sivulta:

Download "NUORTEN PELIOHJELMOINTI. Jyväskylän yliopisto. Kesä 2010"

Transkriptio

1 NUORTEN PELIOHJELMOINTI Jyväskylän yliopisto Kesä 2010 Antti-Jussi Lakanen, Tero Jäntti, Vesa Lappalainen, Juho Tammela

2 DreamSpark-koodi Visual Studio Professional ohjelmiston lataamista varten: Ohjelman voit ladata osoitteesta Tarvitset yllä olevan koodin ohjelman lataamiseen. Tarkemmat asennusohjeet tämän vihkosen osiossa Työkalut tai kurssin WWW-sivulla 1

3 Johdanto 2

4 TERVETULOA PELIOHJELMOINNIN MAAILMAAN Olet astumassa sisälle peliohjelmoinnin ihmeelliseen maailmaan. Tämä vihkonen on tarkoitettu käytettäväksi peliohjelmointikurssin tukimateriaalina, ja se sisältää jonkin verran myös sellaista asiaa, mitä ei kurssilla käsitellä. Ohjeen aiheet etenevät siinä järjestyksessä, kuin ne kurssilla opetetaan: 1. Työkalut 2. Ensimmäisen pelin tekeminen 3. Algoritminen ajattelu ja algoritmin suunnittelu 4. Aliohjelma 5. Ehtolause ja silmukka 6. Pelisuunnittelu Kunkin osion päätteeksi löytyy kurssilla yhdessä käsiteltäviä tehtäviä. Mukana on myös lisätehtäviä, joita käsitellään kurssilla mikäli aikaa jää. Voit tietenkin tehdä omaan tahtiin myös näitä lisätehtäviä, ja pyytää ohjaajilta apua niiden ratkaisussa. Tietoa kurssista Peliohjelmointi on kuin suklaalevy. Päältä kova, mutta sisältä makea. Tero Jäntti, koodaaja Kurssi järjestettiin ensimmäisen kerran kesällä 2009 ja suuren suosion saattelemana niitä järjestetään kesällä 2010 ainakin kolme kappaletta ja enemmänkin, jos tulijoita riittää. Kirjoitushetkellä (toukokuu 2010) ilmoittautuneita tulevan kesän kursseille on noin 90 kappaletta. Yhteystiedot Vastaamme mielellämme kysymyksiisi. Tavoitat opettajat ja ohjaajat yhteiseltä sähköpostilistalta. Ohjaajien sähköpostilista (viesti ei näy muille kurssilaisille): Kurssin oppilaiden sähköpostilista (viesti näkyy kurssilaisille ja ohjaajille): Opettaja: Antti-Jussi Lakanen, p Järjestäjä: Tietotekniikan laitos, vastuuhenkilö Lehtori Vesa Lappalainen, p Kurssin WWW-sivu: 3

5 Kurssin aikataulu Kurssi alkaa päivittäin kello 9:00 ja päättyy kello 15:00. Aamu alkaa aina lyhyellä oppitunnilla luentosalissa Delta, minkä jälkeen siirrytään tekemään harjoituksia tietokoneluokkiin. Ruokatauko pidetään noin klo 11:30 12:15, ruokailu tapahtuu opiskelijaravintola Piatossa (niin ikään Agorassa) tai omin eväin (käytössä mm. mikro, jääkaappi ja vedenkeitin). Aamupäivällä ja iltapäivällä on lisäksi yhteensä pari-kolme lyhyttä taukoa PV PAIKKA AIHEET Ma 9:00 Delta, sitten Lakes/Delta Tutustuminen työkaluihin ja alkuvalmistelut, ensiohjelmointia, suunnittelu ja algoritmit Ti 9:00 Delta, sitten Lakes/Delta Aliohjelma ja ohjausrakenteet (ehtolauseet, silmukat), oliot, valmiisiin pelimalleihin tutustuminen, oman pelin suunnittelu. Ke 9:00 Delta, sitten Lakes/Delta Oman pelin suunnittelu, oman pelin tekeminen To 9:00 Delta, sitten Lakes/Delta Oman pelin tekeminen Pe 9:00 Delta, sitten Lakes/Delta Oman pelin viimeistely, pelien testaus ja pelin esittelytilaisuus, sekä parhaan pelin äänestäminen ja voittajien palkitseminen 4

6 Näin löydät luokkiin 5

7 Mitä on ohjelmointi Ohjelmointi tarkoittaa periaatteessa toimintaohjeiden antamista jonkin asian suorittamista varten. Toimintaa, jota voisi nimittää ohjelmoinniksi, tapahtuu elämässämme päivittäin. Ajo-ohjeiden antaminen puhelimessa voisi olla yksi esimerkki tällaisesta tilanteesta. Jos kotisi sijainti ei ole kaverillesi ennestään tuttu, sinun on annettava hänelle tarkat ohjeet ja komennot, joiden avulla hän löytää perille. Antamiasi ohjeita noudattamalla hän (toivottavasti) löytää perille. Toinen esimerkki on kakun valmistukseen kirjoitettu ohje: Sokerikakku 6 munaa 1,5 dl sokeria 1,5 dl jauhoja 1,5 tl leivinjauhetta 1. Vatkaa sokeri ja munat vaahdoksi. 2. Sekoita jauhot ja leivinjauhe. 3. Sekoita muna-sokerivaahto ja jauhoseos. 4. Paista 45 min 175 C lämpötilassa. Yllä oleva valmistusohje on ilmiselvästi kirjoitettu ihmistä varten, vieläpä sellaista ihmistä, joka tietää leipomisesta melko paljon. Jos sama ohje kirjoitettaisiin ihmiselle, joka ei eläessään ole leiponut mitään, täytyisi huomioida useita leipomiseen liittyviä niksejä: uunin ennakkoon lämmittäminen, vaahdon vatkauksen salat, yms. Tietokoneelle kirjoitettavat ohjeet poikkeavat merkittävästi ihmisille kirjoitetuista ohjeista. Kone ei osaa automaattisesti kysyä neuvoa törmätessään uuteen ja ennalta arvaamattomaan tilanteeseen. Se toimii täsmälleen niiden ohjeiden mukaan, jotka sille on annettu, olivatpa ne sitten miten tyhmiä tahansa. Kone noudattaa saamiaan ohjeita uskollisesti sortumatta ihmisille tyypilliseen luovuuteen. Alkeellista ohjelmointia on tavallaan myös mikroaaltouunin käyttäminen. Uunille annetaan ohjeet siitä, kuinka kauan ja millä teholla sen tulee toimia. Alkeellista ohjelmointia on myös mikroaaltouunin käyttäminen. 6

8 Työkalut 7

9 TYÖKALUT Tässä luvussa käydään lyhyesti läpi kurssilla käytettävät työkalut, ja opastetaan niiden asentaminen, jotta voit itse aloittaa tai jatkaa työskentelyä kotitietokoneellasi esimerkiksi kurssin jälkeen. Visual Studio Professional 2008 Kurssilla käytössä oleva ohjelmointiympäristö eli IDE (eng. Integrated Development Environment) on nimeltään Visual Studio, erityisesti versio 2008 Professional. Ohjelmointiympäristön avulla voi kirjoittaa koodia, kääntää ja ajaa kirjoitetun ohjelman sekä jäljittää virheitä koodista (eli debugata ). Mistä ladataan ja miten asennetaan XNA Game Studio 3.1 Mikä XNA on miksi pitää asentaa. Järjestys: Ensin VS, sitten XNA. Jypeli-kirjasto Projektimallien asentaminen miten löytyvät VS:stä. 8

10 Ensimmäisen pelin tekeminen 9

11 ENSIMMÄISEN PELIN TEKEMINEN Tässä luvussa käydään läpi muutamia ensimmäisen pelin tekemiseen liittyviä asioita. Luvussa esitellään myös lyhyesti muutamia tärkeitä ohjelmoinnin peruskäsitteitä. Visual Studion käynnistäminen Käynnistä Visual Studio 2008 tuplaklikkaamalla työpöydällä olevaa pikakuvaketta tai valitsemalla Start All Programs Microsoft Visual Studio 2008 Microsoft Visual Studio 2008 Jos käytät Visual Studion Express-versiota, valitse sen sijaan Start -> All Programs -> Microsoft Visual C# 2008 Express Edition Jos käynnistät Visual Studion pro-versiota ensimmäistä kertaa, sinulta kysytään minkä ohjelmointiympäristön asetuksia käytetään oletuksena. Koska kurssilla ohjelmoidaan C#- kielellä, valitse seuraavasti: 1. Valitse listasta Visual C# Development Settings 2. Klikkaa Start Visual Studio. 10

12 Projektin luominen Kun Visual Studio on käynnistynyt, tehdään uusi projekti. Projekti on työtila, jossa käsitellään koodia ja peliin liittyviä grafiikka- ja musiikkitiedostoja. Seuraavaksi kerrotaan, miten luodaan uusi projekti peliä varten. Jatkossa pelejä varten teet projektin samaan tapaan, mutta nimeksi voit valita mitä tahansa (mielellään kuitenkin vain englanninkielisiä aakkosia sekä numeroita nimessä) ja voit käyttää muitakin projektimalleja kuin FysiikkaPeli (projektimalleista lisää tuonnempana). Klikkaa Visual Studiossa File New Project... Aukeavassa ikkunassa tee seuraavat vaiheet (Jos käytät Visual Studion Express-versiota, hyppää kohtaan 7): 1. Klikkaa vasemmalla olevasta listasta "Visual C#". 2. Klikkaa vasemmalla olevasta listasta "Jypeli". 3. Valitse oikealla olevasta listasta kohta FysiikkaPeli. 4. Aseta Name-tekstikenttään pelin nimeksi "Pong" (tai muu valitsemasi nimi) 5. Kirjoita Location-kenttään polku C:\MyTemp\tunnus, missä kirjoitat sanan tunnus tilalle oman hakemistosi (mikä haettiin näiden ohjeiden mukaan). Voit myös painaa Browse... -nappia ja etsiä hakemistosi sitä kautta klikkaamalla järjestyksessä My Computer Local Disk (C:) MyTemp tunnus 6. Ota ruksi pois kohdasta "Create directory for solution". 7. Vahvista uuden projektin luominen klikkaamalla OK. 11

13 8. Vain Visual Studio Express-versiolla: Valitse valikosta File Save All Anna tiedot kohtien 5. ja 6. mukaan. Paina lopuksi Save. Ohjelmoinnin aloittaminen Nyt olet valmis aloittamaan ohjelmakoodin kirjoittamisen. Huomaa, että juuri luodussa uudessa projektissa on paljon tiedostoja. Projektin tiedostot näkyvät Visual Studion oikeassa reunassa Solution Explorer -paneelissa. Mikäli Solution Explorer on syystä tai toisesta näkymättömissä, saat sen esiin klikkaamalla valikosta View Solution Explorer tai käyttämällä näppäinoikotietä Ctrl+W, S (eli Ctrl-näppäin alas painettuna näppäile W ja sitten S). Tässä vaiheessa meitä kiinnostaa ainoastaan tiedosto nimeltä Peli.cs, johon tulee C#- ohjelmointikielellä kirjoitettavaa koodia. Tuplaklikkaa tuota tiedostoa, jolloin se aukeaa editoriin muokattavaksi. Voit nyt aloittaa ohjelman kirjoittamisen esimerkiksi kurssin Pong-tutoriaalin mukaan, joka löytyy WWW-osoitteesta 12

14 Tärkeitä apuja ohjelmointiin Perustyypit LUVUT Nimi C#:ssa Suomennos Selitys Esimerkki int Kokonaisluku (eng. integer) Etumerkillinen kokonaisluku. Inttyypin luvulla ei ole desimaaliosaa. int luku = 250; int luku = -5; double Liukuluku (eli desimaaliluku) Luku, jolla voi ilmaista desimaalilukuja jopa 15 desimaalin tarkkuudella. double d = 1.2; double f = ; (huomaa piste, ei pilkku) MERKIT JA MERKKIJONOT char Merkki (eng. character) Char-tyypin muuttujaan voidaan tallentaa (vain) yksi merkki. char c= 'a'; string Merkkijono (eng. string of characters) String-tyyppiseen muuttujaan voidaan tallentaa useita merkkejä kerrallaan, vaikkapa sanoja tai lauseita. string a = "Antti-Jussi"; TOTUUSARVO bool Totuusarvo, tosi tai epätosi (true tai false) Ohjelma vastaa bool-tyyppisellä arvolla esimerkiksi if-lauseisiin: if(5==6) tuottaa falsen. Operaatiot LUKUJEN LASKEMISTA Operaattori Käyttö Selitys = a = b; Sijoitus (b:n arvo sijoitetaan muuttujaan a) + a + b Lasketaan kaksi lukua, a ja b, yhteen. Muista että +-operaattoria voidaan käyttää myös merkkijonojen yhdistämiseen. 13

15 - a - b Vähennyslasku * a * b Kertolasku / a / b Jakolasku. Huom. nollalla ei saa jakaa! % a % b Jakolaskun jakojäännös, esimerkiksi 9 % 2 = 1, ja 14 % 8 = 6. VERTAILUOPERAATTORIT == a == b Yhtäsuuruus!= a!= b Erisuuruus < a < b Pienempi kuin > a > b Suurempi kuin 14

16 Ohjausrakenteet SILMUKAT Nimi C#:ssa for Esimerkki for (int i = 0; i < 100; i++) { } while int i = 0; Pallo p = new Pallo(); Level.Objects.Add(p); EHTOLAUSE while ( i < 100 ) { Pallo p = new Pallo(); Level.Objects.Add( p ); i++; } If/else int i = 50; if(i<50) { } else { // Tee jotain, mikäli luku i on pienempi kuin 50 // Tee jotain muuta, mikäli luku i EI ole pienempi kuin 50 (tässä tapauksessa luku EI ole pienempi kuin 50, eli else-lohko toteutuu, mutta if-lohko ei!) } Tyyppimuunnokset Joskus on tarvetta muuttaa vaikkapa kokonaisluku liukuluvuksi tai merkkijonoksi. Se onnistuu tekemällä seuraavien esimerkkien mukaan. ESIMERKKEJÄ 15

17 int kokonaisluku = 7; double liukuluku = (double)kokonaisluku; String merkkijono = kokonaisluku.tostring(); 16

18 Algoritmit 17

19 ALGORITMINEN AJATTELU JA ALGORITMIN SUUNNITTELU Mikä on algoritmi On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document. You can use these galleries to insert tables, headers, footers, lists, cover pages, and other document building blocks. When you create pictures, charts, or diagrams, they also coordinate with your current document look. You can easily change the formatting of selected text in the document text by choosing a look for the selected text from the Quick Styles gallery on the Home tab. You can also format text directly by using the other controls on the Home tab. Most controls offer a choice of using the look from the current theme or using a format that you specify directly. Miksi algoritmeja pitää suunnitella? Algoritmi on yksikäsitteinen toimenpidesarja. On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document. You can use these galleries to insert tables, headers, footers, lists, cover pages, and other document building blocks. When you create pictures, charts, or diagrams, they also coordinate with your current document look. You can easily change the formatting of selected text in the document text by choosing a look for the selected text from the Quick Styles gallery on the Home tab. You can also format text directly by using the other controls on the Home tab. Most controls offer a choice of using the look from the current theme or using a format that you specify directly. 18

20 Aliohjelmat 19

21 ALIOHJELMAT Asdf Asdf Asdf 20

22 Ehtolause ja silmukka 21

23 EHTOLAUSE JA SILMUKKA If While For 22

24 Pelin suunnittelu 23

25 PELIN SUUNNITTELU Juoni ja tarkoitus Hahmotelma 24