Luku 4: Peliarkkitehtuuri
|
|
- Päivi Laine
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Pelin rakenne Pääsilmukka Tapahtumat Suunnittelumalleja Lähteitä Gregory: Game Engine Architecture McShaffry: Game Coding Complete Witters: The Game loop Timo Kellomäki 2011
2 Pelin rakenne A game is just a real-time database with a pretty front end -Dave Roderick Tyypillisen peliarkkitehtuurin koostumus: Pelimaailman tila Pelilogiikka Näkymä(t) MVC-malli, tai jotain sen tapaista Haitta: sama käsite monessa osassa
3 Pelin rakenne
4 Malli Malli sisältää pelimaailman tilanteen kuvaavat tietorakenteet Vastaa kyselyihin pelin tilasta Tarjoaa funktiot, joilla tilaa voi päivittää Tavoitteena alustariippumattomuus - vain abstrakteja tietorakenteita, ei kosketusta laitteistoon
5 Näkymä Näkymä kysyy mallilta tarvittavat tiedot ja esittää ne pelaajalle sopivassa muodossa Näkymä myös vastaanottaa pelaajan toiminnot ja muuttaa ne tapahtumiksi, joita logiikka osaa käsitellä Näkymä voi olla täysin erilainen paikalliselle ja verkkopelaajalle tai ihmispelaajalle ja AI:lle Ihmispelaajan näkymän tärkeimmät osat grafiikka, äänet, syötteen lukeminen
6 Ohjain Ohjaimen tehtävä on vastaanottaa syöte näkymiltä ja päivittää mallia sen mukaisesti Fysiikka-/dynamiikkaengine huolehtii esineiden liikkeistä ja törmäyksistä Pelilogiikka sisältää kaiken muun maailmaa muuttavan, kuten kenttien, hahmojen ja esineiden luomisen ja tuhoamisen
7 Laitteiston piilotus Pelit ovat yleensä tavallista ohjelmaa läheisemmässä kontaktissa laitteiston kanssa Suurin osa ohjaimen ja näkymän tehtävistä on laitteistoriippumatonta Yhtenä osana ohjainta abstraktiokerros, joka piilottaa laitteiston muulta ohjaimelta Laitteistoon liittyviä tehtäviä esim: kello, säikeet, muistinhallinta, resurssit, verkkoliikenne, alustus ja lopetus
8 Pääohjelma Yksinkertaisimmillaan pelin pääohjelma koostuu kolmesta osasta Alustus Pääsilmukka Lopetus
9 Alustus Alustuskoodi on hyvin riippuvaista käytettävästä alustasta Tyypillisiä toimenpiteitä, jotka täytyy tehdä ennen pääsilmukkaa: resurssien tarkistus: levytila, muisti, syöttölaitteet, prosessorin nopeus asetusten lukeminen tekstuurien, äänten ym. resurssien lataus piirtoikkunan, äänijärjestelmän ym. alustus
10 Lopetus Pelin lopetuksessa täytyy huolehtia siitä, että resurssit vapautetaan asianmukaisesti Äänet, ikkunan tuhoaminen, tiedostojen sulkeminen, muistin vapautus,... Peli voi loppua paitsi normaalin quit-napin kautta, myös esim. pelaajan tappaessa prosessin tai virhetilanteessa Joillakin pelialustoilla ei tarvitse murehtia lopettamisesta; laitteen voi vain bootata
11 Pääsilmukka Useimmat pelit eivät pelkästään odota syötettä, vaan niiden maailma päivittyy itsestään ajan kuluessa Pääsilmukka lukee syötettä, päivittää pelimaailmaa ja esittää maailman tilan näytöllä
12 Pääsilmukka Ruudulla oleva näkymä päivittyy vain silloin, kun se piirretään uudestaan Toisaalta jos maailmaa ei ole päivitetty välissä, saman tilanteen usein piirtäminen ei auta Silmukan kiertonopeus määrää kehysnopeuden (frame rate, FPS) Kierroksen kesto = Δt = 1/FPS sekuntia Karkeasti ottaen tavoitteena FPS
13 1. yritys pääsilmukaksi while notfinished: # päivitys sisältää syötteen lukemisen update() draw() Nyt peliajan kuluminen riippuu laitteistosta Samallakin laitteistolla vaihtelua riippuen pelitilanteesta (esim. hahmojen määrä ruudulla) Idea: rajoitetaan silmukan pyörimisnopeus johonkin kiinteään maksimi-fps:ään
14 Kiinteä FPS nextframe = gettime() while notfinished: update() draw() # aika millisekunteja nextframe += 1000 / FPS sleep( max( 0, gettime() - nextframe) ) Ongelma: liian hitaalla laitteistolla tai liian raskaissa kohdissa pelin nopeus vaihtelee Nopean laitteiston teho taas menee hukkaan Parametrisoidaan päivitysfunktion aika-askel
15 Muuttuva päivitysnopeus while notfinished: lasttime = currenttime currenttime = gettime() update( currenttime - lasttime ) draw() Peli piirtyy nyt niin nopeasti kuin mahdollista Päivittäminen hankalampaa, koska Δt ei vakio Hitaalla koneella päivityksen Δt iso: tahmea ohjaus, ongelmia fysiikassa Δt:n pitäisi olla vakio tai ainakin rajattu sopivasti
16 Vakionopeus, rajattu FPS nextupdate = gettime() while notfinished: while gettime() >= nextupdate: update() nextupdate += TIMESKIP draw() Päivitys tasaisin väliajoin, mutta piirto aina kun ylimääräistä aikaa jää Kiinteä päivitysnopeus pitää valita siten, että hitaalla koneella ehditään piirtää edes joskus Nopea rauta piirtää monta kertaa päivitystä kohti, joten sama kuva piirretään monta kertaa
17 Vakionopeus, vaihtuva FPS nextframe = gettime() while notfinished: while gettime() >= nextframe: update() nextframe += TIMESKIP phase = ( gettime() - (nextframe - TIMESKIP) ) / TIMESKIP draw(phase) Päivitys tasaisin väliajoin, piirto kun ehditään Grafiikka voidaan interpoloida, jolloin liike nopealla laitteistolla sulavampaa Päivitystahti voidaan valita riittävän hitaaksi Grafiikan interpolointi joko kahden edellisen ehjän tilan välillä tai ennustamalla
18 Pääsilmukka Eri versiot silmukasta ovat kompromisseja Joko päivityksen tai piirron Δt:n oltava muuttuva, jos halutaan kaikki tehot irti koneesta Usein pyritään joka tapauksessa 60 FPS:ään, jolloin asiasta ei tarvitse huolehtia tätä varten piirron monimutkaisuutta voidaan säätää dynaamisesti, resoluutiota muuttaa jne. Asiaa helpottaa entisestään, jos koneen nopeus tiedetään etukäteen konsoleilla näin usein onkin, mutta silloinkin eri kohdissa peliä nopeus voi vaihdella
19 VSYNC Usein monitorin virkistystaajuus on 60 Hz VSYNC (vertical synchronization) tarkoittaa, että grafiikkakortti lähettää uuden kuvan näytölle vain silloin, kun näyttö on valmis piirtämään ilman sitä kuva voi repeytyä kahtia (tearing) jos VSYNC on päällä mutta ei ehditä tuottaa kuvaa, tulos on helposti 30 FPS kolmoispuskurointi auttaa tähän VSYNC muuttaa em. pääsilmukoita
20 Pelisilmukka ja säikeet Jos pelin päivitys ja piirto ovat omissa säikeissään, molemmat saadaan pyörimään siihen tahtiin kuin halutaan Sivuhyöty: voidaan saada enemmän tehoa irti nykyisistä moniprosessorilaitteistoista Tällöin täytyy huolehtia siitä, että maailma on ehjässä tilassa kun se piirretään Synkronisointi, joka on tunnetusti haastavaa Tuottaja kuluttaja-ongelma
21 Rinnakkaisuus Rinnakkaisuus on kasvava teema peliohjelmoinnissa Pääsilmukan lisäksi voidaan rinnakkaistaa parhaiten toisistaan riippumattomia asioita eri hahmojen animaatio, eri paikkojen fysiikka eri agenttien tekoäly Osittain riippuvaisetkin asiat voidaan rinnakkaistaa, jos kommunikaatio pysyy vähäisenä
22 Rinnakkaisuus Lähestymistapoja rinnakkaisuuteen: fork and join: sama tehtävä paloitellaan eri säikeille, sitten taas jatketaan yhdellä erikoistuneet säikeet: kukin tehtävä pyörii omassa säikeessään jatkuvasti työjono, josta kukin säie hakee odottavia pieniä töitä, ei erikoistuneita säikeitä Asynkronisuus: käynnistetään työ, haetaan tulokset myöhemmin (jopa eri framella) Batching: kierretään syntyvää overheadia
23 Maailman päivitys Pelaajan avatar reagoi tyypillisesti syötteeseen, joka luetaan kontrollilaitteilta Muutkin aktiiviset hahmot voivat toimia samalla tavalla: tekoälyrutiinit generoivat samanlaista syötettä kuin pelaaja Näin saadut komennot syötetään pelin dynamiikkaenginelle, joka muuttaa ne liikkeeksi, toiminnoiksi jne.
24 Maailman päivitys Passiiviset kohteet, kuten ovet ja esineet päivittyvät esim. fysiikkamoottorin ja animaation suhteen Näistä päivitetään usein vain ne, jotka ovat riittävän lähellä pelaajaa Tekoälyhahmotkin voivat toimia yksinkertaisemman algoritmin mukaan ollessaan kaukana pelaajasta
25 Tapahtumat Tapahtumat (events) ovat hyvin kätevä tapa jäsentää pelin rakennetta ja hoitaa eri osien väliset yhteydet Esimerkkejä tapahtumista: Hahmo x liikkui koordinaateissa z Hahmo x törmäsi esineeseen y Fysiikka alustettu Peli loppui Peli tallennettu Ääniefekti x loppui Pelaaja x haluaa ampua
26 Työkalut Modernia peliä tehtäessä iso osa ohjelmoinnista on työkalujen tekemistä maailmaeditori datan esiprosessointi (esim. BSP:n rakennus, valaistuslaskelmat) Työkalujen tavoite mahdollistaa pelisisällön luominen ja muokkaus ohjelmointitaidottomille Datalähtöinen näkökulma Usein työkaluihin liittyy myös skriptaus Työkalujen jakaminen pelaajille auttaa modikulttuuria
27 Skriptaus Useimmat pelit tehdään käännettävällä, tehokkaalla kielellä, kuten C++ suurin osa koodista ei ole nopeuskriittistä Skriptikielet ovat dynaamisia korkean abstraktiotason kieliä niillä toteuttaminen vie usein vähemmän aikaa Käyttökohteina usein AI, pelitapahtumat, esineiden parametrit... sisällön erotus enginestä
28 Skriptaus Etuja: Skriptatessa esim. tyypeistä ja muistinhallinnasta tarvitsee huolehtia vähemmän Jokaisen muutoksen jälkeen ei tarvitse kääntää koko peliä eikä välttämättä edes käynnistää sitä uudestaan Skriptaus on ohjelmointia helpompaa, joten sitä voivat tehdä osittain suunnittelijat, taiteilijat ja käyttäjät Skriptikielillä koodaaminen on kivaa!
29 Skriptaus Ongelmia: heikompi tehokkuus lisää kieliä, lisää monimutkaisuutta debuggaus osin hankalampaa liimakoodin tarve Uuden kielen luominen on melko työlästä, joten jos mahdollista, kannattaa käyttää valmista yleisimpiä Python, Lua, JavaScript moni peliengine tukee jotain skriptikieltä
30 Suunnittelumalleja Muutamia peliohjelmoinnissa erityisen hyviksi havaittuja suunnittelumalleja Tehdas Erillinen Tehdas-olio, jonka makex()-metodit luovat halutunlaisen olion ja palauttavat osoittimen siihen Tehdas pitää kirjaa luoduista olioista, mikä helpottaa muistinhallintaa Esim. kenttää rakennettaessa luodaan esineet ja olennot näin
31 Singleton Singleton varmistaa, että luokasta on vain yksi olio Singleton-luokka, josta tällaiset luokat peritään kun käytetään 1. kerran, luodaan instanssi myöhemmillä käyttökerroilla vain käytetään aiemmin luotua instanssia käyttökohteita satunnaisluvut, äänijärjestelmä, pelimaailma, tehdas,... hyödyt kiisteltyjä
32 Strategia Strategia Strategia-mallilla valitaan ajonaikaisesti eri versioita algoritmeistä Algoritmia varten on kantaluokka, josta eri versiot on periytetty, ja hahmon toimintaa käsitellään kantaluokka-osoittimen kautta esim. pelihahmojen käyttäytyminen
33 Komento Komento Abstrakti rajapintaluokka Komento, josta erilaiset komennot periytetään ja parametrisoidaan Esim. kun ohjaus toteutetaan näin, voivat komennot tulla muualtakin kuin syötteestä; käyttökohteina mm. välianimaatiot, uusinnat, verkkopeli Toimii hyvin tapahtumajärjestelmän osana
34 Pelimaailman objektit Pelimaailmassa esiintyvät objektit jaetaan usein kahteen luokkaan: staattiset (liikkumattomat): seinät, osa esineistä dynaamiset: hahmot, efektit, powerupit,... Koska staattisten paikka on aina sama, niiden fysiikka ja grafiikka usein tehokkaampaa esim. valaistus voidaan laskea etukäteen Staattisista voi olla eri versioita, jotta saadaan illuusio dynaamisesta maailmasta
35 Dynaamiset objektit Iso osa pelin koodista on dynaamisten objektien hallintaa: luominen ja tuhoaminen objektien yhteys engineen: piirto, äänet, ym. reaaliaikainen simulointi: fysiikka, pelisäännöt tilatiedon tarjoaminen muille objekteille kopioiden hallinta verkossa, tallennus, lataus Objektien toteutus: oliot vs. ominaisuudet
36 Oliopohjainen toteutus Oliokeskeisessä toteutuksessa jokainen erillinen peliobjekti on olio jostakin luokasta Usein kaikki periytyy yleisestä Objekti-luokasta Lisäksi ominaisuuksia: liikkuva, piirrettävä, törmäävä, animoituva,... Jos nämä toteutetaan perimällä, syntyy raskas monoliittinen hierarkia hankala ymmärtää, jäykkä, kuoleman timantti Voi helpottaa korvaamalla periytymisen kompositiolla
37 Oliopohjainen toteutus GameObject MovableObj Transform AnimController RenderableObj GameObject CollidableObj MeshInstance RigidBody AnimatingObj (tässä täydet nuolet esittävät poikkeuksellisesti perimistä) (Lähde soveltaen: Gregory 2009)
38 Ominaisuuspohjainen toteutus Olioiden sijaan voi kunkin ominaisuuden arvot esittää omana tietorakenteenaan peliobjekteilla uniikki id, jonka perusteella arvoon pääsee käsiksi Koodin voi laittaa ominaisuuden yhteyteen ominaisuusluokat, ei poikkea edellisestä oliokompositiosta paljoakaan Koodi voi myös olla kasa skriptejä, jotka vain lukevat arvoja tietorakenteista datapohjainen lähestymistapa
39 Oliot vs. ominaisuudet Ominaisuudet säästävät muistia, välimuisti toimii tehokkaammin koska samat ominaisuudet ovat peräkkäin struct of arrays vs. array of structs Ominaisuuksia voi lisätä dynaamisesti, ei vaikuta luokkarakenteeseen Olioiden yhteistyö ja sisäiset rajoitteet helpommin hallittavissa, selkeämpi kokonaisuus Olioita helpompi debugata
40 Pelimaailman lataaminen Perinteinen tapa: kentät (levels), joista yksi näkyvissä kerrallaan, välissä lataustauko toteutettavissa kivasti pinolla Ilmalukot: minikenttä, jonka aikana seuraava ladataan (Halo) erillinen säie, joka lataa seuraavaa kenttää Virtautus: jaetaan jatkuva maailma pieniin paloihin, joita lataillaan tarvittaessa muistin pirstoutuminen SSD-levyt vähentävät kenttien tarvetta?
41 Dynaamisten objektien muisti Objekteja syntyy ja kuolee pelin kuluessa Pirstoutuminen on todellinen ongelma new ja delete ovat hitaita Ratkaisuja: Kaikki objektit olemassa alusta asti Kasa muistia (pool) kullekin objektityypille Joukko kiinteitä kokoja, valitaan pienin sopiva Uudelleenjärjestely (defrag)
42 Objektien päivittäminen Mitä pääsilmukan funktio update(dt) tekee? Naiivi versio päivittää vuorotellen jokaisen objektin jokaisen komponentin: # pääsilmukan kutsuma update: def update(dt): foreach (obj in gameobjects): obj.update(dt) # gameobjectissa... def update(dt): move(dt) animation.update(dt) physics.update(dt) renderer.draw()
43 Päivittäminen On tehokkaampaa päivittää kukin matalan tason komponentti kerralla kaikki animaatiot putkeen, sitten vasta piirto, jne tehokkuushyötyjen syynä esim. välimuisti, välitulokset, resurssien varaus, liukuhihnat Fysiikka vaatii usein, että kaikki esineet ovat lopullisilla paikoillaan ennen törmäystarkistusta Riippuvuudet: esim. hahmo pitelee kissaa päivitysjärjestyksellä voi olla väliä
44 Päivittäminen Objekteja päivitetään yksi kerrallaan ajasta t 1 aikaan t 2 = t 1 + dt tästä seuraa, että päivityksen aikana osa objekteista on ajassa t 1 ja osa ajassa t 2 jos objektit käyttävät toistensa tiloja, täytyy olla tarkkana, kumpi ajanhetki on kyseessä riippuvuuspuut ovat yksi ratkaisu erilliset muuttujat vanhalle ja uudelle tilalle lisäetu: voidaan interpoloida välitiloja
Videon tallentaminen Virtual Mapista
Videon tallentaminen Virtual Mapista Kamera-ajon tekeminen Karkean kamera ajon teko onnistuu nopeammin Katseluohjelmassa (Navigointi > Näkymät > Tallenna polku). Liikeradan ja nopeuden tarkka hallinta
LisätiedotKontrollilaitteet. Arsenaali
Arsenaali Kontrollilaitteet Tietokonepeleissä käytettäviä kontrollilaitteita on valtava määrä Kaikilla alustoilla, joilla pelejä pelataan on jokin vakio kontrolleri PC: Hiiri ja näppäimistö Konsolit: Controller
Lisätiedot4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi
4. Luento: Prosessit ja säikeets Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia
LisätiedotJypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen
LisätiedotConcurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
LisätiedotRinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi
Rinnakkaisuuden hyväksikäyttö peleissä Paula Kemppi 24.4.2008 Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli
LisätiedotPong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton
2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.
LisätiedotRacket ohjelmointia II. Tiina Partanen 2015
Racket ohjelmointia II Tiina Partanen 2015 Sisältö 1) Peli I Yksinkertainen peli, jossa kerätään kohteita ja väistellään vaaroja Pitkälle viety koodi, johon täydennetään vain puuttuvat palat Ei tarvita
LisätiedotVideon tallentaminen Virtual Mapista
Videon tallentaminen Virtual Mapista Kamera-ajon tekeminen Karkean kamera ajon teko onnistuu nopeimmin Katseluohjelmassa (Navigointi > Näkymät > Tallenna polku). Liikeradan ja nopeuden tarkka hallinta
LisätiedotELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
LisätiedotLuku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat
2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat 2D-piirto 2-ulotteisen grafiikan piirto perustuu yleensä valmiiden kuvien kopioimiseen näyttömuistiin (blitting)
LisätiedotOHJ-2710 Peliohjelmointi. Syksy 2012 Timo Kellomäki
OHJ-2710 Peliohjelmointi Syksy 2012 Timo Kellomäki timo.kellomaki@tut.fi Käytännön juttuja Kurssihenkilökunta koostuu Timo Kellomäestä Luennot torstaisin salissa TB223 klo 12-14 2. viikko harkkatyöinfo,
LisätiedotPeliohjelmointi: Kontrollilaitteet. Teppo Soininen
Peliohjelmointi: Kontrollilaitteet Teppo Soininen Lähteet: Core Techniques and Algorithms in Game Programming, MSDN, www.xbox.com, www.playstation.com Arsenaali Tietokonepeleissä käytettäviä kontrollilaitteita
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman
LisätiedotEsimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit
Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.
LisätiedotMuutamia peruskäsitteitä
Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä
LisätiedotTieteellinen laskenta 2 Törmäykset
Tieteellinen laskenta 2 Törmäykset Aki Kutvonen Op.nmr 013185860 Sisällysluettelo Ohjelman tekninen dokumentti...3 Yleiskuvaus...3 Kääntöohje...3 Ohjelman yleinen rakenne...4 Esimerkkiajo ja käyttöohje...5
LisätiedotPelimatematiikka ja ohjelmointi ATMOS, Mikkeli - 16.11.2012
Pelimatematiikka ja ohjelmointi ATMOS, Mikkeli - 16.11.2012 Teemu Saarelainen, lehtori teemu.saarelainen@kyamk.fi GameLab gamelab.kyamk.fi & facebook.com/kyamk.gamelab Sisältö Miksi pelimatematiikkaa?
LisätiedotEsimerkkejä vaativuusluokista
Esimerkkejä vaativuusluokista Seuraaville kalvoille on poimittu joitain esimerkkejä havainnollistamaan algoritmien aikavaativuusluokkia. Esimerkit on valittu melko mielivaltaisesti laitoksella tehtävään
LisätiedotNewtonin ominaisuudet
Verkkopeli Newton Newtonin ominaisuudet Reaaliaikaisuus Fysiikan simulointi Verkkopeli Tikku-ukko grafiikka Ikkunan koosta riippumaton (eri resoluutiot) Skrollaava, sisältää näkymän peliin Ei ääniä Fysiikkamoottori
LisätiedotTietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:
LisätiedotVenekilpailu! Esteiden väistely ja hahmon ohjaaminen
Venekilpailu! Esteiden väistely ja hahmon ohjaaminen 1 Vaihe 1 Valmistelu Lataa Boat Race eli Venekisa -niminen projekti seuraavasta linkistä ja avaa Scratchissa (Online- tai Offline-versiossa): http://jumpto.cc/boat-get
LisätiedotSisältö. 2. Taulukot. Yleistä. Yleistä
Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä
LisätiedotPeilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka
Lisätiedot11. Javan toistorakenteet 11.1
11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin
LisätiedotAntitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009
Antitammirobotti Antti Meriläinen Martin Pärtel 29. toukokuuta 2009 Helsingin yliopisto Tietojenkäsittelytieteen laitos Robottiohjelmoinnin harjoitustyö
LisätiedotYleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.
2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat
LisätiedotPong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi
Muilla kielillä: English Suomi Pong-peli, vaihe 7 Tässä vaiheessa lisäämme peliin pistelaskun. Pong-pelissä pelaaja saa pisteen kun pallo ohittaa toisen pelaajan mailan. 1. Aliohjelmakutsu laskureita varten
LisätiedotSukelluskeräily, Pelihahmon liikuttaminen. Tee uusi hahmo: Pelihahmo. Nimeä se. Testaa ikuisesti -silmukassa peräkkäisinä testeinä (jos) onko jokin
Versio 1.0 1 Sukelluskeräily Tässä pelissä keräilet erilaisia aarteita ja väistelet vihollista. Tämän lisäksi pelaajan pitää käydä välillä pinnalla hengittelemässä. Peliin lisätään myös häiriötekijäksi
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n
LisätiedotTietorakenteet ja algoritmit - syksy 2015 1
Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä
LisätiedotAlkuun HTML5 peliohjelmoinnissa
Paavo Räisänen Alkuun HTML5 peliohjelmoinnissa www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida ja levittää ei kaupallisissa tarkoituksissa. Sisällysluettelo 1: Alkusanat 2: Alkuun 3: Pelinäkymä
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman
LisätiedotSukelluskeräily. Pelihahmon liikuttaminen. Aarre ja pisteet
Sukelluskeräily 1 Tässä pelissä keräilet erilaisia aarteita ja väistelet vihollista. Tämän lisäksi pelaajan pitää käydä välillä pinnalla hengittelemässä. Peliin lisätään myös häiriötekijäksi esim. parvi
LisätiedotOhjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.
Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta. Vastauksia kysymyksiin Miten hahmon saa hyppäämään? Yksinkertaisen hypyn
Lisätiedot1. Mitä tehdään ensiksi?
1. Mitä tehdään ensiksi? Antti Jussi i Lakanen Ohjelmointi 1, kevät 2010/ Jyväskylän yliopisto a) Etsitään Googlesta valmis algoritmi b) Mietitään miten itse tehtäisiin sama homma kynällä ja paperilla
LisätiedotOHJ-1160 Laaja Ohjelmointi 2
Tampereen teknillinen yliopisto Ohjelmistotekniikan laitos OHJ1160 Laaja Ohjelmointi 2 Harjoitustyö Avaruusseikkailu 2001 + 11 Nyyti Kinnunen 222500 kinnune8 nyyti.kinnunen@tut.fi 1 1 Ohjelman rakenne
LisätiedotSimulointi. Tapahtumapohjainen
Simulointi Tapahtumapohjainen Diskreettiaikainen simulointi 1 Tarkastellaan systeemejä, joissa on äärellisen monta komponenttia. Jokaisella komponentilla äärellisen monta tilaa. Komponentit vaikuttavat
LisätiedotOliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä
LisätiedotTiina Partanen. Koodaamassa Matikantunnilla
Koodaamassa Matikantunnilla Racket-iskuryhmä? Ryhmä Tamperelaisia ja Ylöjärveläisiä opettajia, jotka testaavat ja kehittävät Racket-ohjelmointimateriaalia yläkoulun matematiikan (tietotekniikan ja fysiikan)
LisätiedotPythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b
Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.
LisätiedotJypelin käyttöohjeet» Miten voin liittää törmäyksiin tapahtumia?
Muilla kielillä: English Suomi Jypelin käyttöohjeet» Miten voin liittää törmäyksiin tapahtumia? Kun kaksi fysiikkaoliota törmää toisiinsa, syntyy törmäystapahtuma. Nämä tapahtumat voidaan ottaa kiinni
Lisätiedot815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.
LisätiedotOmia appeja AppInventorilla. Jenna Tuominen Resurssikeskus Linkki, LumA, HY
Omia appeja AppInventorilla Jenna Tuominen Resurssikeskus Linkki, LumA, HY Mitä Linkki tekee? Kerhoja ja leirejä lapsille ja nuorille Koululuokille vierailuja Tietojenkäsittelytieteen laitokselle (HY)
LisätiedotPong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 10: Aliohjelmat, foreign function interface Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 3. 2013 Sisältö 1 Aliohjelmien käyttäminen
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
LisätiedotAlgoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
LisätiedotT Digitaalisen median työvälineet (3 op) ME-C2300 Verkkojulkaisemisen perusteet (5 op) Mediatekniikan laitos / Informaatioverkostot
Selainohjelmointi Edistynyt verkkosivujen (JavaScript) kehitys T-111.1100 Digitaalisen median työvälineet (3 op) ME-C2300 Verkkojulkaisemisen perusteet (5 op) DI Mari Markku HirviLaine Mediatekniikan laitos
LisätiedotSisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4
Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.
LisätiedotSisältö. 22. Taulukot. Yleistä. Yleistä
Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä
LisätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
LisätiedotCODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0
CODEONLINE Monni Oo- ja Java-harjoituksia Version 1.0 Revision History Date Version Description Author 25.10.2000 1.0 Initial version Juha Johansson Inspection History Date Version Inspectors Approved
LisätiedotLuku 10: Testaus ja optimointi. Pelien testaus Testityyppejä Suorituskyvyn analysointi Optimointikikkoja Grafiikkaliukuhihnan optimointi
Luku 10: Testaus ja optimointi Pelien testaus Testityyppejä Suorituskyvyn analysointi Optimointikikkoja Grafiikkaliukuhihnan optimointi Testaus Monet normaalin ohjelmistotuotteen testauksen opeista ovat
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Muuttujat eri muisteissa Ohjelman muistialueen layout Paikallisen ja globaalin muuttujan ominaisuudet Dynaamisen muistinkäytön edut Paikallisten muuttujien dynaamisuus ADT
LisätiedotTIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit
TIE-20100 Tietorakenteet ja algoritmit 1 TIE-20100 Tietorakenteet ja algoritmit TIE-20100 Tietorakenteet ja algoritmit 2 Lähteet Luentomoniste pohjautuu vahvasti prof. Antti Valmarin vanhaan luentomonisteeseen
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen
Lisätiedot12. Javan toistorakenteet 12.1
12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu
Lisätiedot11/20: Konepelti auki
Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 18.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 18.3.2009 1 / 51 Olioista (kertausta) Olioiden avulla voidaan kuvata useammasta arvosta koostuvaa kokonaisuutta
LisätiedotTavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja.
RUUTU DYNAAMINEN SPOTTI TEKNISET OHJEET Versio 1.0 Yleistä Tavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja. Dynaamiset spotit ovat flash mainoksia, jotka mahdollistavat
LisätiedotITKP102 Ohjelmointi 1 (6 op), arvosteluraportti
ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion
LisätiedotRacket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014
Racket ohjelmointia osa 2 Tiina Partanen Lielahden koulu 2014 Sisältö 1) Funktiot ja muuttujat (kertaus) 2) Animaatiot & pelit (big-bang) 3) Vertailuoperaattorit sekä boolean arvot 4) Tietorakenteet (struct)
LisätiedotSisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2
6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma
LisätiedotLuento 1 Tietokonejärjestelmän rakenne
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
LisätiedotLuento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
LisätiedotAlgoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Rinnakkaisuus Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 4. 2012 Sisältö 1 Rinnakkaisuusmalleja: säie ja prosessi 2
LisätiedotTieto- ja tallennusrakenteet
Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)
LisätiedotSalasanojen turvallinen tallentaminen KeePass ohjelmalla
Salasanojen turvallinen tallentaminen KeePass ohjelmalla KeePass on vapaasti saatavilla oleva, avoimen lähdekoodin ohjelma, jonka tarkoituksena on auttaa salasanojen hallinnassa. Tämä KeePass ohje on päivitetty
LisätiedotCQRS, -ES, PACS, DICOM, WTF?
CQRS, -ES, PACS, DICOM, WTF? 27.2.2014 Ajankohtaisuuksia harjoitustyöhön liittyen http://www.hs.fi/terveys/tutkimus+veri+paljastaa+riskin+kuolla+seur aavan+viiden+vuoden+aikana/a1393301682104 Vähän vanhempia
LisätiedotMoottorin kierrosnopeus Tämän harjoituksen jälkeen:
Moottorin kierrosnopeus Tämän harjoituksen jälkeen: osaat määrittää moottorin kierrosnopeuden pulssianturin ja Counter-sisääntulon avulla, osaat siirtää manuaalisesti mittaustiedoston LabVIEW:sta MATLABiin,
LisätiedotSkedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi
Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi 24.01.2011 Ohjaaja: Tapio Niemi Valvoja: Harri Ehtamo Tausta ja työn tavoite Työ tehtiin Helsinki Institute of Physics:ille,
LisätiedotP e d a c o d e ohjelmointikoulutus verkossa
P e d a c o d e ohjelmointikoulutus verkossa Java-kielen perusteet Teoria ja ohjelmointitehtävät Java-kielen perusteet 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN 10 JAVA-KIELEN PERUSTEET 10 OPISKELUN ALOITTAMINEN
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.
Lisätiedot12. Javan toistorakenteet 12.1
12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu
LisätiedotOhjelmointi 1 / syksy /20: IDE
Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,
LisätiedotPörisevä tietokone. morsetusta äänikortilla ja mikrofonilla
Pörisevä tietokone morsetusta äänikortilla ja mikrofonilla 1 Tiivistelmä Idea toteuttaa seuraavat vaatimukset: 1. kommunikointi toisen opiskelijan kanssa (morsetus) 2. toisen opiskelijan häirintä (keskittymistä
LisätiedotPäivitysohje Opus Dental
Päivitysohje Opus Dental 7.1.460 1. Päivitysohjelman lataaminen Avaa Opus Dental -internetsivu osoitteessa www.opusdental.com. Klikkaa etusivulta Suomen lippua avataksesi suomenkielisen sivuston. Valitse
LisätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
LisätiedotSisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat
Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen
LisätiedotTasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen:
Tasohyppelypeli 1 Pelissä ohjaat liikkuvaa ja hyppivää hahmoa vaihtelevanmuotoisessa maastossa tavoitteenasi päästä maaliin. Mallipelinä Yhden levelin tasohyppely, tekijänä Antonbury Piirrä grafiikat Pelaajan
LisätiedotRyhmäharjoitus III: Mitä on koodaaminen? A. TIEY4 Tietotekniikkataidot, kevät 2017 Tehdään ryhmäharjoitustunnilla 20.3.
Ryhmäharjoitus III: Mitä on koodaaminen? A TIEY4 Tietotekniikkataidot, kevät 2017 Tehdään ryhmäharjoitustunnilla 20.3. Ryhmäharjoitus Johdanto (10 min) Tehtävä (60 min) Palaute (10 min) Koodaaminen - Miksi
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 4.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 4.3.2009 1 / 35 Tiedostot Tiedostojen käsittelyä tarvitaan esimerkiksi seuraavissa tilanteissa: Ohjelman käsittelemiä
LisätiedotLuento 1 Tietokonejärjestelmän rakenne
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Luento
LisätiedotSisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
LisätiedotRämpytysralli. Pelikehys sisältää GameObject luokan, Scene luokan, SceneManager luokan, InputListener luokan, StaticImage luokan
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ä.
LisätiedotSukupuu -ohjelma. Ossi Väre (013759021) Joni Virtanen (013760641)
Sukupuu -ohjelma Ossi Väre (013759021) Joni Virtanen (013760641) 7.11.2011 1 Johdanto Toteutimme C -kielellä sukupuuohjelman, johon käyttäjä voi lisätä ja poistaa henkilöitä ja määrittää henkilöiden välisiä
LisätiedotLuento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
LisätiedotJypelin käyttöohjeet» Millaisia olioita on olemassa?
Jypelin käyttöohjeet» Millaisia olioita on olemassa? Tässä on esitelty tarkemmin muutama tärkeä olio pelin tekemisen kannalta. Muitakin olioita on tietysti olemassa. GameObject GameObject on peliolio,
LisätiedotZeon PDF Driver Trial
Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")
LisätiedotJypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen ==================HUOM!!!================== SISÄLLÖN TUOMINEN VISUAL STUDIOON ON MUUTTUNUT Uudet ajantasalla olevat ohjeet löytyvät timistä:?https://tim.jyu.fi/view/kurssit/tie/ohj1/tyokalut/sisallon-tuominen-peliin
LisätiedotArto Salminen,
4. Luento: Prosessit ja säikeet Arto Salminen, arto.salminen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia
LisätiedotSisällys. 15. Lohkot. Lohkot. Lohkot
Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet
Lisätiedot