aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpacien2018-02-03 18:27:32 +0100
committerpacien2018-02-03 18:27:32 +0100
commit63182fc0c738490929a4bb7c82cdbf6350c3ca13 (patch)
treee6c3217f3181b2d82ee4b7b53c7a6ef2627df012
parentc14df96cac5da3a029ed388a15124aadb12f4262 (diff)
downloadwallj-63182fc0c738490929a4bb7c82cdbf6350c3ca13.tar.gz
Ignore invalid robot move orders (outside of map)
Signed-off-by: pacien <pacien.trangirard@pacien.net>
-rw-r--r--src/main/java/fr/umlv/java/wallj/block/RobotBlock.java2
-rw-r--r--src/main/java/fr/umlv/java/wallj/board/Board.java10
2 files changed, 11 insertions, 1 deletions
diff --git a/src/main/java/fr/umlv/java/wallj/block/RobotBlock.java b/src/main/java/fr/umlv/java/wallj/block/RobotBlock.java
index 0969009..25dc734 100644
--- a/src/main/java/fr/umlv/java/wallj/block/RobotBlock.java
+++ b/src/main/java/fr/umlv/java/wallj/block/RobotBlock.java
@@ -67,7 +67,7 @@ public class RobotBlock extends Block {
67 } 67 }
68 68
69 private void updatePath(Board board, TileVec2 target) { 69 private void updatePath(Board board, TileVec2 target) {
70 if (!board.getBlockTypeAt(target).isTraversable()) return; 70 if (!board.inside(target) || !board.getBlockTypeAt(target).isTraversable()) return;
71 if (pathFinder == null) pathFinder = new PathFinder(board); 71 if (pathFinder == null) pathFinder = new PathFinder(board);
72 path = new LinkedList<>(pathFinder.findPath(TileVec2.of(pos), target)); 72 path = new LinkedList<>(pathFinder.findPath(TileVec2.of(pos), target));
73 } 73 }
diff --git a/src/main/java/fr/umlv/java/wallj/board/Board.java b/src/main/java/fr/umlv/java/wallj/board/Board.java
index 5677c39..2e67c53 100644
--- a/src/main/java/fr/umlv/java/wallj/board/Board.java
+++ b/src/main/java/fr/umlv/java/wallj/board/Board.java
@@ -71,6 +71,16 @@ public final class Board {
71 } 71 }
72 72
73 /** 73 /**
74 * @param v a tile vector
75 * @return T(v is a valid position of an element within the board)
76 */
77 public boolean inside(TileVec2 v) {
78 TileVec2 dim = getDim();
79 return v.getRow() >= 0 && v.getCol() >= 0 &&
80 v.getRow() < dim.getRow() && v.getCol() < dim.getCol();
81 }
82
83 /**
74 * @return a stream of block types and their associated tile position vectors 84 * @return a stream of block types and their associated tile position vectors
75 */ 85 */
76 public Stream<Map.Entry<TileVec2, BlockType>> stream() { 86 public Stream<Map.Entry<TileVec2, BlockType>> stream() {