for i in range(max(0, px -1), min(5, px + 2)):
locations_to_rotate.append((i, py - 1))
- if px > 0:
- locations_to_rotate.append((px - 1, py))
-
if px < 4:
locations_to_rotate.append((px + 1, py))
if py < 4:
- for i in range(max(0, px -1), min(5, px + 2)):
+ for i in reversed(range(max(0, px -1), min(5, px + 2))):
locations_to_rotate.append((i, py + 1))
- if direction == ROTATION.CLOCKWISE:
- new_positions = locations_to_rotate[1:] + locations_to_rotate[0]
- elif direction == ROTATION.ANTICLOCKWISE:
- new_positions = locations_to_rotate[-1] + locations_to_rotate[:-1]
+ if px > 0:
+ locations_to_rotate.append((px - 1, py))
+
+ if ROTATION[direction] == ROTATION.CLOCKWISE:
+ new_positions = locations_to_rotate[1:] + [locations_to_rotate[0]]
+ elif ROTATION[direction] == ROTATION.ANTICLOCKWISE:
+ new_positions = [locations_to_rotate[-1]] + locations_to_rotate[:-1]
for old, new in zip(locations_to_rotate, new_positions):
rotated_locations[old] = self.board_locations[new]
(0, 2): '12', (1, 2): '32', (3, 2): '42', (4, 2): '02',
}))
- def test_allow_chess_move_knight(self):
+ def test_rotate_locations_clockwise(self):
board = GameBoard.new_game([{'actions': []}])
board.board_locations = self.generate_locations()
+ board.rotate_locations('CLOCKWISE')
+ self.assertEqual(board.board_locations, self.generate_locations({
+ (1, 1): '21', (2, 1): '31', (3, 1): '32',
+ (1, 2): '11', (3, 2): '33',
+ (1, 3): '12', (2, 3): '13', (3, 3): '23',
+ }))
+
+ def test_rotate_locations_clockwise_top(self):
+ board = GameBoard.new_game([{'actions': []}], initial_pos=(2, 0))
+ board.board_locations = self.generate_locations()
+ board.rotate_locations('CLOCKWISE')
+ self.assertEqual(board.board_locations, self.generate_locations({
+ (1, 0): '30', (3, 0): '31',
+ (1, 1): '10', (2, 1): '11', (3, 1): '21',
+ }))
+
+ def test_rotate_locations_clockwise_right(self):
+ board = GameBoard.new_game([{'actions': []}], initial_pos=(0, 2))
+ board.board_locations = self.generate_locations()
+ board.rotate_locations('CLOCKWISE')
+ self.assertEqual(board.board_locations, self.generate_locations({
+ (0, 1): '11', (1, 1): '12',
+ (1, 2): '13',
+ (0, 3): '01', (1, 3): '03',
+ }))
+
+ def test_rotate_locations_clockwise_corner(self):
+ board = GameBoard.new_game([{'actions': []}], initial_pos=(0, 4))
+ board.board_locations = self.generate_locations()
+ board.rotate_locations('CLOCKWISE')
+ self.assertEqual(board.board_locations, self.generate_locations({
+ (0, 3): '13', (1, 3): '14',
+ (1, 4): '03',
+ }))
+
+ def test_rotate_locations_anticlockwise(self):
+ board = GameBoard.new_game([{'actions': []}])
+ board.board_locations = self.generate_locations()
+ board.rotate_locations('ANTICLOCKWISE')
+ self.assertEqual(board.board_locations, self.generate_locations({
+ (1, 1): '12', (2, 1): '11', (3, 1): '21',
+ (1, 2): '13', (3, 2): '31',
+ (1, 3): '23', (2, 3): '33', (3, 3): '32',
+ }))
+
+ def test_allow_chess_move_knight(self):
+ board = GameBoard.new_game([{'actions': []}])
board.allow_chess_move(MOVES.KNIGHT)
self.assertEqual(board.player.movement_mode, MOVES.KNIGHT)
def test_allow_chess_move_bishop(self):
board = GameBoard.new_game([{'actions': []}])
- board.board_locations = self.generate_locations()
board.allow_chess_move(MOVES.BISHOP)
self.assertEqual(board.player.movement_mode, MOVES.BISHOP)
def test_allow_chess_move_castle(self):
board = GameBoard.new_game([{'actions': []}])
- board.board_locations = self.generate_locations()
board.allow_chess_move(MOVES.CASTLE)
self.assertEqual(board.player.movement_mode, MOVES.CASTLE)