02362: Projekt i software-udvikling (f21)
Denne opgave skal fremme forståelsen af projektet (især begrebener fra RoboRally-spillet)
og hvordan programmeringen af en robot med såkaldte kommandokort kan lade sig gøre.
Opgaven består i to dele: Den ene del er en afleveringsopgave (A1: 22./23. februar),
som er at færdiggøre taksonomien af RoboRally-spillet fra opgaven V1 og videreudvikle den til en detaljeret (!) domænemodel, som indeholder alle begreber af
RoboRally samt alle vigtige faser og aktioner af spillet. Den anden del er en visningsopgave
(V2: 15./16. februar); den skal fremme forståelse af projektets opbgyning (MVC-princippet) og sammenhæng mellem viewet og controlleren. Vedr. softwaren kan I enten fortsætte med den software I
fik udeleveret med opgave opgaven V1 (hvis I vil forstætter med Java 8) eller
med et opdateret projekt, som er tilrettet til Java 15.
Vi starter med at beskrive opgaven V2; derefter beskrives opgaven A1.
|
Opgave V2 (til 15./16. februar): Programmering: Controller & View |
|
Opgaven er nedbrudt i enkle trin:
- Til opgaven får I udleveret en lidt videreudviklet version af softwaren fra opgave V1. Der er to muligheder:
- Hvis I vil fortsætte som gruppe med jeres projekt med Java 8, så kan I bare downloade to
opdaterede klasser
AppController og
GameController og erstatte de svarende
klasser i jeres projekt med disse to opdaterede klasser.
- Hvis I vil hellere skifte som gruppe med jeres projekt til Java 15 (Javas aktuelle
version), kan I downloade et nyt projekt med en Maven-opsætning som bruger Java 15
med JavaFX 15.0.1:
roborally-1.1.0.zip . Det skal
I installere et nyt sted på jeres computer med at pakke Zip-filen ud og importere
det til jeres IntelliJ. Husk at I må vælge filen pom.xml når I importerer
projektet!
Bemærk at koden (I begge versioner) ikke indeholder løsningen til
opgaven V1. Det er der ikke umiddelbart brug for. Men hvis
I vil have den med, så kan I bare kopiere de kode-snippets fra jeres løsning til
jeres nye projekt.
- Afprøv om det nye projekt virker i det i starter programmet (bemærk at den nye versionen
til Java 15 skal startes igennem klassen
StartRoboRally ).
Når et nyt spil startes, bliver spillets
programmeringsfase aktiveret, hvor hver spiller får nogle tilfældige kommandokort
(på den nederste linje af kortfelterne). Og spillerne kan trække nogle af dem til de fem
kortfelter på den øverste linje, som repræsenterer denne spillers robots program (register).
Når alle spiller har programmeret deres robot, skal man kunne
trykke på "Finish Programming".
- Men der vil ikke ske noget. Grunden til det er at knapperne "Finish Programming",
"Execute Program" og "Execute Current Register" er stadigvæk tilknyttet til
controllerens metode
notImplemented() .
Som det første, skal I så sørge for at alle knapper bliver tilknyttet til de respektive
metoder i GameController .
Så burde det være sådan at, når spilleren trykker på "Finish Programming",
knapperne "Execute Program" og "Execute Current Register" bliver aktiveret.
Og når man så
trykker på "Execute Program" bliver alle programmer af alle robotter eksekveret. Når
man trykker "Execute Current Register" bliver kun den aktuelles robots aktuelle kort
eksekveret; på denne måde
kan man klikke sig trinvis igennem hele programmet. Og det anbefales at bruge denne
trinvise eksekvering i starten.
Når man trykker "Finish Programming" og "Execute Current Register" så bliver der
vist hvilket kort bliver eksvekveret; men selve kommandoer har ingen effekt.
Grunden til det er at de metoder, som repræsenterer de forskellige kommandoer
i GameController , ikke er implementeret endnu (de er
markeret TODO Assignment V2 ). Dem skal I implementere i næste skridt.
- Implementer de metoder som implementerer kortenes kommandoer i
GameController (som sagt er de markeret med TODO Assignment V2 ).
Afprøv om jeres program virker nu.
- Implementere en test til hver af de fire kommandoer. Til det kan I bruge
GameControllerTest og implementere en test-metode til hver kommando.
Eksekver alle test. Når alle disse test kører igennem, så er opgaven V1 og V2 klaret.
I kan finde mere information om Testing med IntelliJ på JetBrains web sider:
[IntelliJ: Testing].
|
Opgave A1 (til 22./23. februar): Projektforståelse: Taxonomie & domænemodel
|
|
Opgaven nedbrudt i enkle trin:
- Til den 22./23. februar (husk at det er altid kl. 12, hvis der ikke bliver sagt noget andet)
skal I aflever en komplet taksonomi og en detaljeret domænemodel for spillet RoboRally,
som fanger alle relevante begreber og aktiviteter. Det er relevant for at forstå
hvad (WHAT) jeres software skal gøre.
I finder informationen om RoboRally på
https://avalonhill.wizards.com/games/robo-rally.
Spillets regelsæt findes også som PDF-fil:
http://media.wizards.com/2017/rules/roborally_rules.pdf.
Som udgangspunk burde I allerede have en liste med de vigtigste begreber fra
opgave V1;
og en del bliver også diskuteret under timen.
- Læs teksten systematisk (igen) og marker alle relevante ord. Klassificer dem som ting som
bliver brugt til at repræsentere spillets aktuelle tilstand og dem som beskriver spillets
aktioner. Typisk er den første slags begreb hovedord (engelsk: nouns) og den anden slags begreb
udsagnsord (engelsk: verb).
Den første slags begreber med deres egenskaber og relationer kan man overføre til en
domænemodel (repræsenteret som klassediagram). Den anden slag begreber udgør typisk
softwarens use cases
(som senere hen kan beskrives som aktivitetsdiagrammer). Det bliver også diskuteret i timen.
- Diskuter jeres begreber indbyrdes i grupperne, så at de dækker alle RoboRallys
væsentlige begreber.
Derefter skal i lave et domænemodel (gerne diskuter og tegn indbyrdes på en tavle eller på
et stykke papir). Som inspiration kan I måske også kigge ind i softwaren, som I fik udleveret
til opgave V1 og V2; klasserne i model-pakken burde jo også være relevante til RoboRally
spillet (men det er jo kun begyndelsen).
Aflever jeres taksonomi og jeres domænemodel som PDF-fil via DTU Learn.
|
|