Save game.
[naja.git] / naja / gameboard.py
index 2cce169544823e843c86e82f2577c3a634f99e5e..bd4eb825c22e6f1bf1a7a686ee192eacf9474230 100644 (file)
@@ -66,24 +66,24 @@ class GameBoard(object):
             for definition in locations_definition]
 
     def export_board_locations(self):
-        return dict(
+        return sorted(
             (position, location.export())
             for position, location in self.board_locations.iteritems())
 
     @classmethod
     def import_board_locations(cls, board_locations_definition):
         return dict(
-            (position, LocationCard.import_location(definition))
-            for position, definition in board_locations_definition.iteritems())
+            (tuple(position), LocationCard.import_location(definition))
+            for position, definition in board_locations_definition)
 
     @classmethod
     def generate_board(cls, locations_definition):
-        board_locations = {}
+        board_locations = []
         for x in range(5):
             for y in range(5):
                 board_location = LocationCard.new_location(
                     choice(locations_definition).copy())
-                board_locations[(x, y)] = board_location.export()
+                board_locations.append([(x, y), board_location.export()])
         return board_locations
 
     def lose_health(self):
@@ -135,14 +135,14 @@ class GameBoard(object):
         rotated_locations = {}
 
         if py > 0:
-            for i in range(max(0, px -1), min(5, px + 2)):
+            for i in range(max(0, px - 1), min(5, px + 2)):
                 locations_to_rotate.append((i, py - 1))
 
         if px < 4:
             locations_to_rotate.append((px + 1, py))
 
         if py < 4:
-            for i in reversed(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 px > 0:
@@ -151,7 +151,8 @@ class GameBoard(object):
         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]
+            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]
@@ -223,7 +224,7 @@ class LocationCard(object):
 
     def export(self):
         return {
-            'bitwise_operand': self.bitwise_operand,
+            'bitwise_operand': sorted(self.bitwise_operand),
             'actions': [action.export() for action in self.actions],
         }