From: Jeremy Thurgood Date: Mon, 12 May 2014 21:29:49 +0000 (+0200) Subject: Only move if the flags allow. X-Git-Tag: 0.1~352 X-Git-Url: https://git.ctpug.org.za/?a=commitdiff_plain;ds=sidebyside;h=692a111f56f0e0edd19376e447b530ff4cb21521;hp=b28198fc51a256d3e1ac9d3f983aff05c6ace25a;p=naja.git Only move if the flags allow. --- 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))