Ohjelmistoarkkitehtuurit harjoitustyö RobotWarGame RobotFW SimulationFW SimulationGUIFW SWT/Java Kuva 1: Esimerkki arkkitehtuurin kerroskuvasta

Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit harjoitustyö 2008

T harjoitustehtävät, syksy 2011

Ohjelmistoarkkitehtuurit 2006 Harjoitustyön loppudokumentti. Robottisota. Ryhmä: <numero> Heikki Suontausta

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

T harjoitustyö, kevät 2012

OHJ-7400 Graafisen käyttöliittymän ohjelmointi 4/6 op

OHJ-7400 Graafisen käyttöliittymän ohjelmointi 4/6 op

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

CTRL+F Android-sovellus

Ohje kehitysympäristöstä. Dokumentti: Ohje kehitysympäristöstä.doc Päiväys: Projekti : AgileElephant

Ohjelmistoarkkitehtuurit. Syksy 2008

Harjoitustehtävät ja ratkaisut viikolle 48

Valppaan asennus- ja käyttöohje

OHJ-7400 Graafisen käyttöliittymän ohjelmointi, Harjoitustyö

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

A4.1 Projektityö, 5 ov.

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

T Harjoitustyöluento

TURNAUSOHJEET. Turnauksen tavoite. Ennen aloitusta. Taistelukierroksen Pelaaminen.

OHJ-3100 Ohjelmien ylläpito ja evoluutio. Harjoitustyö Teekkarien Kosto Yleiskuvaus

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Ohjelmistojen mallintaminen. Luento 11, 7.12.

OHJ-7400 Graafisen käyttöliittymän ohjelmointi, syksy 2013 Harjoitustyöohje (runko Pinball Mästeriin)

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

HiTechnic -kompassisensorin käyttäminen NXT-G -ympäristössä

T Harjoitustyöluento

Tik Ohjelmistoprojektien Hallinta

12. Kehysarkkitehtuurit

Ohjelmistotekniikan menetelmät, kesä 2008

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

Ohjelmistoarkkitehtuurit. Kevät

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

T Käyttäjäkeskeisen tuotekehityksen harjoitustyö kevät 2005

Tik Harjoitustyö

58160 Ohjelmoinnin harjoitustyö

Sisältö. Työn idea Protokollat. Harjoitustyön käytäntöjä. Työn demoaminen. Etäisyysvektori Linkkitila. Palvelin Moodle SSH-tunnelit

Harjoitus 3: Vaatimukset

TIEA343 - Robottiohjelmointi 2011

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

SÄÄNNÖT. Language: English / Suomi

Harjoitustyöinfo kevät TU-A1100 Tuotantotalous 1

Kurssin tavoitteista uennot. 4.1 Projektityö, 5 ov. Esitietovaatimukset

GeoGebra-harjoituksia malu-opettajille

Harjoitustyöinfo kevät TU-A1100 Tuotantotalous 1

TIE Ohjelmistojen suunnittelu

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Uudelleenkäytön jako kahteen

b) Määritä myös seuraavat joukot ja anna kussakin tapauksessa lyhyt sanallinen perustelu.

Ohjelmistojen mallintaminen, kesä 2010

Markkinoitten mallintaminen ja Internet-markkinat

Gimp JA MUUT KUVANKÄSITTELYOHJELMAT

Ohjelmointi 1 / syksy /20: IDE

EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille Meeri Nieminen

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

P97 seututaitokoulu 8/ (1h,45min)

Tietotekniikan Sovellusprojektit

8. Kehysarkkitehtuurit

4. Lausekielinen ohjelmointi 4.1

RYM-C3001 Projektityökurssi 2

Pyramidin yleiset säännöt

OHJ-3010 Ohjelmistotuotannon perusteet, kesä 2012

11. Kehysarkkitehtuurit

Tik Harjoitustyö

Eclipse 3.1 Pikaopas versio 1.0

