Pelin tekoäly. Aleksi Vuorela IIO14S1. Tietorakenteet ja algoritmit harjoitustyö Joulukuu 2015
|
|
- Kirsi-Kaisa Lehtonen
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 Pelin tekoäly Aleksi Vuorela IIO14S1 Tietorakenteet ja algoritmit harjoitustyö Joulukuu 2015 Ohjelmistotekniikan koulutusohjelma Tekniikan ja liikenteen ala
2 1 1 Johdanto Harjoitustyön aiheena oli tutustua pelin tekoälyn toteuttamiseen vaadittaviin tietorakenteisiin ja algoritmeihin. Tein olio-ohjelmointi 2 kurrsin harjoitustyönä oman pelin C++ ohjelmointikielellä ja toteutin tekoälyn tähän peliin. Pelini on ylhäältäpäin kuvattu toimintapeli tai käytännössä ammuntapeli jonka kenttä rakentuu tiilistä. Tarkemmin tekemäni peli on käsitelty olio-ohjelmointi 2 kurssin harjoitustyöni dokumentaatiossa: Tekoäly oli siis tarkoitus tehdä pelin vihollisille eli zombeille, jotka yrittävät tietysti tappaa pelaajan. Lähdin miettimään pelini kannalta kaikista tärkeimpiä ominaisuuksia mitä tekoälyltä halusin ja kolme keskeistä asiaa nousi pinnalle. Kaikista tärkein asia oli, että vihollisilla olisi erilaisia tiloja, joiden välillä siirrytään vihollisen havaintojen perusteella. Vihollinen käyttäytyisi tietysti eri tavalla riippuen siitä, missä tilassa se on. Tähän ratkaisuksi löytyi finite state machine eli äärellinen tilakone niminen tekniikka. Toinen keskeinen asia pelini kannalta oli se, että viholliset eivät näkisi pelaajaa pelikentän seinien läpi. Tähän avuksi löytyi Bresenhamin algoritmi. Viimeinen asia oli jo kurssilta tutuksi tullut lyhimmän reitin etsiminen eli etsitään lyhin reitti vihollisen sijainnista pelaajan luokse. Tähän käytin A*-algoritmia. Näillä tekniikoilla sain aikaiseksi pelini vihollisille simppelin tekoälyn ja seuraavissa luvuissa käsittelen kunkin kyseisistä tekniikoista sekä selitän, kuinka ohjelmoin ne C++ ohjelmointikielellä.
3 2 2 Finite state machine Finite state machine on yksi eniten käytetyistä tekoälytekniikoista peleissä. Tilakone koostuu äärellisestä määrästä tiloja, joiden välillä on tilasiirtymiä. Pelien tekoälyssä käytetään termiä agentti oliosta, joka tekee havaintoja pelimaailmasta ja suorittaa itsenäisesti niistä riippuvia toimintoja. Kun jatkossa käytän termiä agentti, se tarkoittaa siis pelin vihollista eli zombia. Pelissäni tilasiirtymät aiheutuvat agentin havainnoista. Agentin käyttäytyminen määräytyy tilakoneen tilan mukaan. Tilakoneessani on kolme eri tilaa: normal, alert ja evasion. Normal-tila on oletustila, josta kaikki agentit aloittavat. Tässä tilassa agentti vain seisoskelee paikallaan odotellen jostain havainnosta aiheutuvaa tilasiirtymää. Alert-tilaan siirrytään, kun agentti havaitsee pelaajan. Havaitsemiseen on kaksi ehtoa: pelaajan on ensinnäkin oltava näköetäisyydellä, ja toiseksi näköyhteyttä ei voi estää mikään, esimerkiksi seinä. Tämä näköyhteyden testaaminen tehdään Bresenhamin algoritmilla, josta lisää myöhemmässä luvussa. Mikäli pelaaja on tarpeeksi lähellä ja mikään ei estä näkemistä, siirrytään alert-tilaan. Tässä tilassa agentti yrittää jatkuvasti päästä pelaajan lähelle hyökkäys etäisyydelle. Mikäli agentti on tarpeeksi lähellä pelaajaa, se hyökkää ja pelaaja menettää terveyspisteitä. Evasion-tilaan siirrytään silloin, jos alert-tilan aikana agentti menettää näköyhteyden pelaajaan, esimerkiksi kun pelaaja piiloutuu seinän taakse tai pääsee liian kauas pakoon. Tässä tilassa aluksi kirjataan ylös pelaajan viimeisin tunnettu sijainti ja mennään sinne. Viimeisimmän sijainnin ympäriltä etsitään pelaajaa jonkin aikaa, ja mikäli pelaajaa ei löydetä, siirrytään normal-tilaan. Jos pelaaja löydetään, palataan takaisin alert-tilaan. Seuraavalla sivulla on kuvassa 1 esitetty tilakaavio, joka havainnollistaa tiloja ja siirtymiä niiden välillä.
4 3 Kuva 1. Tilakaavio. Tilakoneen toteuttamiseen on monia vaihtoehtoja, mutta tämän homman kannalta parhaaksi vaihtoehdoksi katsoin stack-based finite state machinen eli pinorakenteeseen pohjautuvan äärellisen tilakoneen. Pino tietorakenne on jo kurssilta tuttu käsite, ja tässä sitä pystyi hyödyntämään nerokkaasti käytännössä. Pinon päällimmäisenä on siis sen hetkinen aktiivinen tila, jonka perusteella tehdään jotain toimintoja. Kun tilasiirtymä tapahtuu, esimerkiksi normal- ja alert-tilan välillä, lyödään uusi tila (alert) pinon päällimmäiseksi, jolloin siitä tulee sen hetkinen aktiivinen tila. Jos halutaan siirtyä aikaisempaan tilaan, esimerkiksi ollaan evasiontilassa ja löydetään pelaaja, voidaan pinon päällimäinen tila (evasion) heittää pois, jolloin edellinen tila (alert) tulee taas aktiiviseksi. Pino rakenteen avulla tilojen hallinta saadaan siis hyvin simppeliksi ja vain yksi tila voi olla aktiivinen kerrallaan, mikä on koko finite state machinen idea!
5 4 Toteutus C++:lla Sitten koko homman varsinaiseen toteutukseen C++:lla. En nyt lähde kaikkea koodia avaamaan tässä tarkasti, sillä tämä ei ole ohjelmoinnin kurssi, vain keskeiset asiat finite state machinen toiminnan kannalta. Kuva 2. Keskeiset funktiot ja muuttujat. Kuvassa 2 esitellään Enemy header-tiedostossa olevien keskeisten funktioiden ja muuttujien nimet sekä kommentit siitä, mitä ne tekevät. Kuvan ylimmässä kohdassa näkyvät siis tilakoneen eri tilat tallennettuna enum luokkaan nimeltä State. Updatefunktiota kutsutaan jokaisella framella, joka siis päivittää agenttia kokoajan. Tämä on varmasti finite state machinen toiminnan kannalta kaikkein tärkein funktio, joten katsotaan sen toteutusta tarkemmin seuraavalla sivulla. Seuraavaksi tulevat eri tiloille ominaiset funktiot eli idle, attack ja search. Idlefunktiota kutsutaan kun aktiivinen tila on normal, attackia kun tila on alert ja searchia kun tila on evasion. Funktio getcurrentstate kertoo sen hetkisen aktiivisen tilan. Viimeisenä on pino nimeltä statestack, jonne siis tilat tallennetaan ja pinon päällimmäinen elementti on sen hetkinen aktiivinen tila. Kuten huomataan, C++:ssa on pino tietorakenne jo valmiiksi toteutettu standardikirjastossa, joten sitä ei onneksi tarvitse itse koodata.
6 5 Kuva 3. Update-funktio. Sitten update-funktiosta tarkemmin. Se tsekkaa aina aluksi etäisyyden pelaajan ja agentin välillä sekä piirtää viivan Bresenhamin algoritmilla, jonka avulla testataan ettei mikään ole estämässä näköyhteyttä pelaajaan, tämän toteutuksesta seuraavassa luvussa. Seuraavaksi tulee switch-rakenne, jossa aluksi katsotaan mikä tila on tällä hetkellä aktiivinen getcurrentstate-funktiolla. Aktiivisen tilan perusteella kutsutaan joko idle-, attack- tai search-funktiota. Esimerkiksi jos aktiivinen tila on normal, kutsutaan idle-funktiota joka näyttää seuraavalta. Kuva 4. Idle-funktio.
7 6 Idle-funktiossa aluksi katsotaan, onko pelaaja näköetäisyydellä ja nähdäänkö häntä (eli mikään ei estä näköyhteyttä, checklos niminen funktio). Mikäli nämä ehdot toteutuvat, pelaaja on nähty, jolloin pinoon statestack pusketaan päällimmäiseksi elementiksi alert-tila. Nyt kun seuraavalla framella update-funktio pyörähtää alusta taas, agentin tilaksi muuttuu alert ja kutsutaan attack-funktiota. Jos taas ehdot eivät toteudu, eli pelaaja on liian kaukana tai seinän takana, agentti ei tee mitään muuta kuin seisoskelee paikallaan sillä tekoäly on (vielä) hyvin simppeli ja tyhmä. Kuten aiemmin totesin, finite state machinet ovat yksi eniten käytetyistä tekoälytekniikoista peleissä, ja niiden avulla saadaan aikaiseksi hyvinkin monimutkaisia kokonaisuuksia. Alla olevassa kuvassa 5 on esitelty vanhan klassikko pelin Quaken (1996) Shambler hirviön tilakone, joka on toteutettu täysin samalla tavalla, mutta siinä on lisäksi käytetty alemman tason tilakoneita, eli Attack State ja Melee Attack jakautuvat alitiloihin. Kuva 5. Quaken Shambler hirviön tilakone.
8 7 3 Bresenhamin algoritmi Toinen keskeinen asia pelini kannalta oli se, että agentit eivät näkisi pelaajaa pelikentän seinien läpi. Tähän avuksi löytyi Bresenhamin algoritmi. Homman ideana on siis piirtää jana pelaajan ja agentin välille Bresenhamin algoritmin avulla ja katsoa, ettei mikään janan pisteistä osu esteeseen, kuten seinään. Janaa ei kannata piirtää tavallisen suoran yhtälön y = kx + b mukaan, koska laskemisessa tarvitaan silloin runsaasti prosessoriaikaa vieviä kertolaskuja. DDA-algoritmi käyttää kertolaskujen tilalla yhteenlaskuja. DDA-algotimin heikkous on kuitenkin siinä, että sitä käytettäessä joudutaan tekemään jatkuvasti pyöristyksiä. Parempi vaihtoehto janan piirtämiseksi on Bresenhamin algoritmi, joka käyttää pelkästään kokonaislukuaritmetiikkaa. Algoritmi on vanha, vuodelta 1962 peräisin, mutta sitä käytetetään yhä paljon grafiikkaohjelmoinnissa vaikka monia uusia, moderneja algoritmejä on kehitetty, sillä se on nopea ja yksinkertainen. Sitä voidaankin pitää grafiikkaohjelmoinnin alkeisoperaationa. Algoritmin perusideana on iteroida janan x- ja y-komponenteista pidempää ja korottaa sopivin välein piirtokorkeutta. Sopiva väli ei ole kokonaisluku, joten murtolukua simuloidaan virhemuuttujan avulla. Enempää on varmaan turha selittää, sillä se menee enemmän matematiikan puolelle, mutta yksinkertaistettuna lasketaan kokonaislukujen jakolaskua dy/dx. Algoritmi löytyy valmiiksi toteutettuna netistä joka ikiselle ohjelmointikielelle, ja pienellä soveltamisella sain sen omaan peliinikin toimimaan. Kooditasolla janan piirtämistä on varmaan turha alkaa tarkemmin käymään läpi, mutta oleellinen pointti on tekemäni checklos (check line of sight) funktio.
9 8 Kuva 6. Check line of sight funktio. Bresenhamin algoritmilla siis lasketaan omassa funktiossaan janan kaikkien pisteiden koordinaatit, ja ne tallennetaan vektoriin nimeltä points. For-loopissa käydään sitten jokainen janan pisteistä läpi, ja katsotaan levelin toucheswall-funktiolla, osuuko mikään janan pisteistä pelikentän seiniin. Tämän tuloksena siis tiedetään, onko näköyhteyden tiellä seinää estämässä. Bresenhamin algoritmi toimii hyvin line of sightin toteuttamiseen simppeleissä, ylhäältäpäin kuvatuissa peleissä, mutta esimerkiksi 3D-peleissä tarvitaan hyvinkin monimutkaisia menetelmiä line of sightin toteuttamiseen. 4 A*-algoritmi A*-algoritmi on kaikkein suosituin lyhimmän reitin hakualgoritmi pelien tekoälyssä. Se yhdistää kurssilta tutuksi tulleen Dijkstran algoritmin sekä greedy best-first searchin parhaimmat puolet, joka johtaa parhaimpaan tulokseen kun etsitään lyhintä reittiä yhteen kohteeseen. Dijkstran algoritmi toimii hyvin lyhimmän reitin löytämiseen, mutta kuluttaa turhaan resursseja etsiessään reitin kaikkiin mahdollisiin solmuihin, myös sellaisiin, jotka eivät vaikuta lupaavilta lyhimmän reitin kannalta päämäärään. Greedy best-first search taas toimii siten, että tehdään funktio, joka laskee jatkuvasti kuinka kaukana päämäärästä ollaan, ja priorisoidaan niitä reittejä, jotka ovat lähempänä päämäärää. Tämä on kaikista nopein tapa, jos kentässä ei ole mitään esteitä, kuten seiniä. Ongelma tässä tulee tietysti siinä, jos reitillä vastaan tulee jokin este ja joudutaan lähteä etsimään kiertotietä.
10 9 A*-algoritmi käyttää hyödykseen näitä molempia: Dijkstran tapaa laskea lyhin reitti lähtösolmusta ja greedy best-first searchin tapaa priorisoida reittejä, jotka ovat lähimpänä päämäärää. Kuva 7. Dijkstra vs greedy best-first vs A*.
11 10 Kuten kuvasta 7 nähdään hyvin, A* etsii lyhintä reittiä aluksi vain siltä alueelta, joka on lähimpänä päämäärää ja laskee lyhimmän reitin lähtösolmusta päämäärään. Haku aluetta kasvatetaan kauemmaksi päämäärästä, jos reittiä ei löydetä lähialueelta esteen takia, mutta kaikissa mahdollisissa solmuissa ei käydä turhaan, kuten Dijkstran algoritmissa, joten lyhin reitti löydetään paljon nopeammin. Valitettavasti en kerennyt vielä toteuttaa peliini A*-algoritmia C++:lla, sillä sen koodaamisessa on melkoinen työ. Se on kyllä hyvin jo vauhdissa, mutta kooditasolla on tullut törmättyä ongelmallisiin tilanteisiin. 5 Yhteenveto Aluksi harjoitustyön piti käsitellä pelkästään finite state machineja, mutta asia oli hyvin mielenkiintoista ja tuli innostuttua vähän liikaa, tunteja vierähti melkoisesti. Paljon enemmän aikaahan tässä meni asioiden toteuttamiseen kooditasolla omaan peliini kuin algoritmien toimintaan perehtymiseen. Aion varmasti saada peliini A*- algoritmin toimintakuntoon vapaa-ajallani ja tulen parantelemaan tekoälyä uusilla ominaisuuksilla. Minulla on jo paljon ideoita, esimerkiksi: kun vihollinen huomaa pelaajan, se hälyttää myös muut lähialueella olevat viholliset, vihollinen kuulisi askelten äänistä jos pelaaja lähestyy takaapäin tai jos se kuulisi ammuskelua lähettyvillä, ennalta-arvattavuuden parantamista, uusia tiloja, kokonaan uudenlaisia, uniikkeja tekoälyjä eri tyyppisille vihollisille kuten pomo taisteluille. Tulen päivittelemään peliäni GitHubiin aina kun saan siihen jotain uutta esittely kuntoon. Lopuksi laitan vielä linkin videoon, josta näkee tekoälyn toiminnassa pelissäni (videon toimivuus testattu vain Chromella):
12 11 Lähteet 1. Tekoäly tietokonepeleissä. Tampereen teknillisen yliopiston luentokalvot. Viitattu Bevilacqua, F Finite-State Machines: Theory and Implementation. Artikkeli sivustolla Tuts+. Viitattu Nystrom, R Game Programming Patterns. Genever Benning. 4. Bresenhamin algoritmi. Artikkeli Wikipediassa. Viitattu Savioja, L Viivan toteutus. TKK:n luentokalvot. Viitattu /2007/lectures/tg2c_viivantoteutus.pdf. 6. Introduction to A*. Artikkeli sivustolla Red Blob Games. Liitteet Lähdekoodit ovat luettavissa varmaan helpommin GitHub repostani kuin että alkaisin koodeja tähän raporttiin laittamaan. Keskeiset koodit tekoälyn kannalta löytyvät GHOST kansion alta tiedostoista Enemy.cpp ja Enemy.h.
KODU. Lumijoen peruskoulu
KODU Lumijoen peruskoulu Sisällysluettelo 1. Aloitus... 2 1.1 Pelin tallennuspaikka... 2 1.2 Kodu Game lab... 3 2 Maan luominen... 4 2.1. Seinän tekeminen... 5 2.2. Vesialueen tekeminen peliin... 6 2.3.
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ätiedotLuento 2: Viivan toteutus
Tietokonegrafiikan perusteet T-111.4300 3 op Luento : Viivan toteutus Lauri Savioja 11/07 Primitiivien toteutus / 1 GRAAFISTEN PRIMITIIVIEN TOTEUTUS HUOM! Oletuksena on XY-koordinaatisto Suorien viivojen
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ätiedotMatematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 6 Sarjojen suppeneminen Kiinnostuksen kohteena on edelleen sarja a k = a + a 2 + a 3 + a 4 +... k= Tämä summa on mahdollisesti äärellisenä olemassa, jolloin sanotaan
LisätiedotMatematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 4 Supremum ja inmum Tarkastellaan aluksi avointa väliä, Tämä on joukko, johon kuuluvat kaikki reaaliluvut miinus yhdestä yhteen Kuitenkaan päätepisteet eli luvut ja
LisätiedotSolidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi
Solidity älysopimus ohjelmointi Sopimus suuntautunut ohjelmointi Merkle puu Kertausta eiliseltä Solidity on korkean tason älysopimus ohjelmointikieli Muistuttaa olio-ohjelmointia Javalla Sopimuskoodi on
Lisätiedot13 Lyhimmät painotetut polut
TIE-20100 Tietorakenteet ja algoritmit 297 13 Lyhimmät painotetut polut BFS löytää lyhimmän polun lähtösolmusta graafin saavutettaviin solmuihin. Se ei kuitenkaan enää suoriudu tehtävästä, jos kaarien
LisätiedotJOHDATUS TEKOÄLYYN TEEMU ROOS
JOHDATUS TEKOÄLYYN TEEMU ROOS KURSSIN PERUSTIEDOT VALINNAINEN AINEOPINTOTASOINEN KURSSI, 5 OP PERIODI 3: 16.1.2017-3.3.2016 (7 VIIKKOA+KOE) LUENNOT (CK112): MA 14-16, TI 14-16 LASKUHARJOITUKSET: RYHMÄ
LisätiedotJOHDATUS TEKOÄLYYN TEEMU ROOS
JOHDATUS TEKOÄLYYN TEEMU ROOS KURSSIN PERUSTIEDOT VALINNAINEN AINEOPINTOTASOINEN KURSSI, 4 OP PERIODI 1: 6.9.2012-12.10.2012 (6 VIIKKOA) LUENNOT (B123, LINUS TORVALDS -AUDITORIO): TO 10-12, PE 12-14 LASKUHARJOITUKSET
LisätiedotJOHDATUS TEKOÄLYYN TEEMU ROOS
JOHDATUS TEKOÄLYYN TEEMU ROOS KURSSIN PERUSTIEDOT VALINNAINEN AINEOPINTOTASOINEN KURSSI, 5 OP PERIODI 3: 18.1.2016-6.3.2016 (7 VIIKKOA+KOE) LUENNOT (CK112): MA 14-16, TI 14-16 LASKUHARJOITUKSET: RYHMÄ
LisätiedotJOHDATUS TEKOÄLYYN TEEMU ROOS
JOHDATUS TEKOÄLYYN TEEMU ROOS KURSSIN PERUSTIEDOT VALINNAINEN AINEOPINTOTASOINEN KURSSI, 5 OP PERIODI 1: 4.9.2014-17.10.2012 (7 VIIKKOA+KOE) LUENNOT (B123, LINUS TORVALDS -AUDITORIO): TO 10-12, PE 12-14
LisätiedotAlgoritmit 1. Luento 9 Ti Timo Männikkö
Algoritmit 1 Luento 9 Ti 7.2.2017 Timo Männikkö Luento 9 Graafit ja verkot Kaaritaulukko, bittimatriisi, pituusmatriisi Verkon lyhimmät polut Floydin menetelmä Lähtevien ja tulevien kaarien listat Forward
LisätiedotTuringin koneen laajennuksia
Turingin koneen laajennuksia Turingin koneen määritelmään voidaan tehdä erilaisia muutoksia siten että edelleen voidaan tunnistaa tasan sama luokka kieliä. Moniuraiset Turingin koneet: nauha jakautuu k
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016
TIEA24 Automaatit ja kieliopit, syksy 206 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 206 Sisällys Kolme laskennan mallia kuvitteellisia (abstrakteja) koneita eli automaatteja lukevat syötteen
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ätiedotSudenkuoppia, yllätyksiä, pään vaivaa
Aika Rahoitus Sudenkuoppia, yllätyksiä, pään vaivaa Odotukset: Tilaaja(t), toteuttaja(t) Osaaminen: Liikaa tietoa/liian vähän tietoa Sopimusasiat (tekijänoikeus, tilauksen toimitussopimus, yhteistyösopimus)
LisätiedotAlgoritmit 1. Luento 8 Ke Timo Männikkö
Algoritmit 1 Luento 8 Ke 1.2.2017 Timo Männikkö Luento 8 Järjestetty binääripuu Solmujen läpikäynti Binääripuun korkeus Binääripuun tasapainottaminen Graafit ja verkot Verkon lyhimmät polut Fordin ja Fulkersonin
LisätiedotT Harjoitustyöluento
29. syyskuuta 2010 Luennon sisältö 1 2 3 Simulaatiopalvelin Moodle Harjoitustyön demoaminen 4 Aikataulu Kysyttävää? Harjoitustyössä toteutetaan ohjelma, joka simuloi reititintä: ohjelma vastaanottaa reititysdataa
Lisätiedot2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.
Tietorakenteet, laskuharjoitus 11, ratkaisuja 1. Leveyssuuntaisen läpikäynnin voi toteuttaa rekursiivisesti käsittelemällä jokaisella rekursiivisella kutsulla kaikki tietyllä tasolla olevat solmut. Rekursiivinen
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ä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ätiedotAluksi. 1.1. Kahden muuttujan lineaarinen yhtälö
Aluksi Matematiikan käsite suora on tarkalleen sama asia kuin arkikielen suoran käsite. Vai oliko se toisinpäin? Matematiikan luonteesta johtuu, että sen soveltaja ei tyydy pelkkään suoran nimeen eikä
LisätiedotL9: Rayleigh testi. Laskuharjoitus
L9: Rayleigh testi Laskuharjoitus Data on tiedoston Rayleighdata.dat 1. sarake: t = t i Ajan hetket ovat t = t 1, t 2,..., t n, missä n = n = 528 Laske ja plottaa välillä f min = 1/P max ja f max = 1/P
LisätiedotHarjoitussuunnitelma viikko 15 Sisäsyrjäpotku I
Harjoitussuunnitelma viikko 15 Sisäsyrjäpotku I = Pelikenttä = Keiloilla rajattu alue = Pelaaja = Maalivahti = Valmentaja = Pallo = Liike pallon kanssa = Liike ilman palloa = Syöttö tai potku = Keila Harjoituskerran
LisätiedotHarjoitussuunnitelma viikko 17 Kärkipotku I
Harjoitussuunnitelma viikko 17 Kärkipotku I = Pelikenttä = Keiloilla rajattu alue = Pelaaja = Maalivahti = Valmentaja = Pallo = Liike pallon kanssa = Liike ilman palloa = Syöttö tai potku = Keila Harjoituskerran
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ätiedotTehtävänanto oli ratkaista seuraavat määrätyt integraalit: b) 0 e x + 1
Tehtävä : Tehtävänanto oli ratkaista seuraavat määrätyt integraalit: a) a) x b) e x + Integraali voisi ratketa muuttujanvaihdolla. Integroitava on muotoa (a x ) n joten sopiva muuttujanvaihto voisi olla
LisätiedotMatopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö
Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut
Lisätiedot58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)
811 Tietorakenteet (kevät 9) Harjoitus 11, ratkaisuja (Topi Musto) 1. Bellmanin-Fordin algoritmin alustusvaiheen jälkeen aloitussolmussa on arvo ja muissa solmuissa on arvo ääretön. Kunkin solmun arvo
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ä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ätiedotSokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi olioperustainen sokkeloseikkailu peli Javakielellä. Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen
LisätiedotHarjoitussuunnitelma viikko 18 Kärkipotku II
Harjoitussuunnitelma viikko 18 Kärkipotku II = Pelikenttä = Keiloilla rajattu alue = Pelaaja = Maalivahti = Valmentaja = Pallo = Liike pallon kanssa = Liike ilman palloa = Syöttö tai potku = Keila Harjoituskerralla
LisätiedotOikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.
Tietorakenteet, kevät 2012 Kurssikoe 2, mallivastaukset 2. (a) Järjestämistä ei voi missään tilanteessa suorittaa nopeammin kuin ajassa Θ(n log n), missä n on järjestettävän taulukon pituus. Epätosi: Yleisessä
LisätiedotÄärellisten automaattien ja säännöllisten lausekkeiden minimointi
Äärellisten automaattien ja säännöllisten lausekkeiden minimointi Timi Suominen, Riia Ohtamaa ja Pessi Moilanen Helsinki..01 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Äärellisten automaattien
LisätiedotMitä on konvoluutio? Tutustu kuvankäsittelyyn
Mitä on konvoluutio? Tutustu kuvankäsittelyyn Tieteenpäivät 2015, Työohje Sami Varjo Johdanto Digitaalinen signaalienkäsittely on tullut osaksi arkipäiväämme niin, ettemme yleensä edes huomaa sen olemassa
LisätiedotLabyrintti. Pelihahmon toiminta. Piirrä pelihahmo (älä piirrä esim. sivusta, ettei hahmon tarvitse
Labyrintti 1 Kerää aarteita labyrintista samalla kuin siellä liikkuu haamu. Seiniksi käyvät mm. vaaralliset laserit ja lava, mutta pienellä lisävaivalla niistä voi tehdä myös kiinteät ja vaarattomat Mallipeli
LisätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen
LisätiedotLuku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti
Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan
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ätiedotS09 04 Kohteiden tunnistaminen 3D datasta
AS 0.3200 Automaatio ja systeemitekniikan projektityöt S09 04 Kohteiden tunnistaminen 3D datasta Loppuraportti 22.5.2009 Akseli Korhonen 1. Projektin esittely Projektin tavoitteena oli algoritmin kehittäminen
LisätiedotMatematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 3 Supremum ja infimum Tarkastellaan aluksi avointa väliä, ) = { : < < }. Tämä on joukko, johon kuuluvat kaikki reaaliluvut miinus yhdestä yhteen. Kuitenkaan päätepisteet
LisätiedotTIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012
TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. tammikuuta 2012 Sisällys Sisällys Äärellisiä automaatteja PUSH ON PUSH OFF Q T Q J C C H S C,Q C,Q 0 50s 1e
Lisätiedot13/20: Kierrätys kannattaa koodaamisessakin
Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy
LisätiedotMatematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden
LisätiedotTIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann
LisätiedotMatriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.
Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.
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ä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ätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015
TIEA24 Automaatit ja kieliopit, syksy 205 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 5. marraskuuta 205 Sisällys Käsiteanalyysiä Tarkastellaan koodilukkoa äärellisenä automaattina. Deterministinen äärellinen
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ä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ätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
Lisätiedot1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi ja asettele alkiot siihen.
Joukko-oppia Matematiikan mestariluokka, syksy 2010 Harjoitus 1, vastaukset 20.2.2010 1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi asettele
LisätiedotA ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.
Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =
LisätiedotÄlysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi
Älysopimusten kehittäminen Sopimus suuntautunut ohjelmointi There are currently 5,000 blockchain developers. By 2020, we project a global need for over 500,000 - ConsenSys Älysopimus alustat q Ethereum
LisätiedotTaso 1. Yhden pelaajan pallokontrollitemput SORMILYÖNTI HIHALYÖNTI
Taso 1 Yhden pelaajan pallokontrollitemput SORMILYÖNTI 1. Heitä pallo, tee 1 sormilyönti ja ota koppi x 10 3. Heitä pallo, tee 2 sormilyöntiä ja ota koppi x 10 5. Heitä pallo, tee 3 sormilyöntiä ja ota
LisätiedotKommunikaatio Visa Linkiö. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly
Kommunikaatio MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly 2.11.2016 Visa Linkiö The document can be stored and made available to the public on the open internet pages of Aalto University.
LisätiedotHarjoitussuunnitelma viikko 14 Potkaiseminen II
Harjoitussuunnitelma viikko 14 Potkaiseminen II = Pelikenttä = Keiloilla rajattu alue = Pelaaja = Maalivahti = Valmentaja = Pallo = Liike pallon kanssa = Liike ilman palloa = Syöttö tai potku Harjoituskerralla
LisätiedotLuku 7. Verkkoalgoritmit. 7.1 Määritelmiä
Luku 7 Verkkoalgoritmit Verkot soveltuvat monenlaisten ohjelmointiongelmien mallintamiseen. Tyypillinen esimerkki verkosta on tieverkosto, jonka rakenne muistuttaa luonnostaan verkkoa. Joskus taas verkko
LisätiedotMatematiikan tukikurssi, kurssikerta 3
Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus
LisätiedotJohdatus tekoälyn taustalla olevaan matematiikkaan
Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 3. luento 17.11.2017 Neuroverkon opettaminen (ohjattu oppiminen) Neuroverkkoa opetetaan syöte-tavoite-pareilla
LisätiedotMS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.
MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä. Antti Rasila Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Kevät 2016
LisätiedotMAB3 - Harjoitustehtävien ratkaisut:
MAB - Harjoitustehtävien ratkaisut: Funktio. Piirretään koordinaatistoakselit ja sijoitetaan pisteet:. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä. Funktiolla
LisätiedotBoard Game Lab. 7 Pelimekaniikat ja -systeemit. Materiaalit CC-BY 4.0 Mikko Lampi
Board Game Lab 7 Pelimekaniikat ja -systeemit Materiaalit CC-BY 4.0 Mikko Lampi Sisältö Alustus 1. Mekaniikat ja niiden tehtävät 2. Miten valitsen tai suunnittelen mekaniikkoja? 3. Pelimekaniikat ja -systeemit
LisätiedotA* Reitinhaku Aloittelijoille
A* Reitinhaku Aloittelijoille Alkuperäisen artikkelin kirjoittanut Patrick Lester, suomentanut Antti Veräjänkorva. Suom. huom. Tätä kääntäessäni olen pyrkinyt pitämään saman alkuperäisen tyylin ja kerronnan.
Lisätiedot= 2 L L. f (x)dx. coshx dx = 1 L. sinhx nπ. sin. sin L + 2 L. a n. L 2 + n 2 cos. tehdään approksimoinnissa virhe, jota voidaan arvioida integraalin
BMA7 - Integraalimuunnokset Harjoitus 9. Määritä -jaksollisen funktion f x = coshx, < x < Fourier-sarja. Funktion on parillinen, joten b n = kun n =,,3,... Parillisuudesta johtuen kertoimet a ja a n saadaan
LisätiedotMatematiikan tukikurssi, kurssikerta 4
Matematiikan tukikurssi, kurssikerta 4 1 Raja-arvo äärettömyydessä Tietyllä funktiolla f() voi olla raja-arvo äärettömyydessä, jota merkitään f(). Tämä tarkoittaa, että funktio f() lähestyy jotain tiettyä
LisätiedotMAB3 - Harjoitustehtävien ratkaisut:
MAB3 - Harjoitustehtävien ratkaisut: 1 Funktio 1.1 Piirretään koordinaatistoakselit ja sijoitetaan pisteet: 1 1. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä.
LisätiedotT-110.4100 Harjoitustyöluento
1. lokakuuta 2009 Yhteenveto 1 2 3 Linkkitilaprotokolla 4 5 6 DL! Ensimmäinen deadline lähestyy: harjoitustyön suunnitelma pitäisi palauttaa 15.10 klo 12 mennessä. Itse harjoitustyöstä lisää tuota pikaa..
LisätiedotInsinöörimatematiikka D
Insinöörimatematiikka D M. Hirvensalo mikhirve@utu.fi V. Junnila viljun@utu.fi Matematiikan ja tilastotieteen laitos Turun yliopisto 2015 M. Hirvensalo mikhirve@utu.fi V. Junnila viljun@utu.fi Luentokalvot
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ätiedotImplementation of Selected Metaheuristics to the Travelling Salesman Problem (valmiin työn esittely)
Implementation of Selected Metaheuristics to the Travelling Salesman Problem (valmiin työn esittely) Jari Hast xx.12.2013 Ohjaaja: Harri Ehtamo Valvoja: Hari Ehtamo Työn saa tallentaa ja julkistaa Aalto-yliopiston
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ätiedotMatematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 6 1 Korkolaskentaa Oletetaan, että korkoaste on r Jos esimerkiksi r = 0, 02, niin korko on 2 prosenttia Tätä korkoastetta käytettään diskonttaamaan tulevia tuloja ja
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ätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko
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ätiedotEsimerkkejä polynomisista ja ei-polynomisista ongelmista
Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia
LisätiedotYhtälön oikealla puolella on säteen neliö, joten r. = 5 eli r = ± 5. Koska säde on positiivinen, niin r = 5.
Tekijä Pitkä matematiikka 5 7..017 31 Kirjoitetaan yhtälö keskipistemuotoon ( x x ) + ( y y ) = r. 0 0 a) ( x 4) + ( y 1) = 49 Yhtälön vasemmalta puolelta nähdään, että x 0 = 4 ja y 0 = 1, joten ympyrän
LisätiedotKertausta: avaruuden R n vektoreiden pistetulo
Kertausta: avaruuden R n vektoreiden pistetulo Määritelmä Vektoreiden v R n ja w R n pistetulo on v w = v 1 w 1 + v 2 w 2 + + v n w n. Huom. Pistetulo v w on reaaliluku! LM2, Kesä 2014 164/246 Kertausta:
LisätiedotAlgoritmit 2. Luento 6 To Timo Männikkö
Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100
LisätiedotUML -mallinnus TILAKAAVIO
UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat
LisätiedotPython-ohjelmointi Harjoitus 2
Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento
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ätiedotOhjelmistojen mallintaminen olioiden elinkaaret - tilakaavio. 21.11.2008 Harri Laine 1
Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio 21.11.2008 Harri Laine 1 Joidenkin järjestelmien sisältömallissa on erotettavissa luokkia, joiden ilmentymien käyttäytymisen kuvaaminen, kirjaus
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ätiedotKäy vastaamassa kyselyyn kurssin pedanet-sivulla (TÄRKEÄ ensi vuotta ajatellen) Kurssin suorittaminen ja arviointi: vähintään 50 tehtävää tehtynä
Käy vastaamassa kyselyyn kurssin pedanet-sivulla (TÄRKEÄ ensi vuotta ajatellen) Kurssin suorittaminen ja arviointi: vähintään 50 tehtävää tehtynä (vihkon palautus kokeeseen tullessa) Koe Mahdolliset testit
Lisätiedot811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu
1312A Tietorakenteet ja algoritmit, 2018-2019, Harjoitus 5, Ratkaisu Harjoituksen aihe ovat hash-taulukot ja binääriset etsintäpuut Tehtävä 5.1 Tallenna avaimet 10,22,31,4,15,28,17 ja 59 hash-taulukkoon,
LisätiedotSe mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.
Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen
LisätiedotAvainsanat: peli, matematiikka, polynomi, yhteen- ja vähennyslasku, kertolasku
Pasi Leppäniemi OuLUMA, sivu 1 POLYNOMIPELI Avainsanat: peli, matematiikka, polynomi, yhteen- ja vähennyslasku, kertolasku Luokkataso: 8-9 lk Välineet: pelilauta, polynomikortit, monomikortit, tuloskortit,
LisätiedotLuento 6: Tulostusprimitiivien toteutus
Tietokonegrafiikan perusteet T-111.4300 3 op Luento 6: Tulostusprimitiivien toteutus Lauri Savioja 11/07 Primitiivien toteutus / 1 ntialiasointi Fill-algoritmit Point-in-polygon Sisältö Primitiivien toteutus
Lisätiedot811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta
811312A Tietorakenteet ja algoritmit 2018-2019 Kertausta jälkiosasta V Hashtaulukot ja binääriset etsintäpuut Hashtaulukot Perusajatus tunnettava Tiedettävä mikä on tiivistefunktio Törmäysongelman hallinta:
LisätiedotHarjoitustyön testaus. Juha Taina
Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida
Lisätiedot6.4. Järjestyssuhteet
6.4. Järjestyssuhteet Joukon suhteilla voidaan kuvata myös alkioiden järjestystä tietyn ominaisuuden suhteen. Järjestys on myös kaksipaikkainen suhde (ja on monia erilaisia järjestyksiä). Suhde R joukossa
LisätiedotKahoot - kyselytyökalu
Kahoot - kyselytyökalu Kahoot on pelimäinen työkalu kyselyiden, keskusteluiden ja tiedon kartoitukseen. Se on täysin ilmainen ja sitä voivat käyttää niin opettajat kuin opiskelijatkin. Kyselyitä on tarkoitus
LisätiedotYleistä vektoreista GeoGebralla
Vektoreita GeoGebralla Vektoreilla voi laskea joko komentopohjaisesti esim. CAS-ikkunassa tai piirtämällä piirtoikkunassa. Ensimmäisen tavan etuna on, että laskujen tueksi muodostuu kuva. Tästä on varmasti
Lisätiedot