Ohjelmistojen suunnittelu
Transcription
Ohjelmistojen suunnittelu
Ohjelmistojen suunnittelu - harjoitustyö Muutoksia: -10.10.2014 lisätty laajennettavuus-osuuteen esimerkkiotuksia ja ruutuja. -14.11.2014 lisätty aliluvut Dokumentaation vaatimuksia arvostelukriteereitä (+kuolaavampi kuolakarhun kuva) & Lopullisen palautuksen 1 MARJAMETSÄHTÄVÄ PELI Ensimmäisenä tehtävänä on valita omalle työlle nimi, voit valita vapaasti työohjeen lopussa olevasta listasta parhaiten työtänne kuvaava (tai käyttää jotain muuta hyväksi havaittua jatko-osanimeä). Tämän jälkeen valitsette toteutustekniikan. Jos käytätte jotain muuta kuin Qt:ta ja C++:aa, lähettäkää sähköpostia ohjsuun@cs.tut.fi osoitteeseen ja kertokaa hieman ideastanne. 2 TAUSTATARINA Alkuperäisessä Marjametsän tarinat –pelissä Laura pelasti mielitiettynsä pahantahtoisten metsäneläimien kuten pandojen, pupujen ja norppien kynsistä. Hetken aikaa oli auvoista onnea ja rauhaa, mutta nyt pahuus on herännyt uudelleen. Alkuperäisen pelin tarinaan voi tutustua halutessasi Olio-ohjelmoinnin peruskurssin harjoitustyön työohjeesta ( www.cs.tut.fi/~ohjsuun/marjametsan_tarinat_original.pdf ). Uudessa versiossa Marjametsän armottomat metsäneläimet tekevät paluun ja kaappaavat sankaritar-Lauran äidin/siskon/veljen/tyttöystävän/poikaystävän/kissan/läppärin. Jälleen sankarin on palattava metsälle ja vedettävä pahuuden kätyreitä pataan ja/tai pelastettava kaapattu lemmenkohde. 2.1 ALUSTAVAT ASIAKASVAATIMUKSET PELILLE: pelissä ohjataan sankaria pelissä on graafinen näkymä, jossa sekä sankaria voidaan ohjastaa sekä hiirellä että näppäimistöllä Metsänelikot / otukset liikkuvat tekoälyn opastamana omien sääntöjensä mukaan, otuksia on erilaisia ja niiden käyttäytyminen voi vaihdella esim. muiden otusten, vuoron, sankarin sijainnin, metsästä löytyvien asioiden yms. perusteella. Esimerkkiotukset: o Oravat käyvät kaikkien alle kolmen ruudun etäisyydellä olevien kimppuun mutta pakenevat, jos otus hyökkää niiden kimppuun o Ilveksen menestyksen vuodet ovat takana ja se on täysin hampaaton erityisesti puolustamisessa. Kissaeläinten tapaan sillä on kuitenkin yhdeksän elämää. Ilves saa kaksinkertaiset voimat, jos vastustajalla on kirves. peli on vuoropohjainen, mutta tästä voidaan joustaa, jos toteuttava porukka välttämättä niin vaatii pelin voittaminen, joko haetaan rakas takaisin metsästä tai hoidellaan pimeyden eläinten ruhtinas, itse pääpahuus päiviltä pelissä voi olla useampia erilaisia maastoja jotka vaikuttavat eri tavalla pelissä voi olla useampia eri kenttiä joiden välillä on mahdollista siirtyä peliin tulee mahdollisuus ladata alustustiedostoja, asiakas toimittaa koodin pelissä tulee olla mahdollisuus tallentaa pelitilanne ja jatkaa tallennettua peliä pelin eri otuksilla/hahmoilla on seuraavat ominaisuudet: o liikkumisnopeus (montako toimintoa vuorossa) o voima (kuinka paljon perusvahinkoa otus tekee) o elinvoima (kuinka monta pistettä vahinkoa otus kestää ennen kuin kuolo korjaa) o puolustus (hyökkäyksiltä puolustautuminen/kuinka ketterästi vahingon välttely onnistuu) Otukset voivat taistella: perusversiossa hyökkäyksessä heitetään voiman kertoma määrä kuusisivuisia noppia ja yhteenlaskettu tulos on hyökkäyksen vahinko. Lopullinen vahinko määräytyy hyökkäysvahinko-puolustus laskululla. (jos tulos <= nolla, ei tapahdu mitään, tällöin osuma väistettiin tai paksu karvapeite esti vahingon) 3 HARJOITUSTYÖN RAKENNE JA AIKATAULU Harjoitustyö toteutetaan neljässä eri vaiheessa, jokaisessa vaiheessa ollaan tekemisissä oman assarin kanssa. Jokaisen ryhmän jäsenen on oltava läsnä vähintään kolmessa tapahtumassa ja jokaisessa tapahtumassa on oltava vähintään kaksi ryhmän jäsentä. Viidennessä vaiheessa päästään tutustumaan toisen ryhmän toteuttamaan versioon pelistä ja antamaan työstä vertaispalautetta ja samalla saadaan palkinnoksi myös toisen ryhmän antamaa palautetta. 3.1 Vaiheet 1. Ensimmäisessä vaiheessa toteutetaan ohjelman prototyyppi, jonka tarkoituksena on esitellä tuotetta tilaajalle ja saada todellinen kauppa syntymään. Prototyypin esittelyn lomassa ja sen jälkeen asiakas kertoo tarkemmin mitä tuotteelta haluaa. (eli vaatimukset voivat muuttuja ja tarkentua hieman projektin aikana). Prototyyppitoteutus sisältää jotain demottavissa olevaa käyttöliittymätason toimintaa ja antaa kuvan siitä, millainen lopullinen tuote voisi olla. Prototyyppivaiheen palautus tehdään syyskuun lopussa, aika varataan omalle assarille. Prototyyppivaiheen vaatimuksia: a. käyttöliittymä, josta saa kuvan miltä pelin on tarkoitus näyttää ja peliin liittyvistä ominaisuuksista ja toiminnoista b. valmius selittää, mitä ohjelmassa tapahtuu asiakkaan kannalta, kun eri toimintoja käytetään (jos ei mock-up-toteutusta) c. kuvaus siitä, minkälainen otus pääpahis on, mitä se tekee ja miten se toimii. 2. Seuraavassa vaiheessa luodaan tarkempi suunnitelma toteutettavasta pelistä. Miltä peli suunnittelutasolla näyttäisi? Mitä eri osakokonaisuuksia siihen tulee? Miten käyttöliittymä ja muu ohjelma on erotettu toisistaan? Minkälaista työnjakoa eri osien välille on mietitty? Jne. Suunnitelma palautetaan lokakuun puoliväliin mennessä. Vaatimuksia: a. Yleiskuva ohjelman rakenteesta, korkeamman tason ratkaisut b. Luokkakaaviota tai vastaavaa c. Sekvenssikaavio tai vastaava, jolla kuvataan, mitä tapahtuu, kun pääpahis ja sankari kohtaavat d. Työn jakaminen erillisiin osakokonaisuuksiin, mitä eri tehtäviä, toimitettavia osakokonaisuuksia ohjelmassa on? (jotain suunnitelmaa siitä, kuka voisi tehdä ja mitä?) e. Mitä luvataan toimittaa seuraavaan vaiheeseen mennessä (kohdan d jutuista)? (Jotain toimivaa & demottavissa olevaa.) 3. Kolmannessa vaiheessa käydään esittelemässä työtä, jossa on toteutettuna ainakin suunnitteluvaiheessa toimitettavaksi luvatut ominaisuudet (nämä sovitaan assarin kanssa suunnitteluvaiheessa). Lisäksi tässä vaiheessa on mahdollisuus kysellä assarilta käytetyistä ratkaisuista ja varmistua siitä, että työssä ollaan menossa oikeaan suuntaan. Vaatimuksia: a. Luvattujen ominaisuuksien esittely, ajettavissa oleva ohjelma näiltä osin 4. Neljännessä osassa tavataan loppudemon merkeissä oman assarin kanssa. Tällöin päästään esittelemään oman ohjelman toimintaa ja kertomaan mitä hienoja ratkaisuja ohjelmassa on tehty ja mitä kannattaa ottaa huomioon ohjelmaa testatessa ja koodiin tutustuessa. Katso dokumentaation vaatimukset kohdasta 3.2. 5. Vertaisarvioinnissa käydään läpi toisen ryhmän työ ja annetaan siitä palautetta. Versiohallinnasta löytyy oma ohjeistuksensa tähän. 3.2 DOKUMENTAATION VAATIMUKSIA Neljännen vaiheen yhteydessä palautetaan maksimissaan neljän sivun dokumentaatio, joka kertoo ohjelman yleisrakenteen, ajoaikaisen käytöksen korkealla tasolla ja tärkeimmät suunnitteluratkaisut. Kuvien käyttö on suotavaa selventämään asiaa. Lisäksi ohjeistuksessa on kuvaus siitä, mitä asioita pelissä on helppo laajentaa tai muunnella. Miten esimerkiksi uusien otusten lisääminen onnistuu? Mitä juttuja koodissa, alustustiedostossa jne. pitää huomioida? Voit valita dokumentaation formaatin vapaasti, kunhan sieltä löytyy edellä mainitut asiat. Voit myös käyttää versiohallinasta löytyvää dokumenttipohjaa. 3.3 LOPULLISEN PALAUTUKSEN ARVOSTELUKRITEEREITÄ Suunnittelu ja rakenne: Ohjelman yleisrakenne, vastuualueiden jako, kuinka hyvin toteutettu? Vastaako toteutus yleisrakenteen lupaamaa vastuualuejakoa? Ryhmän esittelemät laajennuskohteet ja niiden toteutettavuus. Rajapinnat: luokkien, rajapintaluokkien jne. rajapinnat, niiden suunnitteluosuus, toiminnallisuus, dokumentointi/kommentointi. Mahdolliset esi- ja jälkiehdot jne. (bonusta: testit) Toteutuspuoli ja esitietokursseihin liittyvät asiat: funktioiden, luokkien jne. koot, koodin ulkonäkö, yhteneväinen, järkevä kommentointi ja nimeäminen Dokumentaatio: auttaako dokumentaatio ohjelman rakenteen ymmärtämisessä? Vastaako dokumentaatio koodia? Miten dokumentissa on kuvattu muokattavuus/laajennettavuus? Toiminnallisuus: Toimiiko peli vai kaatuilee ja bugaa? Onko työn aikana luvatut/pyydetyt ominaisuudet toteutettu? 4 LAAJENNETTAVUUS, RUUDUT, OTUKSET JNE. Tähän lukuun on listattu esimerkkejä mahdollisista otustyypeistä ja ruututyypeistä. Näitä voi käyttää omassa työssään tai sitten tehdä täysin omat. Ei siis kannata huolestua, jos esitellyt otustyypit tms. eivät millään sovi omaan työhön tai sen suunnitelmaan. 4.1 OTUKSET Talitintti: Talitintit saattavat harjaantumattoman silmään näyttää vain viattomilta linnuilta, mutta ne ovat oikeasti verenhimoisia tappajia, joiden erikoisherkkua on muiden otusten aivot. Käyttävät nopeuttaan häikäilemättä hyväkseen. Hyökkäävät vain, jos ehtivät paeta vähintään ruudun päähän. Muuten möllöttövät paikoillaan tai pyrkivät pitämään kahden ruudun turvavälin muihin otuksiin. (eivät syö toisiaan tai pääpahista). Liikkuu kaikissa ruuduissa samalla vauhdilla. http://www.iltasanomat.fi/kotimaa/art-1288538104290.html Kuolakarhu Kuolakarhut ovat tunnettuja rään erittämiskyvyistään. Ne peittävät uhrinsa sylkilammikoilla. Sylkihyökkäys toimii kuten normaalihyökkäys, mutta sylki jää ruutuun, jossa hyökkäyksen kohde oli. Räkä vaikuttaa seuraavan kahden vuoron ajan ja tuottaa D6 vahinkoa/vuoro (ilman mahdollisuutta puolustautua) ruudussa vuoronsa päättävälle otukselle. Kampela Kampela on salakavala väijyskelijä, joka saalistaa makaamalla hiljaa paikallaan metsän pohjalla. Tällöin sitä on mahdotonta havaita ennen kuin uhri on sen vieressä. Erikoistunut ihmissyöntiin, käy muiden otusten kimppuun vain joutuessaan hyökkäyksen uhriksi. 4.2 RUUDUT Esimerkkejä erilaisista ruuduista ja niiden toiminnasta: Suo: suolla on vaikea liikkua ja sinne astuminen vie kaksi liikkumispistettä (tai nollaa jäljellä olevan liikkumisen, jos liikettä jäljellä alle 2). Puolustautuminen suolla vaikeampaa, joten vain puolet puolustuksesta käytössä. Nuoruudenlähde: Nuoruudenlähde parantaa kaksi elinvoimapistettä/vuoro, jos otus päättää liikevuoronsa ruudussa. Risukko: estää liikkumisen, mutta voidaan hakata heinikoksi hyökkäämällä. Kestopisteet 20, ei puolustusta. 4.3 ESINEET Erilaisia esineitä ja vaihtoehtoja (valitse näistä joitakin): eri ruumiinosille sopivat vaatekappaleet erilaiset aseet, ampuma-aseet sankarittaren tavaroiden hallinta (inventaario) pysyvästi ja tietyn vuoromäärän ajan vaikuttavat kertakäyttöesineet mahdollisuus kerätä kertakäyttöesineitä mukaan ja käyttää niitä myöhemmin 5 NIMIVAIHTOEHDOT Marjametsä 2: Metsäneläinten vastaisku Tapahtuipa kerran/Olipa kerran Marjametsässä Marjametsä: first blood, part II Marjametsän paluu/kosto/poika/kirous/ylösnousemus/reloaded/iskee jälleen/ratsastaa jälleen/merkki/ylivalta Käärmeitä marjametsässä Marjametsä – New York, Los Angeles, Miami, Hervanta, Toijala Marjametsä, uusi sukupolvi/uusi alku/viimeinen luku/tuomiopäivä/pimeyteen/redux/director’s cut Marjametsän legendat/kertomukset/seikkailut/morsian Marjametsän aamun sarastus/illankoitto/yö/päivä/iltarusko Marjametsä, viimeinen ristiretki, kuusipuukallo, kadonneen metsän metsästäjät, tuomion kappeli Marjametsä, kourallinen euroja/vain muutaman euron tähden Marjametsä anthology/best of/collection/the essential Marjametsä ja …