Visual Case 2. Miika Kasnio (C9767)

Datatähti 2019 loppu

Ohjelmiston toteutussuunnitelma

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Tietotekniikan laitoksen uusi linja

Autotallin ovi - Tehtävänanto

Ohjelmistojen mallintaminen, kesä 2009

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

SGN-4200 Digitaalinen Audio Harjoitustyö-info

XXIII Keski-Suomen lukiolaisten matematiikkakilpailu , tehtävien ratkaisut

KÄYTTÄJÄKOKEMUKSEN PERUSTEET, TIE-04100, SYKSY Käyttäjätutkimus ja käsitteellinen suunnittelu. Järjestelmän nimi. versio 1.0

Ohjelmistotekniikan menetelmät, kevät 2008

1. Miten tehdään peliin toinen maila?

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Toinen harjoitustyö. ASCII-grafiikkaa

Sisällysluettelo. 1. Johdanto


TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Ohjelmistoarkkitehtuurit. Syksy 2010

finnish BOI 2015, päivä 1. Muistiraja: 256 MB

VAPAASTI VALITTAVIEN TUTKINNON OSIEN OSAAMISEN ARVIOINNIN SUUNNITELMA

Kokonaisuuksien, riippuvuuksien ja synergioiden hahmottaminen helpottuvat

Harjoitustyö Ohjaaja: Outi Räihä TE213. OHJ-3100 Ohjelmien ylläpito ja evoluutio. Yleiskatsaus.

OMASSA SEURAYMPÄRISTÖSSÄ TOTEUTETTAVAT TESTIT

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Säännöt & Asetukset. Säännöt & Asetukset. Versio 1.00 /

TIE Ohjelmistojen suunnittelu

S11-09 Control System for an. Autonomous Household Robot Platform

Kaksintaistelun approksimatiivinen mallintaminen (valmiin työn esittely)

Insinöörimatematiikan tentin toteuttaminen EXAM-järjestelmällä

Transkriptio:

