From d2575b7a0c583c4dc15c21491445dab438a4b6b6 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Wed, 26 Feb 2020 08:10:46 +0100 Subject: [PATCH 1/4] Legger til korrekt behandling av interrupt --- .../inf112/fiasko/roborally/game/Game.java | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/main/java/inf112/fiasko/roborally/game/Game.java b/src/main/java/inf112/fiasko/roborally/game/Game.java index b9a2287..717a4b2 100644 --- a/src/main/java/inf112/fiasko/roborally/game/Game.java +++ b/src/main/java/inf112/fiasko/roborally/game/Game.java @@ -29,7 +29,7 @@ public class Game implements IDrawableGame { try { runGameLoop(); } catch (InterruptedException e) { - e.printStackTrace(); + Thread.currentThread().interrupt(); } }).start(); } catch (IOException e) { @@ -42,43 +42,48 @@ public class Game implements IDrawableGame { * @throws InterruptedException If interrupted while trying to sleep */ private void runGameLoop() throws InterruptedException { + long cycleDelay = 600; TimeUnit.SECONDS.sleep(3); gameBoard.rotateRobotRight(RobotID.ROBOT_1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.rotateRobotRight(RobotID.ROBOT_1); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.moveRobotForward(RobotID.ROBOT_1); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.rotateRobotLeft(RobotID.ROBOT_1); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.moveRobotForward(RobotID.ROBOT_1); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.moveRobotForward(RobotID.ROBOT_1); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.rotateRobotRight(RobotID.ROBOT_1); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.moveRobotForward(RobotID.ROBOT_1); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.rotateRobotRight(RobotID.ROBOT_2); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.moveRobotForward(RobotID.ROBOT_2); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.rotateRobotRight(RobotID.ROBOT_2); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.rotateRobotRight(RobotID.ROBOT_2); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.moveRobotForward(RobotID.ROBOT_2); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.rotateRobotRight(RobotID.ROBOT_2); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.rotateRobotRight(RobotID.ROBOT_2); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.moveRobotForward(RobotID.ROBOT_2); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.moveRobotForward(RobotID.ROBOT_2); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.rotateRobotRight(RobotID.ROBOT_2); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.rotateRobotRight(RobotID.ROBOT_2); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.moveRobotForward(RobotID.ROBOT_2); - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(cycleDelay); gameBoard.moveRobotForward(RobotID.ROBOT_2); } From 43150fd37df3a747af0098c75d482a3443401a73 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Wed, 26 Feb 2020 21:33:41 +0100 Subject: [PATCH 2/4] Retter skrivefeil og spacing i Oblig2.md --- Deliverables/Oblig2.md | 101 +++++++++++++++++++++++------------------ 1 file changed, 57 insertions(+), 44 deletions(-) diff --git a/Deliverables/Oblig2.md b/Deliverables/Oblig2.md index ae6bfc8..9d222d9 100644 --- a/Deliverables/Oblig2.md +++ b/Deliverables/Oblig2.md @@ -2,51 +2,65 @@ ## 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. +##### 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ør hva av oppgavene på projektboardet. -* har kontroler kvaliteten på andre sitt arbeid +##### 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 snakk om på møtene. -* kontrolere at møte holder se ginnenfor agendaen. +##### 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 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 +##### 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. -* Alle blir hørt og det er åpent for å komme med tilbakemeldinger på ting som kan bli bedre -* Kommunikasjonen fungerer bra -* 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 + +* Alle blir hørt og det er åpent for å komme med tilbakemeldinger på ting som kan bli bedre. + +* 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. -* 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. ### forbedringpunkter * Jevnere commits fra alle på laget * Bli bedre på brukerhistorier + ## Deloppgave 2 ### Krav 1. En spiller som kan bevege seg på brettet. 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. 5. Roboten trenger å kunne ta skade. 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. #### Brukerhistorier for krav 1 @@ -56,7 +70,7 @@ hva de forskjellige klassen måtte inneholde. *Akseptansekrav* * Vi har en klasse som lagrer en posisjon for alle roboter på brettet. * Posisjoner består av x og y koordinater. -* Roboten lagrer en instanse av positions classen. +* Roboten lagrer en instanse av positions klassen. *Brukerhistorie* * Som spiller trenger jeg en robot for å kunne spille spillet. @@ -79,22 +93,23 @@ hva de forskjellige klassen måtte inneholde. * Brette må kunne vite hvilken tile som er på en bestemt position. *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 å kunne bestemme den funksjonelle retningen til veggen. *Akseptansekrav* * En robot som prøver å gå gjennom en vegg blir stoppet. -* Kunne plasere vegger i forskjelige retninger. +* Kunne plassere vegger i forskjelige retninger. *Arbeidsoppgaver* * Lag en representasjon av en vegg. -* Endre bevegelses metoden til roboten slik at den følger funksjonaliteten til vegger. -* Kunne plasere veggen i forskjellige retninger. -* Leg til en represntation av et hull. +* Endre bevegelsesmetoden til roboten slik at den følger funksjonaliteten til vegger. +* Kunne plassere veggen i forskjellige retninger. +* Legg til en representasjon av et hull. * 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 måte får å kunne lage et brett med forskjelige tiles i spesifikke positioner. +* Legg til en metode i brettet som forteller oss hvilken tile som er i en bestemt posisjon. +* Legg til en måte for å kunne lage et brett med forskjellige tiles i spesifikke posisjoner. #### Brukerhistorier for krav 3 @@ -118,7 +133,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. *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. * Hvis den andre roboten blir blokkert av en vegg så kan den ikke bli dyttet og ingen av robotene flytter på seg. @@ -135,10 +150,10 @@ kan bli dyttet. * Som spiller må roboten min kunne ta skade, for å håntere påvirkning fra objekter som avgir skade til roboter. *Akseptansekrav* -* Roboten sin skade verdi blir økt hvis den tar skade. +* Roboten sin skadeverdi blir økt hvis den tar skade. *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 å hente ut skaden til roboten. @@ -150,18 +165,18 @@ kan bli dyttet. * Roboten har en verdi som reprensenterer mengden liv den har. *Arbeidsoppgaver* -* Legg til en liv verdi i robot klassen. +* Legg til en livverdi i robot klassen. #### Brukerhistorier for krav 7 *Brukerhistorie* * Som spiller må roboten min kunne gjennopstå om den har flere liv, for å kunne spille videre. *Akseptansekrav* -* En dø robot respawner i en backup position om den har flere liv. -* Roboten har 2 i skade etter den respawner. +* En dø robot gjennoppstår i en backup posisjon om den har flere liv. +* Roboten har 2 i skade etter den gjennoppstår. *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 *Brukerhistorie* @@ -171,11 +186,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. *Arbeidsoppgaver* -* legg til en forsinkelse mellom hver handling -* sørg for at forsinkelsen ikke kresjer spillet. +* Legg til en forsinkelse mellom hver handling +* 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. \ No newline at end of file From 19851b584bc70ce51aa94e5054e765d5b254d8f2 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Wed, 26 Feb 2020 21:38:17 +0100 Subject: [PATCH 3/4] Retter markdown issues med overskrifter --- Deliverables/Oblig2.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Deliverables/Oblig2.md b/Deliverables/Oblig2.md index 9d222d9..b514216 100644 --- a/Deliverables/Oblig2.md +++ b/Deliverables/Oblig2.md @@ -4,28 +4,33 @@ * Rollene har fungert greit fram til nå. -### Tobias Kommunikasjonsleder +### 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 +### 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 +### 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 +### 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 +### 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. From c8f7dbbb87990c2247dd1508f6b9dda887e25904 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Thu, 27 Feb 2020 10:38:26 +0100 Subject: [PATCH 4/4] Rydder opp i brettet og testene Overskriver toString metoden i Position for lettere debugging Fjener removeDeadRobotsFromBoard siden den ikke ble brukt rett Flytter repeterende elementer til variabler --- .../element_properties/Position.java | 5 ++ .../fiasko/roborally/objects/Board.java | 11 +-- .../fiasko/roborally/objects/BoardTest.java | 70 +++++++++++-------- 3 files changed, 47 insertions(+), 39 deletions(-) diff --git a/src/main/java/inf112/fiasko/roborally/element_properties/Position.java b/src/main/java/inf112/fiasko/roborally/element_properties/Position.java index 5923b8a..797df36 100644 --- a/src/main/java/inf112/fiasko/roborally/element_properties/Position.java +++ b/src/main/java/inf112/fiasko/roborally/element_properties/Position.java @@ -34,6 +34,11 @@ public class Position { return yCoordinate; } + @Override + public String toString() { + return String.format("X: %d, Y: %d", xCoordinate, yCoordinate); + } + @Override public boolean equals(Object obj) { if (obj.getClass() != Position.class) { diff --git a/src/main/java/inf112/fiasko/roborally/objects/Board.java b/src/main/java/inf112/fiasko/roborally/objects/Board.java index 5cc7369..c25694c 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/Board.java +++ b/src/main/java/inf112/fiasko/roborally/objects/Board.java @@ -85,14 +85,6 @@ public class Board { 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 * @param robotID The id of the robot to rotate @@ -208,7 +200,7 @@ public class Board { */ private void killRobot(Robot robot) { robot.setAmountOfLives(robot.getAmountOfLives() - 1); - removeDeadRobotFromBoard(robot); + robots.remove(robot.getRobotId()); deadRobots.add(robot); } @@ -304,7 +296,6 @@ public class Board { robot.setFacingDirection(Direction.NORTH); robots.put(robot.getRobotId(), robot); } - else {deadRobots.remove(robot); } } deadRobots = new ArrayList<>(); } diff --git a/src/test/java/inf112/fiasko/roborally/objects/BoardTest.java b/src/test/java/inf112/fiasko/roborally/objects/BoardTest.java index 8feceda..d80bd61 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/BoardTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/BoardTest.java @@ -6,6 +6,7 @@ import inf112.fiasko.roborally.element_properties.RobotID; import inf112.fiasko.roborally.element_properties.TileType; import inf112.fiasko.roborally.element_properties.WallType; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import java.util.ArrayList; @@ -19,25 +20,35 @@ import static org.junit.Assert.assertTrue; public class BoardTest { private Grid tileGrid; private Grid wallGrid; - private Position someValidPosition1; - private Position someValidPosition5; - private Position someValidPosition6; - private Position someValidPosition7; + private static Position zeroPosition; + private static Position someValidPosition1; + private static Position someValidPosition2; + 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 robotList; 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 public void setUp() { tileGrid = new Grid<>(5, 5, new Tile(TileType.TILE, Direction.NORTH)); 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.add(new Robot(RobotID.ROBOT_1, someValidPosition1)); robotList.add(new Robot(RobotID.ROBOT_2, someValidPosition2)); @@ -84,28 +95,30 @@ public class BoardTest { @Test 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); - assertEquals(Direction.WEST, robotList.get(0).getFacingDirection()); + assertEquals(Direction.WEST, robot.getFacingDirection()); board.rotateRobotLeft(RobotID.ROBOT_1); - assertEquals(Direction.SOUTH, robotList.get(0).getFacingDirection()); + assertEquals(Direction.SOUTH, robot.getFacingDirection()); board.rotateRobotLeft(RobotID.ROBOT_1); - assertEquals(Direction.EAST, robotList.get(0).getFacingDirection()); + assertEquals(Direction.EAST, robot.getFacingDirection()); board.rotateRobotLeft(RobotID.ROBOT_1); - assertEquals(Direction.NORTH, robotList.get(0).getFacingDirection()); + assertEquals(Direction.NORTH, robot.getFacingDirection()); } @Test 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); - assertEquals(Direction.EAST, robotList.get(0).getFacingDirection()); + assertEquals(Direction.EAST, robot.getFacingDirection()); board.rotateRobotRight(RobotID.ROBOT_1); - assertEquals(Direction.SOUTH, robotList.get(0).getFacingDirection()); + assertEquals(Direction.SOUTH, robot.getFacingDirection()); board.rotateRobotRight(RobotID.ROBOT_1); - assertEquals(Direction.WEST, robotList.get(0).getFacingDirection()); + assertEquals(Direction.WEST, robot.getFacingDirection()); board.rotateRobotRight(RobotID.ROBOT_1); - assertEquals(Direction.NORTH, robotList.get(0).getFacingDirection()); + assertEquals(Direction.NORTH, robot.getFacingDirection()); } @Test (expected = IllegalArgumentException.class) @@ -123,9 +136,9 @@ public class BoardTest { @Test public void killRobotReducesAmountOfLivesByOne() { - Robot robot = board.getAliveRobots().get(1); + Robot robot = robotList.get(1); assertEquals(3, robot.getAmountOfLives()); - robot.setPosition(new Position(0, 0)); + robot.setPosition(zeroPosition); board.moveRobot(robot.getRobotId(), Direction.NORTH); assertEquals(2, robot.getAmountOfLives()); } @@ -133,19 +146,18 @@ public class BoardTest { @Test public void respawnRobotAtBackupPosition() { Robot robot = robotList.get(0); - robot.setPosition(new Position(0, 0)); + robot.setPosition(zeroPosition); board.moveRobot(robot.getRobotId(), Direction.NORTH); - board.removeDeadRobotFromBoard(robot); board.respawnRobots(); - assertEquals(robot.getBackupPosition(), someValidPosition1); + assertEquals(robot.getBackupPosition(), robot.getPosition()); } @Test public void respawnRobotDoesNotRespawnARobotWithNoLives() { - Robot robot = board.getAliveRobots().get(0); + Robot robot = robotList.get(0); + robot.setPosition(zeroPosition); robot.setAmountOfLives(1); board.moveRobot(robot.getRobotId(), Direction.NORTH); - board.removeDeadRobotFromBoard(robot); board.respawnRobots(); assertFalse(board.isRobotAlive(robot.getRobotId())); }