Luku 4: Peliarkkitehtuuri
|
|
- Päivi Laine
- 9 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
Kontrollilaitteet. 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
4. 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
Jypelin 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
Concurrency - 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...
Rinnakkaisuuden 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
Pong-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ä
812347A 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.
Racket 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
Videon 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
ELM 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................................
Luku 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)
OHJ-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,
Peliohjelmointi: 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
Ohjelmoinnin 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
Ohjelmoinnin 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
Esimerkkiprojekti. 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.
Muutamia 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ä
Tieteellinen 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
Pelimatematiikka 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?
Esimerkkejä vaativuusluokista
Esimerkkejä vaativuusluokista Seuraaville kalvoille on poimittu joitain esimerkkejä havainnollistamaan algoritmien aikavaativuusluokkia. Esimerkit on valittu melko mielivaltaisesti laitoksella tehtävään
Newtonin 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
Tietorakenteet 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:
Venekilpailu! 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
Sisä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ä
Peilaus 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
11. 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
Antitammirobotti. 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ö
Yleistä. 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ä
Ohjelmoinnin 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
Pong-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
Sukelluskerä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
Tietorakenteet 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
Tietorakenteet 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ä
Alkuun 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ä
Ohjelmoinnin 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
Sukelluskerä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
Ohjeissa 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
1. 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
OHJ-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
Simulointi. Tapahtumapohjainen
Simulointi Tapahtumapohjainen Diskreettiaikainen simulointi 1 Tarkastellaan systeemejä, joissa on äärellisen monta komponenttia. Jokaisella komponentilla äärellisen monta tilaa. Komponentit vaikuttavat
Oliosuunnitteluesimerkki: 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ä
Tiina 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)
Pythonin 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')
Ohjelmoinnin 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.
Jypelin 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
815338A 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ä.
Omia 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)
Pong-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
Ohjelmoinnin 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
Ohjelmoinnin 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
Algoritmit 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
T 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
Sisä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.
Sisä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ä
Harjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
CODEONLINE. 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
Luku 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
Tietorakenteet 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
TIE 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
Ohjelmoinnin 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
12. 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
11/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
Ohjelmoinnin 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
Tavallisen 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
ITKP102 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
Racket 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)
Sisä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
Luento 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
Luento 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
Algoritmit 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
Ohjelmoinnin 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
Tieto- ja tallennusrakenteet
Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)
Salasanojen 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
CQRS, -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
Moottorin 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,
Skedulerisimulaattorin 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,
P 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
ITKP102 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ä.
12. 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
Ohjelmointi 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
Ohjelmoinnin 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,
Pö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ä
Pä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
Interaktiivisten 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
Sisä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
Tasohyppelypeli. 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
Ryhmä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
Ohjelmoinnin 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ä
Luento 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
Sisä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.
Rä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ä.
Sukupuu -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ä
Luento 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
Jypelin 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,
Zeon PDF Driver Trial
Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin
Ohjelmoinnin 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")
Jypelin 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
Arto 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
Sisä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