aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam NAILI2018-01-14 22:12:26 +0100
committerAdam NAILI2018-01-14 22:12:26 +0100
commit36d9bdb9ea9ae1447fd836735be93b4f96b28b0f (patch)
treeeefb1e39539accc6fe0a4f2e72d81ce8275497bd /src
parentd1c6b2f6a9fe6af75f1668e25d96ec4380f69f76 (diff)
parente79dd7a94448467b1a5582a47b84cd3dc320f54d (diff)
downloadwallj-36d9bdb9ea9ae1447fd836735be93b4f96b28b0f.tar.gz
Merge branch 'master' of https://github.com/pacien/upem-java-wallj
Diffstat (limited to 'src')
-rw-r--r--src/docs/user.md18
-rw-r--r--src/main/java/fr/umlv/java/wallj/board/BoardValidator.java3
-rw-r--r--src/main/java/fr/umlv/java/wallj/model/BlockType.java2
-rw-r--r--src/main/resources/maps/level0.txt13
-rw-r--r--src/main/resources/maps/level1.txt13
-rw-r--r--src/main/resources/maps/level2.txt13
-rw-r--r--src/main/resources/maps/level3.txt13
-rw-r--r--src/test/resources/maps/bigValid.txt2
8 files changed, 65 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
69----------- ------------ ---------------- -------------------- 69----------- ------------ ---------------- --------------------
70Wall Black square No No 70Wall Black square No No
71Trash can Red square No No 71Trash can Red square No No
72Bomb Black disk No No
72Free Empty No Yes 73Free Empty No Yes
73Bomb Black disk No Yes
74Garbage Brown disk Yes Yes 74Garbage Brown disk Yes Yes
75Robot Blue disk / / 75Robot Blue disk / /
76 76
@@ -105,8 +105,8 @@ Wall W Yes No
105A world is defined as valid if its blocks fulfill the following criteria: 105A world is defined as valid if its blocks fulfill the following criteria:
106 106
107* The bounding box of the defined world must be made of bounding blocks. 107* The bounding box of the defined world must be made of bounding blocks.
108* The interior space formed by bounding blocks must be unique and simple. 108* The interior space formed by traversable blocks must be unique and simple.
109* Reachable blocks are either adjacent or belong to the interior space. 109* Reachable blocks are either adjacent or belonging to the interior space.
110* The world must contain at least one trash can and one garbage block. 110* The world must contain at least one trash can and one garbage block.
111* The world must have enough free tiles to contain all droppable bombs. 111* The world must have enough free tiles to contain all droppable bombs.
112 112
@@ -118,11 +118,11 @@ The validity of a world may not guaranty the solvability of the puzzle.
118 118
119__Example of invalid world definition:__ 119__Example of invalid world definition:__
120``` 120```
121WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 121WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW W
122W W W 122W W W WWW W
123W W W T 123W W W WTW W
124 WWWWWWWWWW W 124 WWWWWWWWWW W WWW W
125 W W W 125 W W W W
126 W W WWWWWWWWWWW 126 W W WWWWWWWWWWW
127 WWWWWWWWWW W 127 WWWWWWWWWW W
128W W W 128W W W
@@ -137,7 +137,7 @@ W WWWWWWWWWWW
137W WWWWWWWWWWW 137W WWWWWWWWWWW
138T WWWWWWWWWW WWWWWWWWWWW 138T WWWWWWWWWW WWWWWWWWWWW
139T WWWWWWWWWW GGGGGGGGGGGGG WWWWWWWWWWW 139T WWWWWWWWWW GGGGGGGGGGGGG WWWWWWWWWWW
140T WWWWWWWWWW GGGGGGGG G WWWWWWWWWWW 140T WWWWWWWWWW GGGGGGGG WWWWWWWWWWW
141T WWWWWWWWWW GGGGGGGGGGGGG W 141T WWWWWWWWWW GGGGGGGGGGGGG W
142W W W 142W W W
143W W W 143W 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 {
91 .filter(blockEntry -> blockEntry.getValue().mustBeReachable()) 91 .filter(blockEntry -> blockEntry.getValue().mustBeReachable())
92 .allMatch(blockEntry -> blockEntry.getKey().neighbors().stream() 92 .allMatch(blockEntry -> blockEntry.getKey().neighbors().stream()
93 .filter(neighbor -> inBoard(dim, neighbor)) 93 .filter(neighbor -> inBoard(dim, neighbor))
94 .anyMatch(neighbor -> b.getBlockTypeAt(neighbor).isTraversable())); 94 .anyMatch(neighbor -> b.getBlockTypeAt(neighbor).isTraversable() ||
95 b.getBlockTypeAt(neighbor).isMovableByExplosion()));
95 } 96 }
96 97
97 /** 98 /**
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 {
10 FREE(false, true, true, false), 10 FREE(false, true, true, false),
11 WALL(true, false, false, false), 11 WALL(true, false, false, false),
12 TRASH(true, true, false, false), 12 TRASH(true, true, false, false),
13 GARBAGE(false, true, true, true), 13 GARBAGE(false, true, false, true),
14 ROBOT(false, false, true, false), 14 ROBOT(false, false, true, false),
15 BOMB(false, false, true, false); 15 BOMB(false, false, true, false);
16 16
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 @@
1WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
2W W
3T T
4T T
5T T
6T G T
7T G T
8T G T
9T T
10T T
11T T
12W W
13WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW \ 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 @@
1WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
2W W
3W W
4W W
5W W W
6W G WT W
7W G WT W
8W G WT W
9W W W
10W W
11W W
12W W
13WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW \ 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 @@
1WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
2W W
3W WW W
4W G W W
5W W
6W TTT G W
7W W TWT W
8W TTT W
9W W W
10W WW W
11W G WW W W
12W W
13WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW \ 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 @@
1WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
2W W
3W GGGG G G G GGGGG W
4W G G G G G W
5W G GG G GGGGG GGG W
6W G G G G G G W
7W GGGG GGGG G G G W
8W W
9WWWWWWWWWWWWWWWWWWWWWWWWWWWWW W
10W W
11W T W
12W W
13WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW \ No newline at end of file
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
3W WWWWWWWWWWW 3W WWWWWWWWWWW
4T WWWWWWWWWW WWWWWWWWWWW 4T WWWWWWWWWW WWWWWWWWWWW
5T WWWWWWWWWW GGGGGGGGGGGGG WWWWWWWWWWW 5T WWWWWWWWWW GGGGGGGGGGGGG WWWWWWWWWWW
6T WWWWWWWWWW GGGGGGGG G WWWWWWWWWWW 6T WWWWWWWWWW GGGGGGGG WWWWWWWWWWW
7T WWWWWWWWWW GGGGGGGGGGGGG W 7T WWWWWWWWWW GGGGGGGGGGGGG W
8W W W 8W W W
9W W W 9W W W