Versions Compared

Key

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

...

Oppgaven handler om spillet Tripp-trapp-tresko og klassen TicTacToeTicTacToe-klassen kapsler inn brettet og har metoder for å utføre trekk og sjekke om spillet er avsluttet, og dekkes av del 1 og 2. Disse to delene har tester.   I del 3 skal du implementere metoder i klassen din slik at den kan brukes av en JavaFX-applikasjon som er forhåndslagd. Da vil det bli et fullt fungerende spill som tar tekstlig input. Spillerne taste inn ønsket trekk etter tur helt til en spiller har vunnet eller spillet avsluttes uavgjort. Du står fritt til å implementere dette hvordan du vil, men her følger et forslag. 

Del 1 - Representasjon av brett og spiller

...

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 kreves 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 testkoden fullfører feilfritt. Testkoden finner du i objectstructures/TicTacToeTestPart1.

Del 2 - Logikk for spillets gang

...

  • 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 testkoden fullfører feilfritt. Testkoden finner du i objectstructures/TicTacToeTestPart2.

Del 3 - Fullt fungerende spill, med interaksjon og JavaFX

...

  • GameController, deklarer spillet ditt og initialiser det slik kommentarene i koden forklarer. 
  • TicTacToe, lag en metode void getInput(String in), som tar inn bruker-input (som kommer fra applikasjonen), og endrer tilstanden på spillet tilsvarende. Her kommer det altså inn posisjonen for neste trekk, som så skal bli utført. Formatet på strengen er valgfri, så "21", "2 1", eller "x2y1" vil fungere. Bestem deg for et format, og skriv kode for dette i metoden.
  • Når spillet er ferdig, skal applikasjonen avsluttes. Skriv gjerne en melding til konsollen og avslutt så spillet. Du kan for eksempel bruke System.exit(0) for å avslutte programmet. spillerne få vite dette. GameController bruker TicTacToe sin toString()-metode for å vise spillets tilstand. Oppdater denne metoden slik at den returnerer en String som sier at spillet er over og hvem som vant (eller uavgjort) når dette skjer.

Du kan nå kjøre applikasjonen (Game.fxml > Run As > FXML Application) og teste spillet ditt.

...