diff --git a/resources/graphics/robot_idle/down/robot0004.png b/resources/graphics/robot_idle/down/robot0004.png
index 9d341cd..ca8a39d 100644
Binary files a/resources/graphics/robot_idle/down/robot0004.png and b/resources/graphics/robot_idle/down/robot0004.png differ
diff --git a/resources/graphics/robot_idle/down/robot0005.png b/resources/graphics/robot_idle/down/robot0005.png
index cd81a86..ecaa8df 100644
Binary files a/resources/graphics/robot_idle/down/robot0005.png and b/resources/graphics/robot_idle/down/robot0005.png differ
diff --git a/resources/graphics/robot_idle/down/robot0006.png b/resources/graphics/robot_idle/down/robot0006.png
index 27e3636..6a1666b 100644
Binary files a/resources/graphics/robot_idle/down/robot0006.png and b/resources/graphics/robot_idle/down/robot0006.png differ
diff --git a/resources/graphics/robot_idle/down/robot0007.png b/resources/graphics/robot_idle/down/robot0007.png
index b7b3428..2187995 100644
Binary files a/resources/graphics/robot_idle/down/robot0007.png and b/resources/graphics/robot_idle/down/robot0007.png differ
diff --git a/resources/graphics/robot_idle/down/robot0008.png b/resources/graphics/robot_idle/down/robot0008.png
index 0e6afd6..0af1a4b 100644
Binary files a/resources/graphics/robot_idle/down/robot0008.png and b/resources/graphics/robot_idle/down/robot0008.png differ
diff --git a/resources/graphics/robot_idle/down/robot0009.png b/resources/graphics/robot_idle/down/robot0009.png
index 552fb27..b8eb05d 100644
Binary files a/resources/graphics/robot_idle/down/robot0009.png and b/resources/graphics/robot_idle/down/robot0009.png differ
diff --git a/resources/graphics/robot_idle/down/robot0010.png b/resources/graphics/robot_idle/down/robot0010.png
index b7f355b..74f7969 100644
Binary files a/resources/graphics/robot_idle/down/robot0010.png and b/resources/graphics/robot_idle/down/robot0010.png differ
diff --git a/resources/graphics/robot_idle/down/robot0011.png b/resources/graphics/robot_idle/down/robot0011.png
index 98c913b..88a0866 100644
Binary files a/resources/graphics/robot_idle/down/robot0011.png and b/resources/graphics/robot_idle/down/robot0011.png differ
diff --git a/resources/graphics/robot_idle/down/robot0012.png b/resources/graphics/robot_idle/down/robot0012.png
index 7ff06fe..4afe095 100644
Binary files a/resources/graphics/robot_idle/down/robot0012.png and b/resources/graphics/robot_idle/down/robot0012.png differ
diff --git a/resources/graphics/robot_idle/down/robot0013.png b/resources/graphics/robot_idle/down/robot0013.png
index 113a3e8..d9a7ed0 100644
Binary files a/resources/graphics/robot_idle/down/robot0013.png and b/resources/graphics/robot_idle/down/robot0013.png differ
diff --git a/resources/graphics/robot_idle/down/robot0014.png b/resources/graphics/robot_idle/down/robot0014.png
index 675c12b..77439da 100644
Binary files a/resources/graphics/robot_idle/down/robot0014.png and b/resources/graphics/robot_idle/down/robot0014.png differ
diff --git a/resources/graphics/robot_idle/down/robot0015.png b/resources/graphics/robot_idle/down/robot0015.png
index 2c3fc5b..bc7ed35 100644
Binary files a/resources/graphics/robot_idle/down/robot0015.png and b/resources/graphics/robot_idle/down/robot0015.png differ
diff --git a/resources/graphics/robot_idle/down/robot0016.png b/resources/graphics/robot_idle/down/robot0016.png
index 54d5b07..6164c23 100644
Binary files a/resources/graphics/robot_idle/down/robot0016.png and b/resources/graphics/robot_idle/down/robot0016.png differ
diff --git a/resources/graphics/robot_idle/down/robot0017.png b/resources/graphics/robot_idle/down/robot0017.png
index ca1a661..684c454 100644
Binary files a/resources/graphics/robot_idle/down/robot0017.png and b/resources/graphics/robot_idle/down/robot0017.png differ
diff --git a/resources/graphics/robot_idle/down/robot0018.png b/resources/graphics/robot_idle/down/robot0018.png
index 252b9b2..5dbc2f8 100644
Binary files a/resources/graphics/robot_idle/down/robot0018.png and b/resources/graphics/robot_idle/down/robot0018.png differ
diff --git a/resources/graphics/robot_idle/down/robot0019.png b/resources/graphics/robot_idle/down/robot0019.png
index 1666811..895885b 100644
Binary files a/resources/graphics/robot_idle/down/robot0019.png and b/resources/graphics/robot_idle/down/robot0019.png differ
diff --git a/resources/graphics/robot_idle/down/robot0020.png b/resources/graphics/robot_idle/down/robot0020.png
index ced9add..fb1bf89 100644
Binary files a/resources/graphics/robot_idle/down/robot0020.png and b/resources/graphics/robot_idle/down/robot0020.png differ
diff --git a/resources/graphics/robot_idle/down/robot0021.png b/resources/graphics/robot_idle/down/robot0021.png
index dbd4dde..7af760f 100644
Binary files a/resources/graphics/robot_idle/down/robot0021.png and b/resources/graphics/robot_idle/down/robot0021.png differ
diff --git a/resources/graphics/robot_idle/down/robot0022.png b/resources/graphics/robot_idle/down/robot0022.png
index 66464a6..2415b2f 100644
Binary files a/resources/graphics/robot_idle/down/robot0022.png and b/resources/graphics/robot_idle/down/robot0022.png differ
diff --git a/resources/graphics/robot_idle/down/robot0023.png b/resources/graphics/robot_idle/down/robot0023.png
index a41203c..45602a9 100644
Binary files a/resources/graphics/robot_idle/down/robot0023.png and b/resources/graphics/robot_idle/down/robot0023.png differ
diff --git a/resources/graphics/robot_idle/down/robot0024.png b/resources/graphics/robot_idle/down/robot0024.png
index f781682..bbb0cde 100644
Binary files a/resources/graphics/robot_idle/down/robot0024.png and b/resources/graphics/robot_idle/down/robot0024.png differ
diff --git a/resources/graphics/robot_idle/down/robot0025.png b/resources/graphics/robot_idle/down/robot0025.png
index 665ea4b..ef3d526 100644
Binary files a/resources/graphics/robot_idle/down/robot0025.png and b/resources/graphics/robot_idle/down/robot0025.png differ
diff --git a/resources/graphics/robot_idle/down/robot0026.png b/resources/graphics/robot_idle/down/robot0026.png
index 8329471..7d3d3fc 100644
Binary files a/resources/graphics/robot_idle/down/robot0026.png and b/resources/graphics/robot_idle/down/robot0026.png differ
diff --git a/resources/graphics/robot_idle/down/robot0027.png b/resources/graphics/robot_idle/down/robot0027.png
index 04a724c..ef3a3a0 100644
Binary files a/resources/graphics/robot_idle/down/robot0027.png and b/resources/graphics/robot_idle/down/robot0027.png differ
diff --git a/resources/graphics/robot_idle/down/robot0028.png b/resources/graphics/robot_idle/down/robot0028.png
index 42ec83e..cd90d69 100644
Binary files a/resources/graphics/robot_idle/down/robot0028.png and b/resources/graphics/robot_idle/down/robot0028.png differ
diff --git a/resources/graphics/robot_idle/right/robot0004.png b/resources/graphics/robot_idle/right/robot0004.png
index 7fc821b..422ddeb 100644
Binary files a/resources/graphics/robot_idle/right/robot0004.png and b/resources/graphics/robot_idle/right/robot0004.png differ
diff --git a/resources/graphics/robot_idle/right/robot0005.png b/resources/graphics/robot_idle/right/robot0005.png
index 676d2b3..cf4f712 100644
Binary files a/resources/graphics/robot_idle/right/robot0005.png and b/resources/graphics/robot_idle/right/robot0005.png differ
diff --git a/resources/graphics/robot_idle/right/robot0006.png b/resources/graphics/robot_idle/right/robot0006.png
index 38bac1e..a6a23ee 100644
Binary files a/resources/graphics/robot_idle/right/robot0006.png and b/resources/graphics/robot_idle/right/robot0006.png differ
diff --git a/resources/graphics/robot_idle/right/robot0007.png b/resources/graphics/robot_idle/right/robot0007.png
index fa2cb02..61e334d 100644
Binary files a/resources/graphics/robot_idle/right/robot0007.png and b/resources/graphics/robot_idle/right/robot0007.png differ
diff --git a/resources/graphics/robot_idle/right/robot0008.png b/resources/graphics/robot_idle/right/robot0008.png
index d694349..451ec8e 100644
Binary files a/resources/graphics/robot_idle/right/robot0008.png and b/resources/graphics/robot_idle/right/robot0008.png differ
diff --git a/resources/graphics/robot_idle/right/robot0009.png b/resources/graphics/robot_idle/right/robot0009.png
index 46b80f1..5238e83 100644
Binary files a/resources/graphics/robot_idle/right/robot0009.png and b/resources/graphics/robot_idle/right/robot0009.png differ
diff --git a/resources/graphics/robot_idle/right/robot0010.png b/resources/graphics/robot_idle/right/robot0010.png
index f392b73..b44b143 100644
Binary files a/resources/graphics/robot_idle/right/robot0010.png and b/resources/graphics/robot_idle/right/robot0010.png differ
diff --git a/resources/graphics/robot_idle/right/robot0011.png b/resources/graphics/robot_idle/right/robot0011.png
index 02bb485..2172010 100644
Binary files a/resources/graphics/robot_idle/right/robot0011.png and b/resources/graphics/robot_idle/right/robot0011.png differ
diff --git a/resources/graphics/robot_idle/right/robot0012.png b/resources/graphics/robot_idle/right/robot0012.png
index 5502260..95cc5d8 100644
Binary files a/resources/graphics/robot_idle/right/robot0012.png and b/resources/graphics/robot_idle/right/robot0012.png differ
diff --git a/resources/graphics/robot_idle/right/robot0013.png b/resources/graphics/robot_idle/right/robot0013.png
index ad14285..40a38fb 100644
Binary files a/resources/graphics/robot_idle/right/robot0013.png and b/resources/graphics/robot_idle/right/robot0013.png differ
diff --git a/resources/graphics/robot_idle/right/robot0014.png b/resources/graphics/robot_idle/right/robot0014.png
index 0eb885e..d92f7f7 100644
Binary files a/resources/graphics/robot_idle/right/robot0014.png and b/resources/graphics/robot_idle/right/robot0014.png differ
diff --git a/resources/graphics/robot_idle/right/robot0015.png b/resources/graphics/robot_idle/right/robot0015.png
index 52f2681..4e4a9e1 100644
Binary files a/resources/graphics/robot_idle/right/robot0015.png and b/resources/graphics/robot_idle/right/robot0015.png differ
diff --git a/resources/graphics/robot_idle/right/robot0016.png b/resources/graphics/robot_idle/right/robot0016.png
index 32e012f..57f5233 100644
Binary files a/resources/graphics/robot_idle/right/robot0016.png and b/resources/graphics/robot_idle/right/robot0016.png differ
diff --git a/resources/graphics/robot_idle/right/robot0017.png b/resources/graphics/robot_idle/right/robot0017.png
index 35e91e8..21b3ed8 100644
Binary files a/resources/graphics/robot_idle/right/robot0017.png and b/resources/graphics/robot_idle/right/robot0017.png differ
diff --git a/resources/graphics/robot_idle/right/robot0018.png b/resources/graphics/robot_idle/right/robot0018.png
index 156e797..fdfa630 100644
Binary files a/resources/graphics/robot_idle/right/robot0018.png and b/resources/graphics/robot_idle/right/robot0018.png differ
diff --git a/resources/graphics/robot_idle/right/robot0019.png b/resources/graphics/robot_idle/right/robot0019.png
index bebef7b..35a9d55 100644
Binary files a/resources/graphics/robot_idle/right/robot0019.png and b/resources/graphics/robot_idle/right/robot0019.png differ
diff --git a/resources/graphics/robot_idle/right/robot0020.png b/resources/graphics/robot_idle/right/robot0020.png
index 0434fee..1cc2623 100644
Binary files a/resources/graphics/robot_idle/right/robot0020.png and b/resources/graphics/robot_idle/right/robot0020.png differ
diff --git a/resources/graphics/robot_idle/right/robot0021.png b/resources/graphics/robot_idle/right/robot0021.png
index fa9d247..eeaa096 100644
Binary files a/resources/graphics/robot_idle/right/robot0021.png and b/resources/graphics/robot_idle/right/robot0021.png differ
diff --git a/resources/graphics/robot_idle/right/robot0022.png b/resources/graphics/robot_idle/right/robot0022.png
index cb3007d..ab246df 100644
Binary files a/resources/graphics/robot_idle/right/robot0022.png and b/resources/graphics/robot_idle/right/robot0022.png differ
diff --git a/resources/graphics/robot_idle/right/robot0023.png b/resources/graphics/robot_idle/right/robot0023.png
index 6240dff..7ccf2cb 100644
Binary files a/resources/graphics/robot_idle/right/robot0023.png and b/resources/graphics/robot_idle/right/robot0023.png differ
diff --git a/resources/graphics/robot_idle/right/robot0024.png b/resources/graphics/robot_idle/right/robot0024.png
index be988b1..18c74f3 100644
Binary files a/resources/graphics/robot_idle/right/robot0024.png and b/resources/graphics/robot_idle/right/robot0024.png differ
diff --git a/resources/graphics/robot_idle/right/robot0025.png b/resources/graphics/robot_idle/right/robot0025.png
index 761edd5..67d1ac0 100644
Binary files a/resources/graphics/robot_idle/right/robot0025.png and b/resources/graphics/robot_idle/right/robot0025.png differ
diff --git a/resources/graphics/robot_idle/right/robot0026.png b/resources/graphics/robot_idle/right/robot0026.png
index 02a260f..4e850fe 100644
Binary files a/resources/graphics/robot_idle/right/robot0026.png and b/resources/graphics/robot_idle/right/robot0026.png differ
diff --git a/resources/graphics/robot_idle/right/robot0027.png b/resources/graphics/robot_idle/right/robot0027.png
index 6fef17c..079dd21 100644
Binary files a/resources/graphics/robot_idle/right/robot0027.png and b/resources/graphics/robot_idle/right/robot0027.png differ
diff --git a/resources/graphics/robot_idle/right/robot0028.png b/resources/graphics/robot_idle/right/robot0028.png
index 55a06b3..e66bbed 100644
Binary files a/resources/graphics/robot_idle/right/robot0028.png and b/resources/graphics/robot_idle/right/robot0028.png differ
diff --git a/resources/graphics/robot_idle/up/robot0004.png b/resources/graphics/robot_idle/up/robot0004.png
index 4c40490..8a099fd 100644
Binary files a/resources/graphics/robot_idle/up/robot0004.png and b/resources/graphics/robot_idle/up/robot0004.png differ
diff --git a/resources/graphics/robot_idle/up/robot0005.png b/resources/graphics/robot_idle/up/robot0005.png
index 88b9502..e8e27a6 100644
Binary files a/resources/graphics/robot_idle/up/robot0005.png and b/resources/graphics/robot_idle/up/robot0005.png differ
diff --git a/resources/graphics/robot_idle/up/robot0006.png b/resources/graphics/robot_idle/up/robot0006.png
index e90ec10..f679e94 100644
Binary files a/resources/graphics/robot_idle/up/robot0006.png and b/resources/graphics/robot_idle/up/robot0006.png differ
diff --git a/resources/graphics/robot_idle/up/robot0007.png b/resources/graphics/robot_idle/up/robot0007.png
index fdecbbf..6454ca0 100644
Binary files a/resources/graphics/robot_idle/up/robot0007.png and b/resources/graphics/robot_idle/up/robot0007.png differ
diff --git a/resources/graphics/robot_idle/up/robot0008.png b/resources/graphics/robot_idle/up/robot0008.png
index 2c2cd04..0de801e 100644
Binary files a/resources/graphics/robot_idle/up/robot0008.png and b/resources/graphics/robot_idle/up/robot0008.png differ
diff --git a/resources/graphics/robot_idle/up/robot0009.png b/resources/graphics/robot_idle/up/robot0009.png
index 8ba49a7..ed4c300 100644
Binary files a/resources/graphics/robot_idle/up/robot0009.png and b/resources/graphics/robot_idle/up/robot0009.png differ
diff --git a/resources/graphics/robot_idle/up/robot0010.png b/resources/graphics/robot_idle/up/robot0010.png
index 75c0138..39c117a 100644
Binary files a/resources/graphics/robot_idle/up/robot0010.png and b/resources/graphics/robot_idle/up/robot0010.png differ
diff --git a/resources/graphics/robot_idle/up/robot0011.png b/resources/graphics/robot_idle/up/robot0011.png
index 7333097..d0f1046 100644
Binary files a/resources/graphics/robot_idle/up/robot0011.png and b/resources/graphics/robot_idle/up/robot0011.png differ
diff --git a/resources/graphics/robot_idle/up/robot0012.png b/resources/graphics/robot_idle/up/robot0012.png
index c341b4b..8f75faa 100644
Binary files a/resources/graphics/robot_idle/up/robot0012.png and b/resources/graphics/robot_idle/up/robot0012.png differ
diff --git a/resources/graphics/robot_idle/up/robot0013.png b/resources/graphics/robot_idle/up/robot0013.png
index 8c273b9..1f8cecc 100644
Binary files a/resources/graphics/robot_idle/up/robot0013.png and b/resources/graphics/robot_idle/up/robot0013.png differ
diff --git a/resources/graphics/robot_idle/up/robot0014.png b/resources/graphics/robot_idle/up/robot0014.png
index c435b7f..744eff9 100644
Binary files a/resources/graphics/robot_idle/up/robot0014.png and b/resources/graphics/robot_idle/up/robot0014.png differ
diff --git a/resources/graphics/robot_idle/up/robot0015.png b/resources/graphics/robot_idle/up/robot0015.png
index 028c44e..d2fe4f0 100644
Binary files a/resources/graphics/robot_idle/up/robot0015.png and b/resources/graphics/robot_idle/up/robot0015.png differ
diff --git a/resources/graphics/robot_idle/up/robot0016.png b/resources/graphics/robot_idle/up/robot0016.png
index de0f635..c7206ab 100644
Binary files a/resources/graphics/robot_idle/up/robot0016.png and b/resources/graphics/robot_idle/up/robot0016.png differ
diff --git a/resources/graphics/robot_idle/up/robot0017.png b/resources/graphics/robot_idle/up/robot0017.png
index 78e18e3..8ae3fda 100644
Binary files a/resources/graphics/robot_idle/up/robot0017.png and b/resources/graphics/robot_idle/up/robot0017.png differ
diff --git a/resources/graphics/robot_idle/up/robot0018.png b/resources/graphics/robot_idle/up/robot0018.png
index 361c9ea..2fb4836 100644
Binary files a/resources/graphics/robot_idle/up/robot0018.png and b/resources/graphics/robot_idle/up/robot0018.png differ
diff --git a/resources/graphics/robot_idle/up/robot0019.png b/resources/graphics/robot_idle/up/robot0019.png
index f00af9e..43999e8 100644
Binary files a/resources/graphics/robot_idle/up/robot0019.png and b/resources/graphics/robot_idle/up/robot0019.png differ
diff --git a/resources/graphics/robot_idle/up/robot0020.png b/resources/graphics/robot_idle/up/robot0020.png
index e4578b2..dc0b552 100644
Binary files a/resources/graphics/robot_idle/up/robot0020.png and b/resources/graphics/robot_idle/up/robot0020.png differ
diff --git a/resources/graphics/robot_idle/up/robot0021.png b/resources/graphics/robot_idle/up/robot0021.png
index 844eca4..5eef14c 100644
Binary files a/resources/graphics/robot_idle/up/robot0021.png and b/resources/graphics/robot_idle/up/robot0021.png differ
diff --git a/resources/graphics/robot_idle/up/robot0022.png b/resources/graphics/robot_idle/up/robot0022.png
index 3d5cb5b..eb4ca00 100644
Binary files a/resources/graphics/robot_idle/up/robot0022.png and b/resources/graphics/robot_idle/up/robot0022.png differ
diff --git a/resources/graphics/robot_idle/up/robot0023.png b/resources/graphics/robot_idle/up/robot0023.png
index fe2ff27..075b7d5 100644
Binary files a/resources/graphics/robot_idle/up/robot0023.png and b/resources/graphics/robot_idle/up/robot0023.png differ
diff --git a/resources/graphics/robot_idle/up/robot0024.png b/resources/graphics/robot_idle/up/robot0024.png
index 40e03e4..36456f8 100644
Binary files a/resources/graphics/robot_idle/up/robot0024.png and b/resources/graphics/robot_idle/up/robot0024.png differ
diff --git a/resources/graphics/robot_idle/up/robot0025.png b/resources/graphics/robot_idle/up/robot0025.png
index 78b8573..2028487 100644
Binary files a/resources/graphics/robot_idle/up/robot0025.png and b/resources/graphics/robot_idle/up/robot0025.png differ
diff --git a/resources/graphics/robot_idle/up/robot0026.png b/resources/graphics/robot_idle/up/robot0026.png
index f7d370e..66b0d1f 100644
Binary files a/resources/graphics/robot_idle/up/robot0026.png and b/resources/graphics/robot_idle/up/robot0026.png differ
diff --git a/resources/graphics/robot_idle/up/robot0027.png b/resources/graphics/robot_idle/up/robot0027.png
index 9e46114..edf7da1 100644
Binary files a/resources/graphics/robot_idle/up/robot0027.png and b/resources/graphics/robot_idle/up/robot0027.png differ
diff --git a/resources/graphics/robot_idle/up/robot0028.png b/resources/graphics/robot_idle/up/robot0028.png
index 690ab47..a120a23 100644
Binary files a/resources/graphics/robot_idle/up/robot0028.png and b/resources/graphics/robot_idle/up/robot0028.png differ
diff --git a/resources/graphics/tiles/ground1.png b/resources/graphics/tiles/ground1.png
index 091c134..756800b 100644
Binary files a/resources/graphics/tiles/ground1.png and b/resources/graphics/tiles/ground1.png differ
diff --git a/robotgame/logic/colourboxes.py b/robotgame/logic/colourboxes.py
new file mode 100644
index 0000000..e4d1fd7
--- /dev/null
+++ b/robotgame/logic/colourboxes.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# This file is part of ROBOTGAME
+#
+# ROBOTGAME is free software: you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation, either version 3 of the License, or (at your option) any later
+# version.
+#
+# ROBOTGAME is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# ROBOTGAME. If not, see .
+#
+# ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
+#
+# colourboxes.py
+# --------------------
+# date created : Wed Aug 8 2012
+# copyright : (C) 2012 Niels G. W. Serup
+# maintained by : Niels G. W. Serup
+
+import random
+
+def generate_colour_boxes(nwells, nboxes):
+ """
+ Generate colour boxes that can be used to make all wells white.
+
+ Arguments:
+ nwells -- number of wells
+ nboxes -- maximum number of boxes needed to make all wells white.
+
+ Return [[(r, g, b)]]
+ where r : 0|1, g : 0|1, b : 0|1
+ """
+
+ nbits = nwells * 3
+ data = [[0 for _ in range(nboxes)] for _ in range(nbits)]
+
+ def insert_1():
+ t = random.randrange(0, nboxes)
+ for y in range(t, nboxes) + range(0, t):
+ if data[x][y] == 0:
+ data[x][y] = 1
+ break
+
+ for x in range(len(data)):
+ insert_1()
+ for _ in range(random.randrange(0, (nboxes + 1) / 2)):
+ insert_1()
+ insert_1()
+
+ boxes = []
+ for y in range(nboxes):
+ box = []
+ boxes.append(box)
+ for x in range(0, nbits, 3):
+ r = data[x][y]
+ g = data[x + 1][y]
+ b = data[x + 2][y]
+ box.append((r, g, b))
+ return boxes
+
+def generate_random_box(nwells):
+ r = lambda: random.choice((0, 1))
+ return [(r(), r(), r()) for _ in range(nwells)]
+
+def makes_all_wells_white(boxes):
+ """
+ Determine if the boxes make all wells white when XOR'ed together.
+ """
+
+ total = 0
+ for box in boxes:
+ n = 0
+ for r, g, b in box:
+ n <<= 1
+ n |= r
+ n <<= 1
+ n |= g
+ n <<= 1
+ n |= b
+ total ^= n
+ return total == 2**(len(boxes[0]) * 3) - 1
diff --git a/robotgame/logic/rollingstone.py b/robotgame/logic/rollingstone.py
index 35f2859..77d119e 100644
--- a/robotgame/logic/rollingstone.py
+++ b/robotgame/logic/rollingstone.py
@@ -129,7 +129,7 @@ def generate_simple_playfield(width, height, nturns, nstones):
turns.append(((x1, y1), None))
x, y = x1, y1
turns.append(((width - 1, height - 1), None))
-
+
if do_transpose:
turns[:] = [((y, x), {
Down: Right,
diff --git a/tests/colourboxes_tests.py b/tests/colourboxes_tests.py
new file mode 100644
index 0000000..fa621c6
--- /dev/null
+++ b/tests/colourboxes_tests.py
@@ -0,0 +1,20 @@
+
+from __future__ import print_function
+import unittest
+from robotgame.logic.colourboxes import *
+
+
+class ColourboxesTest(unittest.TestCase):
+ def test_generation(self):
+ for args in ((1, 1),
+ (2, 2),
+ (3, 3),
+ (4, 6)):
+ boxes = generate_colour_boxes(*args)
+ print()
+ for box in boxes:
+ print(box)
+ self.assertTrue(makes_all_wells_white(boxes))
+
+if __name__ == '__main__':
+ unittest.main()