Ohjelmistoarkkitehtuurit harjoitustyö 2006 1 Johdanto Harjoitustyönä on toteuttaa kerroksittainen sovelluskehys erilaisten simulaatioon perustuvien pelien tekemiseen. Kehyksestä lisäksi erikoistetaan keskenään taistelevien robottien simulaation mahdollistava sovellus. Harjoitustyö tulee toteuttaa Java-kielellä. 2 Rakenne Toteutettavan ohjelmiston kerrosrakennetta on havainnollistettu kuvassa 1. Harjoitustyössä on toteutettavana kolme ylintä kerrosta. Simulaatiokehyksen käyttämä käyttöliittymäkehys (SimulationGUIFW) annetaan valmiina. Paketti ja sen dokumentaatio löytyvät kurssin harjoitustyösivuilta. RobotWarGame RobotFW SimulationFW SimulationGUIFW SWT/Java Kuva 1: Esimerkki arkkitehtuurin kerroskuvasta 3 Simulaatiokehys Simulaatiokehyksen vastuualueena on tarjota kaikkien huomioitujen sovelluserikoistuksien yhteinen toiminnallisuus ja määritellä käytettävät rajapinnat. Simulaatiokehyksen vastuulla on lisäksi käyttää annettua käyttöliittymäkirjastoa ja näin tarjota eri erikoistuksille yhteinen käyttöliittymä. Vaikka työssä tehdään vain yksi erikoistus simulaatiokehykselle, on hyvä pitää ainakin suunnittelun aikana mielessä muutkin mahdolliset erikoistukset. Tällöin voi variointitapojen ja ominaisuuksien toteutuksen sijoittelun hahmottaminen helpottua. Esimerkkinä toisesta erikoistuksesta voi käyttää vaikkapa tunnettua Game of Life:a [http://en.wikipedia.org/wiki/conway%27s_game_of_life] myös muiden erikoistusesimerkkien käyttäminen on sallittua (ja jopa toivottavaa). 4 Robottikehys Robottikehyksen tarkoituksena on tarjota erilaisiin robottisimulaatioihin liittyvä yhteinen toiminnallisuus. Robotin oletetaan koostuvan rungosta ja siihen liittyvistä mielivaltaisista varusteista. Robottien keskenäinen vuorovaikutus ja simulaation säännöt kuuluvat robottikehyksen erikoistuksen vastuulle. Kuten simulaatiokehyksenkin tapauksessa tässäkin pitää varsinkin suunnittelussa ottaa huomioon muidenkin kuin yhden ainoan

mahdollisen erikoistuksen vaatimukset. 5 Robottisota erikoistus Robottisota on peli, jossa pelaajat ohjelmoivat Java-kielellä robottinsa toimintalogiikan. Itse pelisimulaation, eli taistelun, aikana robotit toimivat täysin autonomisesti. Taistelun kulku on seuraava: 1. Sovelluksen käyttäjä sijoittaa haluamansa taisteluun osallistuvat robotit työkalupalkista taistelualueelle. 2. Taistelu alkaa. 3. Kukin robotti saa vuorollaan tehdä rajoitetun määrän toimenpiteitä. Toimenpiteiksi lasketaan tutkan käyttö, aseiden käyttö sekä kulkusuunnan ja nopeuden muuttaminen. 4. Kun vuoro on ohi, robotti liikahtaa askeleen eteenpäin kulkusuunnassaan. Askeleen pituus riippuu robotin nopeudesta. 5. Taistelu päättyy kun jäljellä on enää yksi robotti, joka on voittaja. Pelissä siis robottien taistellessa ohjelmoijat kilpailevat keskenään parhaimman tekoälyn ohjelmoimisesta robotilleen. Robotteja on oltava siten mahdollista ohjelmoida jälkikäteen ja ne ladataankin plugineina sovelluksen käynnistyessä jostakin tietystä hakemistosta. Robotit eroavat toisistaan tekoälynsä lisäksi siinä, että niillä voi olla myös erilainen taisteluvarustus. Varustukseen kuuluvat erilaiset aseet (mm. tykki, miina tai laser), suojat ja moottori. Kullakin varusteella on jokin teho, jonka mukaan sen vaikutus lasketaan; massa, mikä vaikuttaa liikenopeuteen huonontavasti; terveys, joka pienenee vastustajien osumista ja vaikuttaa varusteen tehoon sekä hinta, mikä luonnollisesti rajoittaa eri varusteiden hankkimista. Edellä mainittujen ominaisuuksien tarkat numeroarvot ja niiden tarkka vaikutus ovat ryhmän päätettävissä, kunhan niiden laskukaavat dokumentoidaan ja niiden avulla on mahdollista muodostaa luontevasti toimivia ja ominaisuuksistaan monipuolisesti erilaisia robotteja. Esimerkiksi hyvien suojien kanssa ei saa vahvaa moottoria tai aseistusta jne. Aseiden vaikutuksen laskemisessa voi käyttää esim. jotain lukemaa ( huipputehoa ) kun ammus on osunut kohdalle, maksimietäisyyttä joka on aseen vaikutuspiiri ja lineaarista interpolaatiota käyttäen laskea ammuksen osuman teho kullekin robotille. 5.1 Eri varusteiden vaikutus ja käyttö Taulukossa 1 on kuvattu tarkemmin eri varusteiden käyttö- ja vaikutustavat. Taulukko 1: Eri varusteiden kuvaukset Tutka Varuste Kuvaus Tutkalla pystyy keilaamaan halutun levyisen sektorin yhdellä kertaa. Keilauksen jälkeen tutka ilmoittaa kyseisellä sektorilla olleiden maalien etäisyydet. Mitä leveämpi sektori on, sen epätarkempi tulos on, mutta vuoron aikana pystyy keilaamaan leveämmän alueen. Tutkia voi olla erilaisia esim. kantaman ja (etäisyys)tarkkuuden perusteella.

Tykkiase Varuste Laserase (vapaaehtoinen) Miina-ase (vapaaehtoinen) Suojat Moottori Kuvaus Käyttö tapahtuu siten, että tykillä ammutaan johonkin suuntaan tietylle etäisyydelle. Osuman voimakkuus riippuu osumatarkkuudesta ja tykin tehosta. Laserilla ammutaan yksinkertaisesti haluttuun suuntaan. Tykkiin verrattuna laserilla tulee osua huomattavasti tarkemmin, mutta vaikutus kohteeseen on osuttaessa voimakkaampi. Miina jätetään yksinkertaisesti siihen paikkaan, missä robotti on. Miina laukeaa kun sen päältä kulkee ja vaikutus kohdistuu erityisesti robotin moottoriin. Suojilla on tehtävänä nimensä mukaisesti suojata robottia vihollisten osumilta. Mitä tehokkaampi suoja on kyseessä, niin sen enemmän se painaa. Suojia voi myös halutessaan kohdistaa tiettyihin osiin robotissa, kuten tykkiin tai moottoriin. Moottori on pakollinen varuste jokaisessa robotissa. Niitä tulee olla eri tehoisia ja eri painoisia valittavana. 5.2 Uuden robotin tekeminen Pelin pelaajan pitää kyetä toteuttamaan robotteja ilman muuta lähdekoodia, joten käytössä olevien robottien tunnistus ja luominen suoritettava dynaamisesti. Tähän sopii Java:n tukeman reflektion käyttö. Hyväksyttyyn suoritukseen riittää esimerkiksi, että erikoistus tutkii jonkin hakemiston (Javan pakkausten ja hakemistojen nimeämiskäytännön mukaan) ja käyttää sieltä löytämiään luokkia robotteina. Eli vaatimuksena on ettei mitään näistä luoda tyyliin new MyRobot();. Harjoitustyössä kuitenkin robotit saavat olla samassa hakemistohierarkiassa muun harjoitustyön kanssa. Robotti tehdään siten, että alustusvaiheessa robotti kokoaa saatavilla olevista varusteista haluamansa konfiguraation. Robottien pelialueelle sijoittelua varten työkalupalkkiin tulee pystyä kysymään robottityypeiltä niiden nimi ja mahdollisesti myös työkalupalkin ikoni. Pelisimulaatiota varten robotista tulee löytyä vuoron toimenpiteiden tekoon tarvittava tekoäly. Eri harjoitustyöryhmien robottien ei tarvitse toimia ristiin, vaan jokainen ryhmä saa määrittää nämä rajapinnat haluamikseen. 6 Yleisiä vaatimuksia Simulaation aikana robottien tila (vähintään energia) tulee näkyä tilanäkymässä ja haluttu robotti tulee olla tunnistettavissa Simulaatiomaailman koko tulee olla muutettavissa Lokiin tulostetaan simulaation aikana tärkeitä tapahtumia tyyliin Robotti sejase kuoli Havainnollistetaan aseiden käyttöä räjähdyksillä yms.

7 Vaadittava dokumentaatio 7.1 Välipalautus Annetun dokumenttipohjan mukaan seuraavat kohdat soveltaen: Vaatimukset järjestelmälle (luvut 1 ja 2) Yleinen kuvaus järjestelmästä ja sen vaatimuksista Variaatiovaatimukset, eli minkälaiseen variointiin toteutettavan kehyksen tulee varautua Omien kehysten arkkitehtuuri (luku 3 ja erityisesti sen kohta 3.1. Kohtaa 3.2 ei vaadita vielä tässä vaiheessa) Korkean tason arkkitehtuuri (luokkakaaviot ja sekvenssikaaviot mahdollisia) Käytetyt suunnittelumallit (mm. luokkakaavio) 7.2 Lopullinen palautus Korjattu/päivitetty versio välipalautuksessa annetusta dokumentista, johon on täydennetty loputkin dokumenttipohjan kohdat. 8 Aikataulu Ti 19.9 Harjoitustyön esittely luennolla Pe 6.10 Välipalautus klo 16.00 mennessä Viikko 41 Tarkastuspalaverit (tenttiviikko ainakin TTY:llä) Pe 8.12 Lopullinen palautus klo 16.00 mennessä 9 Alustavat arvosteluperusteet Tarkoituksena ei ole toteuttaa myyntivalmista peliä/kehystä, vaan pikemminkin hyvä pohja sellaiselle (esim. valtava erilaisten aseiden määrä ei tuo lisäpisteitä, jonkinlainen valinnanvara on silti vaatimuksena). Arvostelussa kiinnitetään erityisesti huomiota seuraaviin asioihin: Simulaatiokehyksen ja erikoistuksen arkkitehtuuri 30% Suunnittelumallien tunnistus ja hyödyntäminen 20% Dokumentaatio 30% Yleinen toimivuus, selkeys yms. 20% Hyväksytyt palautukset arvostellaan pistein 0 2 välipalautuksen ja 0 8 lopullisen palautuksen tapauksissa.

10 Palauttaminen 10.1 Välipalautus Välipalautuksessa palautetaan pelkästään alustava versio dokumentista luvun 10.2 lopun ohjeiden mukaan. 10.2 Lopullinen palautus Harjoitustyön lähdekoodit (EI binääreitä!) palautetaan zip paketissa sisältäen seuraavat hakemistot: Jos työ on tehty Eclipse-editoria käyttäen, tulee palautuspaketin sisältö olla seuraava: / /SimulationGUIFW.zip /SimulationFW.zip /RobotFW.zip /RobotWarGame.zip /readme.txt Zip-paketti sisältäen valmiina annetun toteutuksen Eclipseprojektin VAIN jos sitä on muutettu. Zip-paketti sisältäen oman simulaatiokehyksen toteutuksen Eclipse-projektin kokonaisuudessaan Zip-paketti sisältäen robottikehyksen toteutuksen Eclipseprojektin kokonaisuudessaan Zip-paketti sisältäen erikoistuksen Eclipse-projektin kokonaisuudessaan Tekstitiedosto, jossa on kirjattu ryhmäläisten nimet ja lyhyt käyttö/asennusohje Jos työ on tehty ilman Eclipse-editoria, silloin tarvitsee antaa myös ant-työkalun xmltiedosto(t). Tällöin palautuspaketin sisältö on seuraava: / /SimulationGUIFW/ /SimulationFW/ /RobotFW/ /RobotWarGame/ /readme.txt /build.xml Hakemisto sisältäen valmiina annetun toteutuksen Hakemisto sisältäen oman simulaatiokehyksen toteutuksen Hakemisto sisältäen robottikehyksen toteutuksen Hakemisto sisältäen erikoistuksen toteutuksen Tekstitiedosto, jossa on kirjattu ryhmäläisten nimet ja lyhyt käyttö/asennusohje Ant-scripti joka sisältää vähintään tehtävät compile ja run kääntämiseen ja erikoistuksen ajamiseen. Kummassakin tapauksessa palautuspaketti nimetään seuraavan mallin mukaisesti: ohar_2006-group<ryhmän numero>.zip eli esim. ohar_2006-group1.zip

Ryhmän numero annetaan välipalautuksen yhteydessä. Muistakaa testata ennen palautusta palautuspaketin (ja sen ohjeiden) toimivuus tyhjässä hakemistossa tai workspacessa! Lähdekoodin ja dokumentaation palauttaminen tapahtuu kurssin sivuilla mainittujen yliopistokohtaisten käytäntöjen mukaan.