From 72b47619c9e90bc10b02abc8c38d50f5cbe7d667 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Tue, 21 Apr 2020 10:45:02 +0200 Subject: [PATCH 01/15] =?UTF-8?q?Flytter=20litt=20p=C3=A5=20soving=20i=20f?= =?UTF-8?q?ase=20for=20en=20bedre=20brukeropplevelse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/inf112/fiasko/roborally/objects/Phase.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/inf112/fiasko/roborally/objects/Phase.java b/src/main/java/inf112/fiasko/roborally/objects/Phase.java index f421407..5623ab3 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/Phase.java +++ b/src/main/java/inf112/fiasko/roborally/objects/Phase.java @@ -50,6 +50,7 @@ public class Phase { * @throws InterruptedException If interrupted wile trying to sleep */ public void runPhase(int phaseNumber) throws InterruptedException { + sleep(); runProgrammingCards(phaseNumber); moveAllConveyorBelts(); @@ -83,6 +84,7 @@ public class Phase { * @throws InterruptedException If it gets interrupted while trying to sleep */ public void fireAllLasers() throws InterruptedException { + sleep(); gameBoard.fireAllLasers(); sleep(); gameBoard.doLaserCleanup(); @@ -121,11 +123,11 @@ public class Phase { * @throws InterruptedException If interrupted while sleeping. */ public void rotateCogwheels() throws InterruptedException { + sleep(); for (BoardElementContainer cogwheel : cogwheels) { if (!gameBoard.hasRobotOnPosition(cogwheel.getPosition())) { continue; } - sleep(); if (cogwheel.getElement().getTileType() == TileType.COGWHEEL_RIGHT) { gameBoard.rotateRobotRight(gameBoard.getRobotOnPosition(cogwheel.getPosition())); } else { From 1ac7ab529938ff72ec07fa3d19e0e3e1f6a2bde2 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 14:57:44 +0200 Subject: [PATCH 02/15] =?UTF-8?q?Endrer=20test=5Fboard.txt=20for=20=C3=A5?= =?UTF-8?q?=20kunne=20teste=20diverse=20funksjoner=20p=C3=A5=20brettet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- src/test/resources/boards/test_board.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/resources/boards/test_board.txt b/src/test/resources/boards/test_board.txt index 62da8c2..dc84aaf 100644 --- a/src/test/resources/boards/test_board.txt +++ b/src/test/resources/boards/test_board.txt @@ -1,7 +1,7 @@ 12 12 -01;01 05;01 01;01 01;01 01;01 01;01 01;01 05;01 01;01 01;01 01;01 01;01 +01;01 01;01 01;01 01;01 01;01 01;01 01;01 05;01 01;01 01;01 01;01 01;01 01;01 05;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 02;01 01;01 01;01 -01;01 05;03 01;01 05;07 01;01 01;01 01;01 01;01 01;01 05;01 01;01 01;01 +01;01 05;01 01;01 05;07 01;01 01;01 01;01 01;01 01;01 05;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 11;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 12;07 11;07 01;01 01;01 04;01 01;01 01;01 @@ -9,9 +9,9 @@ 01;01 01;01 01;01 01;01 11;01 05;01 05;03 02;01 01;01 03;01 01;01 01;01 01;01 07;05 07;07 01;01 11;01 05;01 01;01 05;01 01;01 01;01 01;01 01;01 01;01 07;03 07;01 01;01 11;01 05;01 01;01 01;01 01;01 01;01 01;01 01;01 -01;01 01;01 01;01 01;01 11;01 05;01 01;01 01;01 01;01 01;01 01;01 01;01 -01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 -0 1;1 0 0 0 0 0 0 0 0 0 0 +01;01 01;01 01;01 01;01 11;01 05;01 01;01 05;03 01;01 01;01 01;01 01;01 +01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 05;01 01;01 01;01 01;01 +0 1;5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 From 210f72e0f2e48e39eba457da964a2e436c88d139 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 15:00:02 +0200 Subject: [PATCH 03/15] =?UTF-8?q?Legger=20til=20test=20for=20robotkollisjo?= =?UTF-8?q?n=20i=20enden=20av=20transportb=C3=A5nd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- .../fiasko/roborally/objects/PhaseTest.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java index f2ddb46..ef3df09 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java @@ -156,4 +156,26 @@ public class PhaseTest { assertEquals(robot5.getRobotId(), board.getRobotOnPosition(new Position(2, 12))); assertEquals(robot6.getRobotId(), board.getRobotOnPosition(new Position(2, 14))); } + + @Test + public void robotsOnConveyorBeltsFacingTheSameEmptyTileDoesNotMove() { + List robots = new ArrayList<>(); + List players = new ArrayList<>(); + robots.add(new Robot(RobotID.ROBOT_1, new Position(8, 11))); + robots.add(new Robot(RobotID.ROBOT_2, new Position(7, 10))); + players.add(new Player(RobotID.ROBOT_1, "Player 1")); + players.add(new Player(RobotID.ROBOT_2, "Player 2")); + + try { + board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots); + Phase testPhase = new Phase(board, players, 0, null); + testPhase.moveAllConveyorBelts(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(8, 11))); + assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(7, 10))); + } + + } From c62e9b9b1af042dcef70f35b40fd819bce4adeb0 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 15:01:32 +0200 Subject: [PATCH 04/15] =?UTF-8?q?Legger=20til=20test=20for=20robotkollisjo?= =?UTF-8?q?n=20i=20hull=20ved=20enden=20av=20transportb=C3=A5nd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- .../fiasko/roborally/objects/PhaseTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java index ef3df09..5142341 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java @@ -177,5 +177,25 @@ public class PhaseTest { assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(7, 10))); } + @Test + public void robotsOnConveyorBeltsFacingTheSameHoleTileDoesNotMove() { + List robots = new ArrayList<>(); + List players = new ArrayList<>(); + robots.add(new Robot(RobotID.ROBOT_1, new Position(6, 7))); + robots.add(new Robot(RobotID.ROBOT_2, new Position(7, 8))); + players.add(new Player(RobotID.ROBOT_1, "Player 1")); + players.add(new Player(RobotID.ROBOT_2, "Player 2")); + + try { + board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots); + Phase testPhase = new Phase(board, players, 0, null); + testPhase.moveAllConveyorBelts(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(6, 7))); + assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(7, 8))); + } + } From 9eeb4b4c0d127c2ffede72ea4bb9d0087f3a0ccc Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 15:02:34 +0200 Subject: [PATCH 05/15] =?UTF-8?q?Legger=20til=20test=20for=20at=20en=20rob?= =?UTF-8?q?ot=20ikke=20blir=20skubbet=20gjennom=20en=20vegg=20av=20et=20tr?= =?UTF-8?q?ansportb=C3=A5nd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- .../fiasko/roborally/objects/PhaseTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java index 5142341..58701d8 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java @@ -197,5 +197,22 @@ public class PhaseTest { assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(7, 8))); } + @Test + public void robotOnConveyorBeltsFacingWallDoesNotMove() { + List robots = new ArrayList<>(); + List players = new ArrayList<>(); + robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 1))); + players.add(new Player(RobotID.ROBOT_1, "Player 1")); + + try { + board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots); + Phase testPhase = new Phase(board, players, 0, null); + testPhase.moveAllConveyorBelts(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 1))); + } + } From 7644b68a47baa1a03eccadc9c9911ef68fe9bef9 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 15:03:34 +0200 Subject: [PATCH 06/15] =?UTF-8?q?Legger=20til=20test=20for=20at=20en=20rob?= =?UTF-8?q?ot=20ikke=20blir=20flyttet=20av=20et=20transportb=C3=A5nd=20n?= =?UTF-8?q?=C3=A5r=20den=20har=20en=20robot=20forran=20seg=20som=20ikke=20?= =?UTF-8?q?kan=20bevege=20seg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- .../fiasko/roborally/objects/PhaseTest.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java index 58701d8..721e0ee 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java @@ -214,5 +214,23 @@ public class PhaseTest { assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 1))); } + @Test + public void robotBehindAnotherRobotOnConveyorBeltsFacingWallDoesNotMove() { + List robots = new ArrayList<>(); + List players = new ArrayList<>(); + robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 1))); + robots.add(new Robot(RobotID.ROBOT_2, new Position(1, 2))); + players.add(new Player(RobotID.ROBOT_1, "Player 1")); + players.add(new Player(RobotID.ROBOT_2, "Player 2")); + try { + board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots); + Phase testPhase = new Phase(board, players, 0, null); + testPhase.moveAllConveyorBelts(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 1))); + assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(1, 2))); + } } From cf7a64952df8ddea0f44e77b3b3046275655d8c6 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 15:16:35 +0200 Subject: [PATCH 07/15] =?UTF-8?q?Legger=20til=20test=20for=20at=20roboter?= =?UTF-8?q?=20som=20st=C3=A5r=20i=20k=C3=B8=20p=C3=A5=20transportb=C3=A5nd?= =?UTF-8?q?=20kan=20bevege=20seg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- .../fiasko/roborally/objects/PhaseTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java index 721e0ee..2245d7f 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java @@ -233,4 +233,30 @@ public class PhaseTest { assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 1))); assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(1, 2))); } + + @Test + public void robotBehindOtherRobotsOnSlowConveyorBeltsFacingEmptyTilesMoves() { + List robots = new ArrayList<>(); + List players = new ArrayList<>(); + robots.add(new Robot(RobotID.ROBOT_1, new Position(5, 7))); + robots.add(new Robot(RobotID.ROBOT_2, new Position(5, 8))); + robots.add(new Robot(RobotID.ROBOT_3, new Position(5, 9))); + robots.add(new Robot(RobotID.ROBOT_4, new Position(5, 10))); + players.add(new Player(RobotID.ROBOT_1, "Player 1")); + players.add(new Player(RobotID.ROBOT_2, "Player 2")); + players.add(new Player(RobotID.ROBOT_3, "Player 3")); + players.add(new Player(RobotID.ROBOT_4, "Player 4")); + + try { + board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots); + Phase testPhase = new Phase(board, players, 0, null); + testPhase.moveAllConveyorBelts(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(5, 6))); + assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(5, 7))); + assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(5, 8))); + assertEquals(RobotID.ROBOT_4, board.getRobotOnPosition(new Position(5, 9))); + } } From de899380cbf186fe1d02b3b0688855e00d561964 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 15:22:25 +0200 Subject: [PATCH 08/15] =?UTF-8?q?Legger=20til=20test=20for=20at=20roboter?= =?UTF-8?q?=20som=20st=C3=A5r=20i=20k=C3=B8=20p=C3=A5=20raske=20transportb?= =?UTF-8?q?=C3=A5nd=20kan=20bevege=20seg=20korrekt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- .../fiasko/roborally/objects/PhaseTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java index 2245d7f..d5866fa 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java @@ -259,4 +259,30 @@ public class PhaseTest { assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(5, 8))); assertEquals(RobotID.ROBOT_4, board.getRobotOnPosition(new Position(5, 9))); } + + @Test + public void robotBehindOtherRobotsOnFastConveyorBeltsFacingEmptyTilesMoves() { + List robots = new ArrayList<>(); + List players = new ArrayList<>(); + robots.add(new Robot(RobotID.ROBOT_1, new Position(4, 7))); + robots.add(new Robot(RobotID.ROBOT_2, new Position(4, 8))); + robots.add(new Robot(RobotID.ROBOT_3, new Position(4, 9))); + robots.add(new Robot(RobotID.ROBOT_4, new Position(4, 10))); + players.add(new Player(RobotID.ROBOT_1, "Player 1")); + players.add(new Player(RobotID.ROBOT_2, "Player 2")); + players.add(new Player(RobotID.ROBOT_3, "Player 3")); + players.add(new Player(RobotID.ROBOT_4, "Player 4")); + + try { + board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots); + Phase testPhase = new Phase(board, players, 0, null); + testPhase.moveAllConveyorBelts(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(4, 5))); + assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(4, 6))); + assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(4, 7))); + assertEquals(RobotID.ROBOT_4, board.getRobotOnPosition(new Position(4, 8))); + } } From 6606f8aa52cd7ed5072c2448be863504e6fb72ed Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 15:22:57 +0200 Subject: [PATCH 09/15] =?UTF-8?q?Legger=20til=20flere=20raske=20transportb?= =?UTF-8?q?=C3=A5nd=20for=20testing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- src/test/resources/boards/test_board.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/resources/boards/test_board.txt b/src/test/resources/boards/test_board.txt index dc84aaf..2eaf55c 100644 --- a/src/test/resources/boards/test_board.txt +++ b/src/test/resources/boards/test_board.txt @@ -4,8 +4,8 @@ 01;01 05;01 01;01 05;07 01;01 01;01 01;01 01;01 01;01 05;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 11;01 01;01 01;01 01;01 01;01 01;01 01;01 -01;01 01;01 01;01 01;01 01;01 12;07 11;07 01;01 01;01 04;01 01;01 01;01 -01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 +01;01 01;01 01;01 01;01 11;01 12;07 11;07 01;01 01;01 04;01 01;01 01;01 +01;01 01;01 01;01 01;01 11;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 01;01 11;01 05;01 05;03 02;01 01;01 03;01 01;01 01;01 01;01 07;05 07;07 01;01 11;01 05;01 01;01 05;01 01;01 01;01 01;01 01;01 01;01 07;03 07;01 01;01 11;01 05;01 01;01 01;01 01;01 01;01 01;01 01;01 From f9fc0507fbf5755770133b341898f0d974eb4c75 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 15:46:30 +0200 Subject: [PATCH 10/15] =?UTF-8?q?Legger=20til=20test=20for=20at=20roboter?= =?UTF-8?q?=20i=20full=20rundkj=C3=B8ring=20blir=20flyttet=20som=20forvent?= =?UTF-8?q?et=20og=20at=20det=20ikke=20skapes=20en=20evig=20loop=20i=20kod?= =?UTF-8?q?en?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- .../fiasko/roborally/objects/PhaseTest.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java index d5866fa..f0baa5b 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java @@ -285,4 +285,33 @@ public class PhaseTest { assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(4, 7))); assertEquals(RobotID.ROBOT_4, board.getRobotOnPosition(new Position(4, 8))); } + + @Test + public void robotBehindOtherRobotsOnConveyorBeltsShapedAsARoundaboutMoves() { + long startTime = System.currentTimeMillis(); + List robots = new ArrayList<>(); + List players = new ArrayList<>(); + robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 8))); + robots.add(new Robot(RobotID.ROBOT_2, new Position(2, 8))); + robots.add(new Robot(RobotID.ROBOT_3, new Position(2, 9))); + robots.add(new Robot(RobotID.ROBOT_4, new Position(1, 9))); + players.add(new Player(RobotID.ROBOT_1, "Player 1")); + players.add(new Player(RobotID.ROBOT_2, "Player 2")); + players.add(new Player(RobotID.ROBOT_3, "Player 3")); + players.add(new Player(RobotID.ROBOT_4, "Player 4")); + + try { + board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots); + Phase testPhase = new Phase(board, players, 0, null); + testPhase.moveAllConveyorBelts(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 9))); + assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(1, 8))); + assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(2, 8))); + assertEquals(RobotID.ROBOT_4, board.getRobotOnPosition(new Position(2, 9))); + int elapsedTime = (int) Math.floor((System.currentTimeMillis() - startTime) / 1000f); + assertTrue(elapsedTime < 1); + } } From c969a3db04a5b7c01969d956ab93d3a775a3e526 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 15:55:21 +0200 Subject: [PATCH 11/15] =?UTF-8?q?Legger=20til=20test=20for=20at=20roboter?= =?UTF-8?q?=20som=20blir=20skubbet=20i=20hull=20av=20transportb=C3=A5nd=20?= =?UTF-8?q?d=C3=B8r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- .../fiasko/roborally/objects/PhaseTest.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java index f0baa5b..6416e75 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java @@ -314,4 +314,25 @@ public class PhaseTest { int elapsedTime = (int) Math.floor((System.currentTimeMillis() - startTime) / 1000f); assertTrue(elapsedTime < 1); } + + @Test + public void robotOnConveyorBeltFacingHoleMovesAndDies() { + List robots = new ArrayList<>(); + List players = new ArrayList<>(); + robots.add(new Robot(RobotID.ROBOT_1, new Position(6, 7))); + players.add(new Player(RobotID.ROBOT_1, "Player 1")); + + try { + board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots); + Phase testPhase = new Phase(board, players, 0, null); + testPhase.moveAllConveyorBelts(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + assertFalse(board.isRobotAlive(RobotID.ROBOT_1)); + assertNull(board.getRobotOnPosition(new Position(6, 7))); + assertNull(board.getRobotOnPosition(new Position(7, 7))); + } + + } From 7bdf508c01835e79dcd93acf59a2918d1123ba4a Mon Sep 17 00:00:00 2001 From: torlunjen Date: Tue, 21 Apr 2020 16:08:15 +0200 Subject: [PATCH 12/15] =?UTF-8?q?Legger=20til=20test=20for=20at=20roboter?= =?UTF-8?q?=20som=20blir=20skubbet=20ut=20av=20brettet=20av=20transportb?= =?UTF-8?q?=C3=A5nd=20d=C3=B8r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: gabrielmagnus --- .../fiasko/roborally/objects/PhaseTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java index 6416e75..c948e56 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java @@ -334,5 +334,21 @@ public class PhaseTest { assertNull(board.getRobotOnPosition(new Position(7, 7))); } + @Test + public void robotOnConveyorBeltFacingOutOfMapMovesAndDies() { + List robots = new ArrayList<>(); + List players = new ArrayList<>(); + robots.add(new Robot(RobotID.ROBOT_1, new Position(7, 0))); + players.add(new Player(RobotID.ROBOT_1, "Player 1")); + try { + board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots); + Phase testPhase = new Phase(board, players, 0, null); + testPhase.moveAllConveyorBelts(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + assertFalse(board.isRobotAlive(RobotID.ROBOT_1)); + assertNull(board.getRobotOnPosition(new Position(7, 0))); + } } From 2d45f1ab665aaa40f7d211102d608c4bbc9d86cc Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Tue, 21 Apr 2020 16:13:07 +0200 Subject: [PATCH 13/15] =?UTF-8?q?Gj=C3=B8r=20det=20mulig=20=C3=A5=20hente?= =?UTF-8?q?=20ut=20spillere=20fra=20et=20tegnbart=20brett?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/inf112/fiasko/roborally/objects/DrawableGame.java | 7 +++++++ .../inf112/fiasko/roborally/objects/RoboRallyGame.java | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/inf112/fiasko/roborally/objects/DrawableGame.java b/src/main/java/inf112/fiasko/roborally/objects/DrawableGame.java index b506062..2faf1be 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/DrawableGame.java +++ b/src/main/java/inf112/fiasko/roborally/objects/DrawableGame.java @@ -57,4 +57,11 @@ public interface DrawableGame { * @return A list of all robots to draw */ List getRobotsToDraw(); + + /** + * Gets a list of active players to receive information about player names + * + * @return A list of players + */ + List getPlayers(); } diff --git a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java index 99ec6cf..4de3319 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java +++ b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java @@ -114,6 +114,11 @@ public class RoboRallyGame implements DrawableGame, InteractableGame { return gameBoard.getAliveRobots(); } + @Override + public List getPlayers() { + return new ArrayList<>(this.playerList); + } + @Override public GameState getGameState() { return gameState; From 417681d1e28031b2959eb4f96a1cf1621cabd261 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Tue, 21 Apr 2020 16:19:51 +0200 Subject: [PATCH 14/15] Fikser #68 Closes #68 --- src/main/java/inf112/fiasko/roborally/objects/Board.java | 5 ++++- src/main/java/inf112/fiasko/roborally/objects/Phase.java | 7 ++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/inf112/fiasko/roborally/objects/Board.java b/src/main/java/inf112/fiasko/roborally/objects/Board.java index 3550bae..be7db3e 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/Board.java +++ b/src/main/java/inf112/fiasko/roborally/objects/Board.java @@ -329,6 +329,9 @@ public class Board { return true; } Position positionInFront = getNewPosition(conveyorBeltPosition, conveyorBeltDirection); + if (!isValidPosition(positionInFront)) { + return true; + } Tile tileInFront = getTileOnPosition(positionInFront); //If a conveyor belt will move the robot outside the map, the move is valid if (!isValidPosition(positionInFront)) { @@ -564,7 +567,7 @@ public class Board { * @param position The position to test * @return True if the position is valid. False otherwise */ - private boolean isValidPosition(Position position) { + public boolean isValidPosition(Position position) { return position.getXCoordinate() >= 0 && position.getXCoordinate() < boardWidth && position.getYCoordinate() >= 0 diff --git a/src/main/java/inf112/fiasko/roborally/objects/Phase.java b/src/main/java/inf112/fiasko/roborally/objects/Phase.java index 5623ab3..616d23b 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/Phase.java +++ b/src/main/java/inf112/fiasko/roborally/objects/Phase.java @@ -128,10 +128,11 @@ public class Phase { if (!gameBoard.hasRobotOnPosition(cogwheel.getPosition())) { continue; } + RobotID robotAtCogwheel = gameBoard.getRobotOnPosition(cogwheel.getPosition()); if (cogwheel.getElement().getTileType() == TileType.COGWHEEL_RIGHT) { - gameBoard.rotateRobotRight(gameBoard.getRobotOnPosition(cogwheel.getPosition())); + gameBoard.rotateRobotRight(robotAtCogwheel); } else { - gameBoard.rotateRobotLeft(gameBoard.getRobotOnPosition(cogwheel.getPosition())); + gameBoard.rotateRobotLeft(robotAtCogwheel); } } } @@ -269,7 +270,7 @@ public class Phase { Map newPositions, Map moveNormally) { RobotID robotAtConveyorBelt = gameBoard.getRobotOnPosition(conveyorBeltPosition); Position newPosition = gameBoard.getNewPosition(conveyorBeltPosition, conveyorBeltDirection); - if (gameBoard.isConveyorBelt(gameBoard.getTileOnPosition(newPosition))) { + if (gameBoard.isValidPosition(newPosition) && gameBoard.isConveyorBelt(gameBoard.getTileOnPosition(newPosition))) { newPositions.put(robotAtConveyorBelt, newPosition); moveNormally.put(robotAtConveyorBelt, false); Direction newDirection = gameBoard.getTileOnPosition(newPosition).getDirection(); From ea855573e0c64dec719580afb07d5f655a6ebb47 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Tue, 21 Apr 2020 16:28:44 +0200 Subject: [PATCH 15/15] =?UTF-8?q?Fikser=20sjekking=20av=20en=20robot=20som?= =?UTF-8?q?=20st=C3=A5r=20p=C3=A5=20et=20transporb=C3=A5nd=20som=20peker?= =?UTF-8?q?=20ut=20av=20brettet,=20men=20som=20blir=20stoppet=20av=20en=20?= =?UTF-8?q?vegg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inf112/fiasko/roborally/objects/Board.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/inf112/fiasko/roborally/objects/Board.java b/src/main/java/inf112/fiasko/roborally/objects/Board.java index be7db3e..0b633f2 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/Board.java +++ b/src/main/java/inf112/fiasko/roborally/objects/Board.java @@ -329,19 +329,18 @@ public class Board { return true; } Position positionInFront = getNewPosition(conveyorBeltPosition, conveyorBeltDirection); - if (!isValidPosition(positionInFront)) { - return true; + //The tile in front of the robot is not a conveyor belt and has something on it stopping the conveyor belt + if ((!isValidPosition(positionInFront) && moveIsStoppedByWall(conveyorBeltPosition, positionInFront, + conveyorBeltDirection)) || (isValidPosition(positionInFront) && + !isConveyorBelt(getTileOnPosition(positionInFront)) && + hasFrontConflict(conveyorBeltPosition, positionInFront, conveyorBeltDirection))) { + return false; } - Tile tileInFront = getTileOnPosition(positionInFront); //If a conveyor belt will move the robot outside the map, the move is valid if (!isValidPosition(positionInFront)) { return true; } - //The tile in front of the robot is not a conveyor belt and has something on it stopping the conveyor belt - if (!isConveyorBelt(tileInFront) && - hasFrontConflict(conveyorBeltPosition, positionInFront, conveyorBeltDirection)) { - return false; - } + Tile tileInFront = getTileOnPosition(positionInFront); //There is another robot trying to enter the same crossing if (hasCrossingConflict(positionInFront, conveyorBeltDirection)) { return false;