Spelprogram. Objektorienterade applikationer Laboration 2

Relevanta dokument
Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Kurs-PM fo r HI1028, Projektkurs inom programvaruutveckling, VT16

Kursplanering Objektorienterad programmering

Fyra i rad Javaprojekt inom TDDC32

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Objektorienterad analys och design

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

SKOLFS. beslutade den XXX 2017.

Föreläsning 15: Repetition DVGA02

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Arv och polymorfism i Java

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Objektorientering. Grunderna i OO

Objektorienterad analys och design

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Objektorienterad analys och design

TDDE10 TDDE11, 725G91/2. Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 20

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Piff och Puffs Chatsystem

Praktikum i programmering

Programmeringsteknik II

Projektuppgift.

TDDC74: Projekttitel

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Kravspecifikation Fredrik Berntsson Version 1.1

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Programmering för språkteknologer II, HT2014. Rum

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Praktikum i programvaruproduktion

LOKAL UTBILDNINGSPLAN INFORMATIKPROGRAMMET 120 POÄNG IF04

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Kravspecifikation. Sammanfattning. Fyra i rad Javaprojekt inom TDDC32. Version 2.0. Datum Dokumentnummer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

EDAA01 Programmeringsteknik - fördjupningskurs

Tentamen i Objektorienterad modellering och design

Nätverksprogrammering, EDA095

Objektorientering Klasser

Objektorienterad konstruktion

Projektrapport EDA095

Introduktionsmöte Innehåll

Innehållsförteckning

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

Projekt Intelligent Indexering

Beskrivning av gesällprov RMI Chat Mikael Rydmark

Projektet. TNMK30 - Elektronisk publicering

Utbildningsplan för magisterprogrammet i hälsoinformatik

Objektorienterad programmering

Design och konstruktion av grafiska gränssnitt

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

INSTITUTIONEN FÖR MATEMATIK OCH NATURVETENSKAP. Fastställd i institutionsstyrelsen Dnr 853/333-03

2D1387 Programsystemkonstruktion med C++

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Poäng. Start v. Applikationsprogramm ering i Python 7.5. Antal registrerade (män/kvinnor) 50 (34/16)

Objektorienterad programmering

Undervisningen i ämnet programmering ska ge eleverna förutsättningar att utveckla följande:

Design och konstruktion av grafiska gränssnitt

Vanliga frågor för VoiceXpress

Föreläsning 1: Introduktion till kursen

Projektuppgift- Mashup- Applikation

LiTH Segmentering av MR-bilder med ITK Efterstudie MCIV. Anders Eklund. Status

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Föreläsning 1: Introduktion till kursen

Föreläsning 1: Introduktion till kursen

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT14

Projektrapport. MegaLoad. Nätverksprogrammering EDA

Gesäll provet Internetprogrammering I. Författare: Henrik Fridström. Personnummer: Skola: DSV

Programvaruteknik, hp

Människa- datorinteraktion, MDI, ht 2012, Anvisningar för projekt- /grupparbete

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

PROGRAMMERINGSTEKNIK TIN212

Joppes djurfamilj v2. Planering. Genomförande. Utvärdering och dokumentation

Labyrinter Algoritmer och datastrukturer Obligatorisk Laboration nr 6

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT15

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Koppling mellan styrdokumenten på naturvetenskapsprogrammet och sju programövergripande förmågor

Åtkomst och användarhandledning

Introduktion. Byggstenar TDBA

SKOLFS. beslutade den -- maj 2015.

HexaFlip. Kravspecifikation

Välkomna till DIT012 IPGO

1 Kravspecifikation Snake App

Transkript:

1 (5) Spelprogram Objektorienterade applikationer Laboration 2 Syfte Projektet syftar till att belysa och ge träning i Programutveckling i grupp. Objektorienterad modellering med UML. Användning av ett modelleringsverktyg. Dokumentation och presentation av programutvecklingsarbete. Programmering i Java. Mål Produktmål En program med grafiskt användargränssnitt. En skriftlig rapport som beskriver en objektorienterad design av programmet. Processmål Varje deltagare skall efter genomfört projekt ha förvärvat erfarenheter av ett objektorienterat arbetssätt vid programutvecklingsarbete. ökat sin förmåga att konstruktivt bidra till uppfyllelse av produktmål. ökat sin samarbetsförmåga. utvidgat sin förmåga att använda utvecklingsverktyg för modellering och kodutveckling. Projektgruppen Arbetet genomförs i grupper om 6-7 personer och pågår under v. 5-10. Samtliga gruppmedlemmar måste bidra substantiellt till projektet. Överenskommelser om arbetsmöten och åtaganden skall hållas och mötestider passas. Gruppen ansvarar själv för sin tidsplanering. Eftersom projekttiden är kort är det viktigt att arbetet kommer igång direkt. Får gruppen samarbetssvårigheter skall detta meddelas till kursledaren så att problemen kan lösas snabbt. De handledda 4-timmarspassen kommer inte att räcka. Kursen går på halvfart vilket innebär en arbetsinsats om ca 20 timmar per vecka. Gruppen bör ha minst ett långt gemensamt arbetspass utöver det schemalagda per vecka. Tillkommer individuella insatser. Bokning av ev. grupprum för dessa extra möten administreras av gruppen. Utvecklingsmiljö För modellering med UML används t.ex. modelleringsverktyget Poseidon eller UMLet, och för kodutveckling eclipse. BlueJ kan upplevas som alltför begränsat för lite större program. En tidsbegränsad demoversion av Poseidon kan laddas ner från www.gentleware.com. UMLet finns på www.umlet.com.

