From 692a111f56f0e0edd19376e447b530ff4cb21521 Mon Sep 17 00:00:00 2001 From: Jeremy Thurgood Date: Mon, 12 May 2014 23:29:49 +0200 Subject: [PATCH] Only move if the flags allow. --- naja/player.py | 8 +++--- naja/tests/test_player.py | 51 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/naja/player.py b/naja/player.py index fa6e1e9..83c4124 100644 --- a/naja/player.py +++ b/naja/player.py @@ -75,19 +75,19 @@ class Player(object): # TODO: Something cleaner than this. x, y = self.position if direction == BITS.NORTH: - if y > 0: + if y > 0 and self.bits.check_bit(BITS.NORTH): self.position = (x, y - 1) return True elif direction == BITS.SOUTH: - if y < 4: + if y < 4 and self.bits.check_bit(BITS.SOUTH): self.position = (x, y + 1) return True elif direction == BITS.EAST: - if x < 4: + if x < 4 and self.bits.check_bit(BITS.EAST): self.position = (x + 1, y) return True elif direction == BITS.WEST: - if x > 0: + if x > 0 and self.bits.check_bit(BITS.WEST): self.position = (x - 1, y) return True diff --git a/naja/tests/test_player.py b/naja/tests/test_player.py index c748c72..9939f58 100644 --- a/naja/tests/test_player.py +++ b/naja/tests/test_player.py @@ -106,3 +106,54 @@ class TestPlayer(TestCase): 'bits': 0xaa, 'position': [1, 2], }) + + def test_move(self): + player = Player(0x0f, (2, 2)) + self.assertEqual(player.move(BITS.NORTH), True) + self.assertEqual(player.position, (2, 1)) + + player = Player(0x0f, (2, 2)) + self.assertEqual(player.move(BITS.SOUTH), True) + self.assertEqual(player.position, (2, 3)) + + player = Player(0x0f, (2, 2)) + self.assertEqual(player.move(BITS.WEST), True) + self.assertEqual(player.position, (1, 2)) + + player = Player(0x0f, (2, 2)) + self.assertEqual(player.move(BITS.EAST), True) + self.assertEqual(player.position, (3, 2)) + + def test_move_flags_clear(self): + player = Player(0x00, (2, 2)) + self.assertEqual(player.move(BITS.NORTH), False) + self.assertEqual(player.position, (2, 2)) + + player = Player(0x00, (2, 2)) + self.assertEqual(player.move(BITS.SOUTH), False) + self.assertEqual(player.position, (2, 2)) + + player = Player(0x00, (2, 2)) + self.assertEqual(player.move(BITS.WEST), False) + self.assertEqual(player.position, (2, 2)) + + player = Player(0x00, (2, 2)) + self.assertEqual(player.move(BITS.EAST), False) + self.assertEqual(player.position, (2, 2)) + + def test_move_flags_edges(self): + player = Player(0x0f, (2, 0)) + self.assertEqual(player.move(BITS.NORTH), False) + self.assertEqual(player.position, (2, 0)) + + player = Player(0x0f, (2, 4)) + self.assertEqual(player.move(BITS.SOUTH), False) + self.assertEqual(player.position, (2, 4)) + + player = Player(0x0f, (0, 2)) + self.assertEqual(player.move(BITS.WEST), False) + self.assertEqual(player.position, (0, 2)) + + player = Player(0x0f, (4, 2)) + self.assertEqual(player.move(BITS.EAST), False) + self.assertEqual(player.position, (4, 2)) -- 2.34.1