Conflicts:
	src/test/java/inf112/fiasko/roborally/objects/BoardTest.java
This commit is contained in:
Tobydrama 2020-02-27 11:13:15 +01:00
commit ce0641399b
5 changed files with 139 additions and 108 deletions

View File

@ -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. ### Tobias
* 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. #### Kommunikasjonsleder
* jeg får også beskjed om noen er syk slik at gruppen kan ta det i betraktning under møte. ##### Har ansvar for å organisere gruppe møte og par programering møter
### Kristian Teamleder * 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 ##### Ansvarlig for å vite hva alle gjør og burde gjøre til enhver tid
* har holdet stry på projektboardet. * Har holdet stry på projektboardet.
* har hatt kontroll over hvem som skal gjør hva av oppgavene på projektboardet. * Har hatt kontroll over hvem som skal gjøre hvilken av oppgavene på prosjekttavlen.
* har kontroler kvaliteten på andre sitt arbeid * Har kontrolert kvaliteten på andres arbeid.
### Steinar Møteorganisator
##### Ansvarlig for å organisere hva som skal gjennomgås på de avtalte møtene. ### Steinar
* kommer med en liten plan for hva vi skal snakk om på møtene. #### Møteorganisator
* kontrolere at møte holder se ginnenfor agendaen. ##### Ansvarlig for å organisere hva som skal gjennomgås på de avtalte møtene
### Gabriel Kundekontakt * 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 ##### Ansvarlig for å vite alle spilleregler
* må svare på spårsmål fra de andre på gruppen angående spill reglene. * Må svare på spårsmål fra de andre på gruppen angående spillereglene.
* må ha kontroll over de forskjelige mekanikkene i spillet. * Må ha kontroll over de forskjellige mekanikkene i spillet.
### Torbjør Dokumentasjonsansvarlig
### Torbjørn
#### Dokumentasjonsansvarlig
##### Dokumenterer møtene og sørger for at innleveringene er riktig ##### 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 bevegelsesmetoden 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.
@ -157,11 +177,11 @@ kan bli dyttet.
* 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.
*
*

View File

@ -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) {

View File

@ -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);
} }

View File

@ -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<>();
} }

View File

@ -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,9 +136,9 @@ 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());
} }
@ -133,19 +146,18 @@ public class BoardTest {
@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(), someValidPosition1); assertEquals(robot.getBackupPosition(), robot.getPosition());
} }
@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()));
} }