Versions Compared

Key

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

...

Tilstanden i TicTacToe-objekter er todelt: Den ene er brettet, dvs. hvilke ruter som er tomme, eller har x og o i seg, og den andre er hvilken spiller sin tur det er.

...

Start-tilstand: "         " (ni mellomrom)

Code Block
   |   |   
-----------
   |   |   
-----------
   |   |   

Spiller 'x' har plassert en brikke oppe i høyre hjørne (x=1, y=0)øverst i midten: " x       "

Code Block
   | x |   
-----------
   |   |   
-----------
   |   |   

Spiller 'o' har plassert en brikke i slutten av andre rad: " x   o   "

Code Block
   | x |   
-----------
   |   | o 
-----------
   |   |   

Lenger ut i spillet: " x  xo xo"

Code Block
   | x |   
-----------
   | x | o 
-----------
   | x | o 

...

  • char getCell(int x, int y) - returnerer verdien til ruten på posisjon x, y.
  • boolean setCell(char c, int x, int y) - setter ruten i posisjon x, y til c. Metoden må sjekke om ruten er ledig før brettet oppdateres (okkuperte ruter kan ikke overskrives) og returnerer true hvis en ny brikke har blitt lagt på, false ellers.
  • boolean isOccupied(int x, int y) - returnerer true hvis ruten på posisjon x, y har en brikke og false ellers.
  • char getCurrentPlayer() - returnerer spilleren/brikken som har turen
  • String toString() - returnerer en String-representasjon av brettet, som gjerne kan likne på rutenett-eksemplene over, uten at dette er et krav som testes.
  • int indexAt(int x, int y) - returnerer String eller StringBuilder-indeksen til posisjon xy på brettet. F.eks vil int indexAt(1, 1) returnere 4.

Det kan være en fordel å implementere en metode som mapper fra x- og y-koordinater til riktig indeks i String eller StringBuilder-objektet, men dette testes ikke av JExercise (i.e. det er fint mulig å implementere det på andre måter):

...

Implementer støtte for tilstand og metoder beskrevet over slik at JExercise-testkoden fullfører feilfritt. Testkoden finner du her: objectstructures/TicTacToeTestPart1.java.

Del 2 - Logikk for spillets gang

TicTacToe-klassen utvides med metodene, isFinished(), isWinner(char), hasWinner() og play(), med følgende oppførsel:

  • void play(int x, int y) -setter ruten på posisjon x, y på brettet til tegnet til spilleren som utfører trekket (angis av player-feltet) og oppdaterer hvilken spiller som skal utføre det neste trekket.
  • boolean isWinner(char c) - returnerer true om spiller med brikke c har vunnet, false ellers.
  • boolean hasWinner() - returnerer true om spiller har en vinner, false ellers.
  • boolean isFinished() - returnerer true om spillet har en vinner eller brettet er blitt fylt og false ellers. En spiller har vunnet når den har lagt tre brikker på rad, enten horisontalt, vertikalt eller diagonalt.

Implementer disse metodene slik at JExercise-testkoden fullfører feilfritt. Testkoden finner du her: objectstructures/TicTacToeTestPart2.java.

Del 3 - Fullt fungerende spill, med tekstlig interaksjon

...