mirror of
https://github.com/inf112-v20/Fiasko.git
synced 2025-01-31 23:29:36 +01:00
Merge branch 'master' of https://github.com/inf112-v20/Fiasko
Conflicts: src/test/java/inf112/fiasko/roborally/objects/BoardTest.java
This commit is contained in:
commit
ce0641399b
@ -2,51 +2,70 @@
|
|||||||
|
|
||||||
## Deloppgave 1
|
## Deloppgave 1
|
||||||
|
|
||||||
* Rollene har fungert greit fram til nå
|
* Rollene har fungert greit fram til nå.
|
||||||
### Tobias Kommunikasjonsleder
|
|
||||||
##### Har ansvar for å organisere gruppe møte og par programering møter.
|
|
||||||
* rollen innebærer å finn ut hvilken dagen folk kan møte og om vi burde møte i person eller har møte digitalt på discord.
|
|
||||||
* jeg får også beskjed om noen er syk slik at gruppen kan ta det i betraktning under møte.
|
|
||||||
### Kristian Teamleder
|
|
||||||
##### Ansvarlig for å vite hva alle gjør og burde gjøre til enhver tid
|
|
||||||
* har holdet stry på projektboardet.
|
|
||||||
* har hatt kontroll over hvem som skal gjør hva av oppgavene på projektboardet.
|
|
||||||
* har kontroler kvaliteten på andre sitt arbeid
|
|
||||||
### Steinar Møteorganisator
|
|
||||||
##### Ansvarlig for å organisere hva som skal gjennomgås på de avtalte møtene.
|
|
||||||
* kommer med en liten plan for hva vi skal snakk om på møtene.
|
|
||||||
* kontrolere at møte holder se ginnenfor agendaen.
|
|
||||||
### Gabriel Kundekontakt
|
|
||||||
##### Ansvarlig for å vite alle spilleregler
|
|
||||||
* må svare på spårsmål fra de andre på gruppen angående spill reglene.
|
|
||||||
* må ha kontroll over de forskjelige mekanikkene i spillet.
|
|
||||||
### Torbjør Dokumentasjonsansvarlig
|
|
||||||
##### Dokumenterer møtene og sørger for at innleveringene er riktig
|
|
||||||
|
|
||||||
|
### Tobias
|
||||||
|
#### Kommunikasjonsleder
|
||||||
|
##### Har ansvar for å organisere gruppe møte og par programering møter
|
||||||
|
* Rollen innebærer å finn ut hvilken dager folk kan møte og om vi burde møte i person eller ha møte digitalt på discord.
|
||||||
|
* Jeg får også beskjed om noen er syk slik at gruppen kan ta det i betraktning under møte.
|
||||||
|
|
||||||
|
### Kristian
|
||||||
|
#### Teamleder
|
||||||
|
##### Ansvarlig for å vite hva alle gjør og burde gjøre til enhver tid
|
||||||
|
* Har holdet stry på projektboardet.
|
||||||
|
* Har hatt kontroll over hvem som skal gjøre hvilken av oppgavene på prosjekttavlen.
|
||||||
|
* Har kontrolert kvaliteten på andres arbeid.
|
||||||
|
|
||||||
|
### Steinar
|
||||||
|
#### Møteorganisator
|
||||||
|
##### Ansvarlig for å organisere hva som skal gjennomgås på de avtalte møtene
|
||||||
|
* Kommer med en liten plan for hva vi skal snakke om på møtene.
|
||||||
|
* Kontrolerer at møte holdes innenfor agendaen.
|
||||||
|
|
||||||
|
### Gabriel
|
||||||
|
#### Kundekontakt
|
||||||
|
##### Ansvarlig for å vite alle spilleregler
|
||||||
|
* Må svare på spårsmål fra de andre på gruppen angående spillereglene.
|
||||||
|
* Må ha kontroll over de forskjellige mekanikkene i spillet.
|
||||||
|
|
||||||
|
### Torbjørn
|
||||||
|
#### Dokumentasjonsansvarlig
|
||||||
|
##### Dokumenterer møtene og sørger for at innleveringene er riktig
|
||||||
|
* Sørger for at referater blir skrevet i forbindelse med møter.
|
||||||
|
* Har ansvar for at dokumentasjon i og utenfor kode er god nok.
|
||||||
|
* Ser over rettskrivning og fikser markdown issues.
|
||||||
|
|
||||||
|
### Videre med deloppgave 1
|
||||||
* Teamet fungerer fint og oppsettet vi har valgt fungerer fint for oss for tiden.
|
* Teamet fungerer fint og oppsettet vi har valgt fungerer fint for oss for tiden.
|
||||||
* Alle blir hørt og det er åpent for å komme med tilbakemeldinger på ting som kan bli bedre
|
|
||||||
* Kommunikasjonen fungerer bra
|
* Alle blir hørt og det er åpent for å komme med tilbakemeldinger på ting som kan bli bedre.
|
||||||
* kan bli bedre til å ta insiativet med å begynne på oppgaver
|
|
||||||
* Vi synes det var en god idea å planlegge klasse strukturne felles i et gruppe rom. det ga alle en god oversikt over
|
* Kommunikasjonen fungerer bra.
|
||||||
|
|
||||||
|
* Kan bli bedre til å ta initiativet med å begynne på oppgaver.
|
||||||
|
|
||||||
|
* Vi synes det var en god idea å planlegge klasse strukturne felles i et gruppe rom. Det gav alle en god oversikt over
|
||||||
hva de forskjellige klassen måtte inneholde.
|
hva de forskjellige klassen måtte inneholde.
|
||||||
|
|
||||||
* Vi har brukt parprogramering som som har gjordt at commitsene har blitt veldig forskjøve
|
* Vi har brukt parprogramering som har gjordt at commitsene har blitt veldig forskjøvet.
|
||||||
|
|
||||||
* En del har blitt diskuter i gruppe der bare en har gjort alle notatene.
|
* En del har blitt diskuter i gruppe der bare en har gjort alle notatene.
|
||||||
|
|
||||||
### forbedringpunkter
|
### forbedringpunkter
|
||||||
* Jevnere commits fra alle på laget
|
* Jevnere commits fra alle på laget
|
||||||
* Bli bedre på brukerhistorier
|
* Bli bedre på brukerhistorier
|
||||||
|
|
||||||
## Deloppgave 2
|
## Deloppgave 2
|
||||||
|
|
||||||
### Krav
|
### Krav
|
||||||
1. En spiller som kan bevege seg på brettet.
|
1. En spiller som kan bevege seg på brettet.
|
||||||
2. Forskjellige funksjonelle objekter/ruter på kartet (eks. vegg, laser).
|
2. Forskjellige funksjonelle objekter/ruter på kartet (eks. vegg, laser).
|
||||||
3. Roboter dør hvis de går utenfor spillbrettet eller faller i ett hull.
|
3. Roboter dør hvis de går utenfor spillbrettet eller faller i et hull.
|
||||||
4. Roboter må kunne dytte hverandre.
|
4. Roboter må kunne dytte hverandre.
|
||||||
5. Roboten trenger å kunne ta skade.
|
5. Roboten trenger å kunne ta skade.
|
||||||
6. En robot trenger liv.
|
6. En robot trenger liv.
|
||||||
7. En robot som er ødelagt vil komme tilbake i en backup position med to i skade.
|
7. En robot som er ødelagt vil komme tilbake i en backupposisjon med to i skade.
|
||||||
8. Vise hendelser som skjer på skjermen med en forsinkelse slik at spilleren ser bevegelsene i spillet.
|
8. Vise hendelser som skjer på skjermen med en forsinkelse slik at spilleren ser bevegelsene i spillet.
|
||||||
|
|
||||||
#### Brukerhistorier for krav 1
|
#### Brukerhistorier for krav 1
|
||||||
@ -56,7 +75,7 @@ hva de forskjellige klassen måtte inneholde.
|
|||||||
*Akseptansekrav*
|
*Akseptansekrav*
|
||||||
* Vi har en klasse som lagrer en posisjon for alle roboter på brettet.
|
* Vi har en klasse som lagrer en posisjon for alle roboter på brettet.
|
||||||
* Posisjoner består av x og y koordinater.
|
* Posisjoner består av x og y koordinater.
|
||||||
* Roboten lagrer en instanse av positions classen.
|
* Roboten lagrer en instanse av positions klassen.
|
||||||
|
|
||||||
*Brukerhistorie*
|
*Brukerhistorie*
|
||||||
* Som spiller trenger jeg en robot for å kunne spille spillet.
|
* Som spiller trenger jeg en robot for å kunne spille spillet.
|
||||||
@ -79,22 +98,23 @@ hva de forskjellige klassen måtte inneholde.
|
|||||||
* Brette må kunne vite hvilken tile som er på en bestemt position.
|
* Brette må kunne vite hvilken tile som er på en bestemt position.
|
||||||
|
|
||||||
*Brukerhistorie*
|
*Brukerhistorie*
|
||||||
* Som vegg må jeg stoppe en robot fra å gå gjennom meg for hindre dem å gjøre et ugyldig trekk.
|
* Som vegg må jeg kunne stoppe en robot fra å gå gjennom meg for å hindre den i å gjøre et ugyldig trekk.
|
||||||
|
|
||||||
* Som vegg må jeg kunne bli plassert i forskjellige retninger for
|
* Som vegg må jeg kunne bli plassert i forskjellige retninger for
|
||||||
å kunne bestemme den funksjonelle retningen til veggen.
|
å kunne bestemme den funksjonelle retningen til veggen.
|
||||||
|
|
||||||
*Akseptansekrav*
|
*Akseptansekrav*
|
||||||
* En robot som prøver å gå gjennom en vegg blir stoppet.
|
* En robot som prøver å gå gjennom en vegg blir stoppet.
|
||||||
* Kunne plasere vegger i forskjelige retninger.
|
* Kunne plassere vegger i forskjelige retninger.
|
||||||
|
|
||||||
*Arbeidsoppgaver*
|
*Arbeidsoppgaver*
|
||||||
* Lag en representasjon av en vegg.
|
* Lag en representasjon av en vegg.
|
||||||
* Endre bevegelses metoden til roboten slik at den følger funksjonaliteten til vegger.
|
* Endre bevegelsesmetoden til roboten slik at den følger funksjonaliteten til vegger.
|
||||||
* Kunne plasere veggen i forskjellige retninger.
|
* Kunne plassere veggen i forskjellige retninger.
|
||||||
* Leg til en represntation av et hull.
|
* Legg til en representasjon av et hull.
|
||||||
* Lag en representasjon av en tile.
|
* Lag en representasjon av en tile.
|
||||||
* Legg til en metode i brettet som forteler oss hvilken tile som er i en bestemt position.
|
* Legg til en metode i brettet som forteller oss hvilken tile som er i en bestemt posisjon.
|
||||||
* Legg til en måte får å kunne lage et brett med forskjelige tiles i spesifikke positioner.
|
* Legg til en måte for å kunne lage et brett med forskjellige tiles i spesifikke posisjoner.
|
||||||
|
|
||||||
#### Brukerhistorier for krav 3
|
#### Brukerhistorier for krav 3
|
||||||
|
|
||||||
@ -118,7 +138,7 @@ utenfor brettet.
|
|||||||
* Som robot må jeg kunne dytte en annen robot hvis det er lovlig å dytte roboten, for å kunne gjøre et gyldig trekk.
|
* Som robot må jeg kunne dytte en annen robot hvis det er lovlig å dytte roboten, for å kunne gjøre et gyldig trekk.
|
||||||
|
|
||||||
*Akseptansekrav*
|
*Akseptansekrav*
|
||||||
* Hvis en robot beveger seg til en position hvor det er en annen robot blir den andre roboten bli dytte så lenge den
|
* Hvis en robot beveger seg til en position hvor det er en annen robot vil den andre roboten bli dyttet så lenge den
|
||||||
kan bli dyttet.
|
kan bli dyttet.
|
||||||
|
|
||||||
* Hvis den andre roboten blir blokkert av en vegg så kan den ikke bli dyttet og ingen av robotene flytter på seg.
|
* Hvis den andre roboten blir blokkert av en vegg så kan den ikke bli dyttet og ingen av robotene flytter på seg.
|
||||||
@ -135,10 +155,10 @@ kan bli dyttet.
|
|||||||
* Som spiller må roboten min kunne ta skade, for å håntere påvirkning fra objekter som avgir skade til roboter.
|
* Som spiller må roboten min kunne ta skade, for å håntere påvirkning fra objekter som avgir skade til roboter.
|
||||||
|
|
||||||
*Akseptansekrav*
|
*Akseptansekrav*
|
||||||
* Roboten sin skade verdi blir økt hvis den tar skade.
|
* Roboten sin skadeverdi blir økt hvis den tar skade.
|
||||||
|
|
||||||
*Arbeidsoppgaver*
|
*Arbeidsoppgaver*
|
||||||
* Legg til en skade verdi i roboten som holder styr på mengden skade roboten har.
|
* Legg til en skadeverdi i roboten som holder styr på mengden skade roboten har.
|
||||||
* Legg til en metode for å sette skaden til roboten.
|
* Legg til en metode for å sette skaden til roboten.
|
||||||
* Legg til en metode for å hente ut skaden til roboten.
|
* Legg til en metode for å hente ut skaden til roboten.
|
||||||
|
|
||||||
@ -150,18 +170,18 @@ kan bli dyttet.
|
|||||||
* Roboten har en verdi som reprensenterer mengden liv den har.
|
* Roboten har en verdi som reprensenterer mengden liv den har.
|
||||||
|
|
||||||
*Arbeidsoppgaver*
|
*Arbeidsoppgaver*
|
||||||
* Legg til en liv verdi i robot klassen.
|
* Legg til en livverdi i robot klassen.
|
||||||
|
|
||||||
#### Brukerhistorier for krav 7
|
#### Brukerhistorier for krav 7
|
||||||
*Brukerhistorie*
|
*Brukerhistorie*
|
||||||
* Som spiller må roboten min kunne gjennopstå om den har flere liv, for å kunne spille videre.
|
* Som spiller må roboten min kunne gjennopstå om den har flere liv, for å kunne spille videre.
|
||||||
|
|
||||||
*Akseptansekrav*
|
*Akseptansekrav*
|
||||||
* En dø robot respawner i en backup position om den har flere liv.
|
* En dø robot gjennoppstår i en backup posisjon om den har flere liv.
|
||||||
* Roboten har 2 i skade etter den respawner.
|
* Roboten har 2 i skade etter den gjennoppstår.
|
||||||
|
|
||||||
*Arbeidsoppgaver*
|
*Arbeidsoppgaver*
|
||||||
* Lag en metode som respawner en robot i en backup position og som setter skaden til roboten til 2.
|
* Lag en metode som respawner en robot i en backup posisjon og som setter skaden til roboten til 2.
|
||||||
|
|
||||||
#### Brukerhistorier for krav 8
|
#### Brukerhistorier for krav 8
|
||||||
*Brukerhistorie*
|
*Brukerhistorie*
|
||||||
@ -171,11 +191,9 @@ kan bli dyttet.
|
|||||||
* Det er en forsinkelse mellom hver handlig som skjer i spillet slik at vi kan følge med på hva som skjer.
|
* Det er en forsinkelse mellom hver handlig som skjer i spillet slik at vi kan følge med på hva som skjer.
|
||||||
|
|
||||||
*Arbeidsoppgaver*
|
*Arbeidsoppgaver*
|
||||||
* legg til en forsinkelse mellom hver handling
|
* Legg til en forsinkelse mellom hver handling
|
||||||
* sørg for at forsinkelsen ikke kresjer spillet.
|
* Sørg for at forsinkelsen ikke kræsjer spillet.
|
||||||
|
|
||||||
### vidre med del 2
|
### Vidre med del 2
|
||||||
|
|
||||||
* vi har prioriter å lage spillet fra bunnen av og opp siden noen deler av spillet er avhenger andre.
|
* Vi har prioritert å lage spillet fra bunnen av og opp siden noen deler av spillet er avhenger andre.
|
||||||
*
|
|
||||||
*
|
|
@ -34,6 +34,11 @@ public class Position {
|
|||||||
return yCoordinate;
|
return yCoordinate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return String.format("X: %d, Y: %d", xCoordinate, yCoordinate);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
if (obj.getClass() != Position.class) {
|
if (obj.getClass() != Position.class) {
|
||||||
|
@ -29,7 +29,7 @@ public class Game implements IDrawableGame {
|
|||||||
try {
|
try {
|
||||||
runGameLoop();
|
runGameLoop();
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
Thread.currentThread().interrupt();
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -42,43 +42,48 @@ public class Game implements IDrawableGame {
|
|||||||
* @throws InterruptedException If interrupted while trying to sleep
|
* @throws InterruptedException If interrupted while trying to sleep
|
||||||
*/
|
*/
|
||||||
private void runGameLoop() throws InterruptedException {
|
private void runGameLoop() throws InterruptedException {
|
||||||
|
long cycleDelay = 600;
|
||||||
TimeUnit.SECONDS.sleep(3);
|
TimeUnit.SECONDS.sleep(3);
|
||||||
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
||||||
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.rotateRobotLeft(RobotID.ROBOT_1);
|
gameBoard.rotateRobotLeft(RobotID.ROBOT_1);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||||
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||||
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||||
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||||
TimeUnit.SECONDS.sleep(1);
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,14 +85,6 @@ public class Board {
|
|||||||
return getAllElementsFromGrid(walls);
|
return getAllElementsFromGrid(walls);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes a dead robot from the board over to the dead robot list
|
|
||||||
* @param robot the dead robot
|
|
||||||
*/
|
|
||||||
public void removeDeadRobotFromBoard(Robot robot) {
|
|
||||||
robots.remove(robot.getRobotId());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rotates a robot to the right
|
* Rotates a robot to the right
|
||||||
* @param robotID The id of the robot to rotate
|
* @param robotID The id of the robot to rotate
|
||||||
@ -208,7 +200,7 @@ public class Board {
|
|||||||
*/
|
*/
|
||||||
private void killRobot(Robot robot) {
|
private void killRobot(Robot robot) {
|
||||||
robot.setAmountOfLives(robot.getAmountOfLives() - 1);
|
robot.setAmountOfLives(robot.getAmountOfLives() - 1);
|
||||||
removeDeadRobotFromBoard(robot);
|
robots.remove(robot.getRobotId());
|
||||||
deadRobots.add(robot);
|
deadRobots.add(robot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,7 +296,6 @@ public class Board {
|
|||||||
robot.setFacingDirection(Direction.NORTH);
|
robot.setFacingDirection(Direction.NORTH);
|
||||||
robots.put(robot.getRobotId(), robot);
|
robots.put(robot.getRobotId(), robot);
|
||||||
}
|
}
|
||||||
else {deadRobots.remove(robot); }
|
|
||||||
}
|
}
|
||||||
deadRobots = new ArrayList<>();
|
deadRobots = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import inf112.fiasko.roborally.element_properties.RobotID;
|
|||||||
import inf112.fiasko.roborally.element_properties.TileType;
|
import inf112.fiasko.roborally.element_properties.TileType;
|
||||||
import inf112.fiasko.roborally.element_properties.WallType;
|
import inf112.fiasko.roborally.element_properties.WallType;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -19,25 +20,35 @@ import static org.junit.Assert.assertTrue;
|
|||||||
public class BoardTest {
|
public class BoardTest {
|
||||||
private Grid<Tile> tileGrid;
|
private Grid<Tile> tileGrid;
|
||||||
private Grid<Wall> wallGrid;
|
private Grid<Wall> wallGrid;
|
||||||
private Position someValidPosition1;
|
private static Position zeroPosition;
|
||||||
private Position someValidPosition5;
|
private static Position someValidPosition1;
|
||||||
private Position someValidPosition6;
|
private static Position someValidPosition2;
|
||||||
private Position someValidPosition7;
|
private static Position someValidPosition3;
|
||||||
|
private static Position someValidPosition4;
|
||||||
|
private static Position someValidPosition5;
|
||||||
|
private static Position someValidPosition6;
|
||||||
|
private static Position someValidPosition7;
|
||||||
|
private static Position someValidPosition8;
|
||||||
private List<Robot> robotList;
|
private List<Robot> robotList;
|
||||||
private Board board;
|
private Board board;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void globalSetUp() {
|
||||||
|
zeroPosition = new Position(0, 0);
|
||||||
|
someValidPosition1 = new Position(2, 2);
|
||||||
|
someValidPosition2 = new Position(2, 1);
|
||||||
|
someValidPosition3 = new Position(2, 3);
|
||||||
|
someValidPosition4 = new Position(2, 4);
|
||||||
|
someValidPosition5 = new Position(3, 1);
|
||||||
|
someValidPosition6 = new Position(3, 2);
|
||||||
|
someValidPosition7 = new Position(3, 3);
|
||||||
|
someValidPosition8 = new Position(3, 4);
|
||||||
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
tileGrid = new Grid<>(5, 5, new Tile(TileType.TILE, Direction.NORTH));
|
tileGrid = new Grid<>(5, 5, new Tile(TileType.TILE, Direction.NORTH));
|
||||||
wallGrid = new Grid<>(5, 5);
|
wallGrid = new Grid<>(5, 5);
|
||||||
someValidPosition1 = new Position(2, 2);
|
|
||||||
Position someValidPosition2 = new Position(2, 1);
|
|
||||||
Position someValidPosition3 = new Position(2, 3);
|
|
||||||
Position someValidPosition4 = new Position(2, 4);
|
|
||||||
someValidPosition5 = new Position(3, 1);
|
|
||||||
someValidPosition6 = new Position(3, 2);
|
|
||||||
someValidPosition7 = new Position(3, 3);
|
|
||||||
Position someValidPosition8 = new Position(3, 4);
|
|
||||||
robotList = new ArrayList<>();
|
robotList = new ArrayList<>();
|
||||||
robotList.add(new Robot(RobotID.ROBOT_1, someValidPosition1));
|
robotList.add(new Robot(RobotID.ROBOT_1, someValidPosition1));
|
||||||
robotList.add(new Robot(RobotID.ROBOT_2, someValidPosition2));
|
robotList.add(new Robot(RobotID.ROBOT_2, someValidPosition2));
|
||||||
@ -84,28 +95,30 @@ public class BoardTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotCanBeRotatedLeft() {
|
public void robotCanBeRotatedLeft() {
|
||||||
assertEquals(Direction.NORTH, robotList.get(0).getFacingDirection());
|
Robot robot = robotList.get(0);
|
||||||
|
assertEquals(Direction.NORTH, robot.getFacingDirection());
|
||||||
board.rotateRobotLeft(RobotID.ROBOT_1);
|
board.rotateRobotLeft(RobotID.ROBOT_1);
|
||||||
assertEquals(Direction.WEST, robotList.get(0).getFacingDirection());
|
assertEquals(Direction.WEST, robot.getFacingDirection());
|
||||||
board.rotateRobotLeft(RobotID.ROBOT_1);
|
board.rotateRobotLeft(RobotID.ROBOT_1);
|
||||||
assertEquals(Direction.SOUTH, robotList.get(0).getFacingDirection());
|
assertEquals(Direction.SOUTH, robot.getFacingDirection());
|
||||||
board.rotateRobotLeft(RobotID.ROBOT_1);
|
board.rotateRobotLeft(RobotID.ROBOT_1);
|
||||||
assertEquals(Direction.EAST, robotList.get(0).getFacingDirection());
|
assertEquals(Direction.EAST, robot.getFacingDirection());
|
||||||
board.rotateRobotLeft(RobotID.ROBOT_1);
|
board.rotateRobotLeft(RobotID.ROBOT_1);
|
||||||
assertEquals(Direction.NORTH, robotList.get(0).getFacingDirection());
|
assertEquals(Direction.NORTH, robot.getFacingDirection());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotCanBeRotatedRight() {
|
public void robotCanBeRotatedRight() {
|
||||||
assertEquals(Direction.NORTH, robotList.get(0).getFacingDirection());
|
Robot robot = robotList.get(0);
|
||||||
|
assertEquals(Direction.NORTH, robot.getFacingDirection());
|
||||||
board.rotateRobotRight(RobotID.ROBOT_1);
|
board.rotateRobotRight(RobotID.ROBOT_1);
|
||||||
assertEquals(Direction.EAST, robotList.get(0).getFacingDirection());
|
assertEquals(Direction.EAST, robot.getFacingDirection());
|
||||||
board.rotateRobotRight(RobotID.ROBOT_1);
|
board.rotateRobotRight(RobotID.ROBOT_1);
|
||||||
assertEquals(Direction.SOUTH, robotList.get(0).getFacingDirection());
|
assertEquals(Direction.SOUTH, robot.getFacingDirection());
|
||||||
board.rotateRobotRight(RobotID.ROBOT_1);
|
board.rotateRobotRight(RobotID.ROBOT_1);
|
||||||
assertEquals(Direction.WEST, robotList.get(0).getFacingDirection());
|
assertEquals(Direction.WEST, robot.getFacingDirection());
|
||||||
board.rotateRobotRight(RobotID.ROBOT_1);
|
board.rotateRobotRight(RobotID.ROBOT_1);
|
||||||
assertEquals(Direction.NORTH, robotList.get(0).getFacingDirection());
|
assertEquals(Direction.NORTH, robot.getFacingDirection());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test (expected = IllegalArgumentException.class)
|
@Test (expected = IllegalArgumentException.class)
|
||||||
@ -123,29 +136,28 @@ public class BoardTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void killRobotReducesAmountOfLivesByOne() {
|
public void killRobotReducesAmountOfLivesByOne() {
|
||||||
Robot robot = board.getAliveRobots().get(1);
|
Robot robot = robotList.get(1);
|
||||||
assertEquals(3, robot.getAmountOfLives());
|
assertEquals(3, robot.getAmountOfLives());
|
||||||
robot.setPosition(new Position(0, 0));
|
robot.setPosition(zeroPosition);
|
||||||
board.moveRobot(robot.getRobotId(), Direction.NORTH);
|
board.moveRobot(robot.getRobotId(), Direction.NORTH);
|
||||||
assertEquals(2, robot.getAmountOfLives());
|
assertEquals(2, robot.getAmountOfLives());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void respawnRobotAtBackupPosition() {
|
public void respawnRobotAtBackupPosition() {
|
||||||
Robot robot = robotList.get(0);
|
Robot robot = robotList.get(0);
|
||||||
robot.setPosition(new Position(0, 0));
|
robot.setPosition(zeroPosition);
|
||||||
board.moveRobot(robot.getRobotId(), Direction.NORTH);
|
board.moveRobot(robot.getRobotId(), Direction.NORTH);
|
||||||
board.removeDeadRobotFromBoard(robot);
|
board.respawnRobots();
|
||||||
board.respawnRobots();
|
assertEquals(robot.getBackupPosition(), robot.getPosition());
|
||||||
assertEquals(robot.getBackupPosition(), someValidPosition1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void respawnRobotDoesNotRespawnARobotWithNoLives() {
|
public void respawnRobotDoesNotRespawnARobotWithNoLives() {
|
||||||
Robot robot = board.getAliveRobots().get(0);
|
Robot robot = robotList.get(0);
|
||||||
|
robot.setPosition(zeroPosition);
|
||||||
robot.setAmountOfLives(1);
|
robot.setAmountOfLives(1);
|
||||||
board.moveRobot(robot.getRobotId(), Direction.NORTH);
|
board.moveRobot(robot.getRobotId(), Direction.NORTH);
|
||||||
board.removeDeadRobotFromBoard(robot);
|
|
||||||
board.respawnRobots();
|
board.respawnRobots();
|
||||||
assertFalse(board.isRobotAlive(robot.getRobotId()));
|
assertFalse(board.isRobotAlive(robot.getRobotId()));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user