2 (5) Litteratur Barnes & Kölling: Kap. 1-14, Skansholm Java direkt, Java API, mtrl om eclipse. Gruppen inhämtar själv relevant information efter behov. Redovisning Projektets resultat redovisas i v. 10 genom: En skriftlig dokumentation, som skall innehålla: Användarmanual: En beskrivning på användarnivå av programmets utmärkande egenskaper och dess handhavande. En analysmodell bestående av användningsfallsdiagram med beskrivning i ord av användningsfallen, samt klassdiagram och sekvensdiagram. Dokumentationen av modellen skall göras med ett modelleringsverktyg, t.ex. Poseidon. Övergripande designbeskrivning. Dokumenterad, testad och fungerande programkod. Muntlig redovisning. I redovisningen ingår att agera både i rollen som presentatör, och som opponent. Varje grupp skall provköra program, samt studera dokumentation som utarbetats av en annan grupp, samt förbereda frågor och kritik av arbetet inför den andra gruppens presentation. OH-bilder för presentationen. Använd gärna PowerPoint eller motsvarande verktyg. Demonstration av programmet. Mer preciserade krav på dokumentation, presentation, programkod etc. ges senare på kursens webbplats. Arbetsprocess Programmet bör utvecklas inkrementellt (stegvis) och iterativt. Bestäm milstolpar (inkrement) för projektet. (Se kravspec. betr. miniminivå som skall hinnas med.) Skriv en planeringsrapport på ca en A4-sida omfattande milstolpar och tidplan. Iterera faserna: Modellering i UML, detaljdesign (utformning av klasser, metoder, parametrar,...), implementering, samt testning för varje inkrement. Enhetstesta nya komponenter noga var för sig, innan de integrationstestas med resten av programmet. Tillämpa refaktorering vid behov - strukturera om innan ny funktionalitet införs. Modellering i UML a) Beskriv användningsfallen för hantering av de aktuella funktionerna (rita användningsfallsdiagram för att sammanfatta användningsfallen överskådligt). b) Idéstorm: Leta efter objekt (substantiv i problembeskrivningen är en bra början). Ingen kritik i detta steg, alla tänkbara objekt skall fram i ljuset! c) Är vissa objekt onödiga? Sovra! d) Klassificera objekten (inför klasser). Motivera klassernas ansvar i systemet. Vilken information håller de reda på? Sträva efter klasser med hög kohesion! (använd gärna CRCkort!) Se även punkt g. e) Sök efter objekt- och klassrelationer ( känner till, har, använder, arv ). Bör vissa relationer vara enkelriktade? Försök uppnå en låg grad av koppling mellan klasserna! (rita klassdiagram)

3 (5) f) Undersök hur objekten kan samarbeta för att implementera användningsfallen. Inför nödvändiga metoder i objekten. (rita sekvensdiagram). g) Hur ser objektens tillstånd ut? Inför instansvariabler i klasserna. h) Handexekvera modellen med papper och penna. Kommer det att fungera?

