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 …