I denna laboration skall vi, genom att använda oss av ett ramverk, studera hur vi snabbt kan konstruera nya applikationer, som annars skulle kräva betydligt längre tid att implementera.
Uppgiften är att skapa ett förströelsespel i Java genom att använda ett existerande ramverk (dvs ett paket av samarbetande klasser). Ramverket begränsar oss till spel som har följande egenskaper:
Ett nytt spel kan enkelt implementeras med hjälp av ramverket genom att definiera en klass med de regler som gäller för det aktuella spelet. Exempel på detta är spelet Gold som finns implementerat i den bifogade koden för ramverket.
Börja genom att studera:
Lite bakgrund till implementeringen av ramverket:
Kom ihåg att det är viktigt för en programmerare att förstå hur man kan använda ett ramverk. I allmänhet är det inte nödvändigt att förstå hur ramverket är implementerat. För ramverk är det vanligt att ha en länk, t.ex. ‘Use" eller ’Usage’, på API-sidorna. Dessa länkar är en bra startpunkt när man vill börja läsa in ett nytt ramverk eller en ny klass som ingår i ramverket (se javadoc för vårt ramverk).
Ni skall implementera ett spel, förslagsvis Snake, med användning av bifogat ramverk. Det är tillåtet att välja ett annat spel, men ni kan då, på grund av brister i ramverket, komma att råka ut för problem. I laboration 3 har vi chansen att omarbeta ramverket för att åtgärda en del av dessa brister.
Väljer ni något annat spel än Snake skall ni därför först ha klartecken från en handledare.
Första uppgiften är lite annorlunda, eftersom ni inte skall redovisa något körbart program. I stället skall ni redovisa svar på nedanstående frågor.
Den grundläggande uppgiften är att få en förståelse av det givna ramverket, så att ni kan förklara vad varje klass ansvarar för och hur de olika klasserna kommunicerar med varandra. Vidare är uppgiften, att planera hur ni löser resten av laborationen.
Först läser ni igenom paketets javadoc-dokumentation och dess kod, för att förstå hur allt hänger ihop. Detta är mycket viktigt, både för att lära sig Java (genom att läsa annans kod lär man sig mycket) och för att kunna ta ni skall kunna implementera ert eget spel. Fråga handledarna om ni kör fast.
Skriva svaren i en fil innan ni redovisar det muntligt.
Frågor att besvara:
GoldModel
och GameModel
, och hur är de relaterade till varandra?
GameFactory
och hur kan GameFactory
utvidgas för att få med ‘Snake game’? (Endast ett kort svar behövs.)
Ledtrådar:
Main.java
är huvudklassen.
XxxView.java
visar en grafisk presentation av spelets händelseförlopp.
XxxModel.java
definierar spelets logik och och tar hand om utseende och känsla.
GameController.java
tar hand om indata, uppdateringar etc.
Implementera en modell för Snake (eller något annant spel ni valt), som ärver egenskaperna från GameModel
-klassen.
Tips och råd (för Snake)
GoldModel
noga. Det kommer att vara till hjälp.
GameTile
för att få en snygg orm. Använd en speciell tile för huvudet.
List
, Deque
eller Queue
? Titta i Javas API vilka operationer respektive datastruktur har innan ni gör ert val.
(Original lab av Christer Carlsson)