4 (5) Kravspecifikation Projektgruppen har ganska fria händer att utveckla spelprogrammet efter egna idéer. Nedan följer minimikrav samt förslag på tänkbara utvecklingsmöjligheter. Programmet kan vara en vidareutveckling av spelet zuul som beskrivs i BK kap. 6.2-6.14. Som startpunkt finns projektet zuul-for-images som är föreberett för att kunna visa bilder på de olika rummen som besöks i spelet i ett mycket enkelt GUI. Programmet behöver dock struktureras bättre (refaktoreras) innan det byggs ut. Ickefunktionella krav 1. Programmet skall ha ett grafiskt användargränssnitt (GUI) med lämpliga grafiska komponenter så att det blir användarvänligt. 2. Rum skall presenteras med bild och textbeskrivning. 3. En spelarklass införs så att en spelare representeras av ett eget objekt. 4. Kommandon kan ges med textinmatning, men hellre med interaktion med grafiska komponenter som knappar, dialoger, pop-up-fönster, etc.. Kommandona bör i båda fallen internt struktureras som en klasshierarki i enlighet med övn. 6.46. Se även avsnitt 10.3. 5. Programmet skall designas efter goda objektorienterade principer. Aspekter som kohesion, koppling och ansvarsdriven design skall beaktas. Kvalitet prioriteras framför kvantitet. 6. Observer-mönstret skall tillämpas på lämpligt sätt. Se exempel från förel. om MVCmodellen. Se även avsnitt 13.7.5. i BK. 7. Programmet skall kunna köras självständigt (utanför BlueJ eller eclipse). 8. Vad handlar spelet om? Skriv ett manus. Beskriv spelscenarion i form av användningsfall. Hur ser scenen ut? En skum källare, ett stort sjukhus, Chalmers Johanneberg, Ö. Nordstan,...? Vad skall poängsättas? Vad innebär det att vinna? Funktionella krav Kraven under denna rubrik anger en ungefärlig miniminivå som bör designas och implementeras. Spelaren skall kunna fråga var han/hon befinner sig med ett look-kommando, samt kunna backa tillbaka till tidigare besökta rum (kommandot back). (Se övn. 6.14 och 6.23-26.) Rum kan innehålla flera föremål, t.ex. mat, kärl, nycklar. Föremål har egenskaper: vikt, näringsvärde etc. Vissa kan tas upp och bäras vidare av en spelare, andra inte. Somliga kan bara finnas i vissa typer av rum. Kommandon: take, drop, eat,... Spelaren bör informeras om vilka föremål som finns i rummet och vilka som bärs av spelaren, t.ex. med grafiska symboler i GUI:t. Spelare kan bara bära ett begränsat antal föremål upp till en viss maxvikt. Flera spelare skall kunna registrera sig men bara en spelar åt gången. Resultatet av en spelomgång skall kunna sparas i fil. Inför High-score-beräkning. Inför menyer för filhantering, avslutande, hjälp, m.m.. Osorterade idéer Några ej bindande förslag. Föreslå gärna egna - dokumentera dem, formulera krav. Väggarna i ett rum kan presenteras med olika bilder. Spelaren kan vända sig åt olika håll. Rum kan ha lås som kräver nyckel för att öppnas. En spelares energinivå kan bero på hur mycket hon äter och vilken mat hon lyckas hitta. Varje förflyttning sänker energinivån.

5 (5) En spelares förmåga att bära föremål beror på spelarens energinivå. En spelares hälsa kan variera. Blir den för dålig dör spelaren. Olika sjukdomar kan drabba spelaren. Medicinburkar kan finnas i vissa rum. Varje sjukdom kräver rätt medicin. Sjukdom påverkar energinivån. Skaffa fler bilder. Tag ev. egna. Inför tidmätning. Spelarens energinivå sjunker med tiden. Hinner man inte fram i tid åker man ur spelet. Koppla poängberäkningen till tidsåtgången. Karaktärer är autonoma figurer som rör sig i rummen på egen hand. Troll, lektorer, studenter, djur, robotar, dvärgar. En karaktär kan tilltalas och ge mer eller mindre upplysande svar. Karaktärer presenteras med bild. Du möter en dvärg. Om du ger dvärgen mat talar den om för dig var du kan hitta en nyckel. Om du hittar nyckeln kan du öppna en dörr för att komma ut och få poäng. Om dvärgen fick ont i magen av maten halveras dina poäng. Eller: Du möter en lektor. Om du ger lektorn din inlämningsuppgift, och den blir godkänd, talar hon om för dig var du kan hitta ett lösenord. Om du hittar lösenordet kan du själv mata in valfritt betyg i ladok och få poäng. Om lektorn underkänner uppgiften halveras dina tidigare poäng. Transporteringsrum. Alla som går in förflyttas automatiskt till ett slumpmässigt rum. Ljudeffekter (använd hörlurar, tack!). Avancerat Se upp! Här kan det lätt bära iväg och svälla över alla gränser. Ge er bara på detta om tiden räcker till. Om utbyggnad av nedanstående slag blir aktuell är det viktigt att den designas väl och att den blir färdig. Central high-score-server med nätverkskommunikation. Kräver trådar och kommunikation (socketar). Flera spelare kan spela samtidigt via olika GUI-klienter. Intressanta saker kan hända om flera möts i samma rum? Kräver trådar och kommunikation (socketar). Dynamisk laddning av spelkaraktärer kan ske under run-time. Kräver dynamisk klassladdning. Spelscenariot (rumsbeskrivningar etc.) kan lagras i en extern fil. Programmet kan då köra olika scenarion. Lycka till!