Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Oppgaven går ut på å implementere spillet Slagskip (eng: Battleship) (http://en.wikipedia.org/wiki/Battleship_(game)) som  som skal kunne kjøres i konsollen. Det er to spillere, med hvert sitt brett med utplasserte skip. Ulike typer skip har ulik størrelse og fasong. Målet er å senke alle motstanderens skip ved å bombe rutene som skipene dekker. Motstanderens skip er skjult for spilleren i starten, men siden en etter å ha bombet en rute får vite om en har truffet eller ikke, så får en oversikt over motstanderens brett etterhvert. Et skip er senket når alle rutene det dekker er truffet. Spillet er vunnet når en spiller har senket alle motstanderens skip.

...

Tips: Lag en egen klasse Levels.java som har disse eksempelbrettene som felt (tilstand). De kan være public static final. final betyr at verdien til variabelen ikke kan endres etter den er initialisert. Se /sokoban/SampleLevels.java SokobanSampleLevels for inspirasjon.

Forslag til grafisk implementasjon og gjennomførelse av to runder:

 

TegnForklaring
~Hav. Uskutt rute. Ligner på bølge, ikke sant?
.Skutt rute, men ingen skip truffet.
XSkip truffet.

...

Konsollbasert IO er greit for å teste spillet, men det er kanskje artigere å lage en ordentlig app, med grafisk visning av rutenettet og bruk av musa for å klikke på ruter du vil skyte. Vi har laget en JavaFX-basert app, som du kan laste ned og koble til din Battleship-klasse. App-koden forutsetter at spill-logikken er implementert i en klasse Battleship som implementerer IBattleship-grensesnittet (i pakken games.battleship). Med bruk av grensesnitt, så gjøres det klart hvilke metoder appen trenger og som du må implementere.

Last først ned IBattleship-grensesnittet fra /games/battleship/battleship1/IBattleship.java, og programmer din spill-klasse slik at den implementerer dette grensesnittet. Så laster du ned app-klassene (og filene), så du kan prøve om det virker. Husk at du må endre en linje i BattleshipFX.fxml slik at den peker på klassen din som implementerer IBattleship-grensesnittet.  

...