CS Challenge 5, Vector Racing

Den ideelle situation for en programmør er at udvikle et mindre program helt selv baseret på en klar specifikation og velkendte programbiblioteker. Virkeligheden er dog i mange tilfælde, at man i stedet skal vedligeholde, udvikle eller konvertere legacy code i form at et uoverskueligt og udokumenteret program baseret på enorme og kun vagt bekendte programbiblioteker. Dette udgangspunkt kan virke nedslående, men kan håndteres med en blanding af intuition, eksperimenter og detetektivarbejde.

Denne Challengen omhandler (i lille skala), hvordan man håndterer legacy code. Konkret kigger vi på spillet VectorRacing.jar, der er en implementation af vektorvæddeløb. Koden er på ca. 750 linjer Java, baseret på AWT-bibliotekerne og er i øvrigt konverteret fra en applet til en applikation. Den (næsten) komplette kode til spillet kan ses i VectorRacing.zip.


Spillet startes på en af af følgende måder:
        VectorRacing.jar w h p1 p2 ...
        VectorRacing.jar p1 p2 ...
hvor man valgfrit kan angive bredde og højde af banen (i pixels) og mellem 1 og 4 navne på spillere. Spillets logik følger de generelle regler og er rimeligt selvforklarende, men er peppet lidt op med ekstra features.


Spørgsmål A

Forklar kort, hvilken rolle vandpytter og dæk har i spillet.

Spørgsmål B

En bil kan under ganske særlige omstændigheder gå i stå (stalled). Forklar, hvordan dette kan ske og hvilken betydning, det har for spillet.

Spørgsmål C

I VectorRacing.java er 5 API-kald erstattet med kommentarer af formen:
        // API: ...
Genskab disse kald, så spillet virker igen. Hint: hvilke objekter er involveret og hvilke relevante metoder kan du finde i JavaDoc dokumentationen?

Spørgsmål D

Udvid spillet med en lille ny feature, fx ternede flag når vinderen passerer målstregen, en hyldest til vinderen, en ny lydeffekt, eller en bedre visuel effekt. Forklar kort, hvad du har gjort.
BlueJ version: VectorRacingBlueJ.zip.
Du deltager i vores Challenge ved senest den 22. november at sende en e-mail til mis@cs.au.dk med subject Challenge 5 og svarene på spørgsmål A, B og (delvist) D (i plain text) og svarene på spørgsmål C og D i form af attachments med en ny udgave af klassen VectorRacing.java og eventuelle ekstra filer.