+ def rotate_locations(self, direction):
+ px, py = self.player.position
+ locations_to_rotate = []
+ rotated_locations = {}
+
+ if py > 0:
+ 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)):
+ 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]
+
+ for old, new in zip(locations_to_rotate, new_positions):
+ rotated_locations[old] = self.board_locations[new]
+
+ self.board_locations.update(rotated_locations)
+