You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Current »

For å kunne lagre slagskip på et egnet format, innfører vi noen endringer i spillet; klassene Ship og ShipType. Filformatet som brukes for lagring skal basere seg på disse. Se mer under avsnittet Filformat. Det kan lønne seg å lese hele oppgaven før du starter. 

Ship

Klassen Ship skal ha følgende felt:

  • ShipType shipType – skiptypen til dette skipet.
  • int x – x-koordinaten til den øverste, venstre cellen som hører til skipet.
  • int y – y-koordinaten til den øverste, venstre cellen som hører til skipet.

Implementer de getter- og setter-metoden du mener du behøver.

ShipType

Klassen ShipType skal ha følgende felt:

  • char type – tegnet som representerer skiptypen.
  • int width – bredden til denne skiptypen.
  • int height – høyden til denne skiptypen.

Implementer de getter- og setter-metoden du mener du behøver.

Hvilke celler på brettet som tilhører skip defineres altså av plasseringen til skipene, kombinert med størrelsen til skipene, som igjen er definert av skiptypen.

Filformat

For å hente og lagre et spill trenger vi et felles format. Formatet vi skal bruke er som følger:

"<size>
<hits board1>
<shiptype><width><height>, ... , <shiptype><width><height>
<ship><x><y>, ... ,<ship><x><y>
<hits board2>
<shiptype><width><height>, ... , <shiptype><width><height>
<ship><x><y>, ... ,<ship><x><y>"
 

Et eksempel på et 10 x 10 stort brett med to skipstyper og to skip på hvert brett:

Eksempel lagringsformat
10
..X...........X...X......X.......XX.........X........XX.X..X......X.....X..X........................
H32,U13 // Dette er skipstyper
H20,U63 // Dette er skip
...XXX.....XXXXX.......XX..................X...X...........................X...........X............
H32,U13 // Dette er skipstyper
H20,U63 // Dette er skip

Den første linjen er størrelsen på brettet. Et brett er alltid kvadratisk.

Den andre og femte linja er treff-strengen til henholdsvis brett 1 og 2. Den representerer den enkle lista over celler. X betyr at cellen har blitt skutt, punktum betyr at den ikke har det.

Linje tre og seks viser hvilke skiptyper som finnes på brettet, separert med komma. Det første tallet i hvert skip er bredden på skipstypen, det andre tallet er høyden på skipet.

Linje fire og syv viser hvilke skip som finnes på brettet, adskilt med komma. Et skip tilhører den skipstypen med samme bokstav (char). Skipstypen som blir benyttet av et skip må være definert på linjen over. Det første tallet i skipet er x-verdien til ruten øverst til venstre i skipet, det andre tallet er y-verdien til ruten øverst til venstre i skipet.

Ta høyde for at linjene med skudd/treff er for korte, tomme eller ikke er med. Manglende skudd/treff-data tilsvarer det ikke er skutt (der). Det gjør det lettere å lage brett som ikke har påbegynt, siden en slipper å lage en lang linje med bare prikker.

Merk: På Skiptype-linjene er hver type definert med tegn, bredde og høyde. På skip-linjene er hvert skip definert med tegn, x-koordinat og y-koordinat. Selv om formatene ser like ut betyr de altså forskjellige ting!

  • No labels