From c50045ae937aa9284d7051ec5d0fe74b79a3e626 Mon Sep 17 00:00:00 2001 From: pacien Date: Sun, 14 Jan 2018 19:07:12 +0100 Subject: Make garbage blocks non-traversable Signed-off-by: pacien --- src/docs/user.md | 18 +++++++++--------- .../java/fr/umlv/java/wallj/board/BoardValidator.java | 3 ++- src/main/java/fr/umlv/java/wallj/model/BlockType.java | 2 +- src/test/resources/maps/bigValid.txt | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/docs/user.md b/src/docs/user.md index 735daf5..cba47eb 100644 --- a/src/docs/user.md +++ b/src/docs/user.md @@ -69,8 +69,8 @@ Entity type Appearance Pushable by bomb Traversable by robot ----------- ------------ ---------------- -------------------- Wall Black square No No Trash can Red square No No +Bomb Black disk No No Free Empty No Yes -Bomb Black disk No Yes Garbage Brown disk Yes Yes Robot Blue disk / / @@ -105,8 +105,8 @@ Wall W Yes No A world is defined as valid if its blocks fulfill the following criteria: * The bounding box of the defined world must be made of bounding blocks. -* The interior space formed by bounding blocks must be unique and simple. -* Reachable blocks are either adjacent or belong to the interior space. +* The interior space formed by traversable blocks must be unique and simple. +* Reachable blocks are either adjacent or belonging to the interior space. * The world must contain at least one trash can and one garbage block. * The world must have enough free tiles to contain all droppable bombs. @@ -118,11 +118,11 @@ The validity of a world may not guaranty the solvability of the puzzle. __Example of invalid world definition:__ ``` -WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW -W W W -W W W T - WWWWWWWWWW W - W W W +WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW W +W W W WWW W +W W W WTW W + WWWWWWWWWW W WWW W + W W W W W W WWWWWWWWWWW WWWWWWWWWW W W W W @@ -137,7 +137,7 @@ W WWWWWWWWWWW W WWWWWWWWWWW T WWWWWWWWWW WWWWWWWWWWW T WWWWWWWWWW GGGGGGGGGGGGG WWWWWWWWWWW -T WWWWWWWWWW GGGGGGGG G WWWWWWWWWWW +T WWWWWWWWWW GGGGGGGG WWWWWWWWWWW T WWWWWWWWWW GGGGGGGGGGGGG W W W W W W W diff --git a/src/main/java/fr/umlv/java/wallj/board/BoardValidator.java b/src/main/java/fr/umlv/java/wallj/board/BoardValidator.java index e238955..e95446b 100644 --- a/src/main/java/fr/umlv/java/wallj/board/BoardValidator.java +++ b/src/main/java/fr/umlv/java/wallj/board/BoardValidator.java @@ -91,7 +91,8 @@ public class BoardValidator { .filter(blockEntry -> blockEntry.getValue().mustBeReachable()) .allMatch(blockEntry -> blockEntry.getKey().neighbors().stream() .filter(neighbor -> inBoard(dim, neighbor)) - .anyMatch(neighbor -> b.getBlockTypeAt(neighbor).isTraversable())); + .anyMatch(neighbor -> b.getBlockTypeAt(neighbor).isTraversable() || + b.getBlockTypeAt(neighbor).isMovableByExplosion())); } /** diff --git a/src/main/java/fr/umlv/java/wallj/model/BlockType.java b/src/main/java/fr/umlv/java/wallj/model/BlockType.java index 9051715..9c5d4f5 100644 --- a/src/main/java/fr/umlv/java/wallj/model/BlockType.java +++ b/src/main/java/fr/umlv/java/wallj/model/BlockType.java @@ -10,7 +10,7 @@ public enum BlockType { FREE(false, true, true, false), WALL(true, false, false, false), TRASH(true, true, false, false), - GARBAGE(false, true, true, true), + GARBAGE(false, true, false, true), ROBOT(false, false, true, false), BOMB(false, false, true, false); diff --git a/src/test/resources/maps/bigValid.txt b/src/test/resources/maps/bigValid.txt index 45bcacf..80c83fc 100644 --- a/src/test/resources/maps/bigValid.txt +++ b/src/test/resources/maps/bigValid.txt @@ -3,7 +3,7 @@ W WWWWWWWWWWW W WWWWWWWWWWW T WWWWWWWWWW WWWWWWWWWWW T WWWWWWWWWW GGGGGGGGGGGGG WWWWWWWWWWW -T WWWWWWWWWW GGGGGGGG G WWWWWWWWWWW +T WWWWWWWWWW GGGGGGGG WWWWWWWWWWW T WWWWWWWWWW GGGGGGGGGGGGG W W W W W W W -- cgit v1.2.3 From 5665935f88ead7704a3e79d2faf59b682eca6610 Mon Sep 17 00:00:00 2001 From: pacien Date: Sun, 14 Jan 2018 19:10:24 +0100 Subject: Keep output dirs for zip generation Signed-off-by: pacien --- classes/.gitignore | 0 docs/doc/.gitignore | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 classes/.gitignore create mode 100644 docs/doc/.gitignore diff --git a/classes/.gitignore b/classes/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/docs/doc/.gitignore b/docs/doc/.gitignore new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3 From e79dd7a94448467b1a5582a47b84cd3dc320f54d Mon Sep 17 00:00:00 2001 From: pacien Date: Sun, 14 Jan 2018 19:41:18 +0100 Subject: Add maps Signed-off-by: pacien --- src/main/resources/maps/level0.txt | 13 +++++++++++++ src/main/resources/maps/level1.txt | 13 +++++++++++++ src/main/resources/maps/level2.txt | 13 +++++++++++++ src/main/resources/maps/level3.txt | 13 +++++++++++++ 4 files changed, 52 insertions(+) create mode 100644 src/main/resources/maps/level0.txt create mode 100644 src/main/resources/maps/level1.txt create mode 100644 src/main/resources/maps/level2.txt create mode 100644 src/main/resources/maps/level3.txt diff --git a/src/main/resources/maps/level0.txt b/src/main/resources/maps/level0.txt new file mode 100644 index 0000000..aa53f62 --- /dev/null +++ b/src/main/resources/maps/level0.txt @@ -0,0 +1,13 @@ +WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW +W W +T T +T T +T T +T G T +T G T +T G T +T T +T T +T T +W W +WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW \ No newline at end of file diff --git a/src/main/resources/maps/level1.txt b/src/main/resources/maps/level1.txt new file mode 100644 index 0000000..7e8e3fb --- /dev/null +++ b/src/main/resources/maps/level1.txt @@ -0,0 +1,13 @@ +WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW +W W +W W +W W +W W W +W G WT W +W G WT W +W G WT W +W W W +W W +W W +W W +WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW \ No newline at end of file diff --git a/src/main/resources/maps/level2.txt b/src/main/resources/maps/level2.txt new file mode 100644 index 0000000..bb41492 --- /dev/null +++ b/src/main/resources/maps/level2.txt @@ -0,0 +1,13 @@ +WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW +W W +W WW W +W G W W +W W +W TTT G W +W W TWT W +W TTT W +W W W +W WW W +W G WW W W +W W +WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW \ No newline at end of file diff --git a/src/main/resources/maps/level3.txt b/src/main/resources/maps/level3.txt new file mode 100644 index 0000000..08f8aef --- /dev/null +++ b/src/main/resources/maps/level3.txt @@ -0,0 +1,13 @@ +WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW +W W +W GGGG G G G GGGGG W +W G G G G G W +W G GG G GGGGG GGG W +W G G G G G G W +W GGGG GGGG G G G W +W W +WWWWWWWWWWWWWWWWWWWWWWWWWWWWW W +W W +W T W +W W +WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW \ No newline at end of file -- cgit v1.2.3