self.wins_required = state['wins_required']
self.health = state['health']
self.wins = state['wins']
- self.locations = self.import_locations(state['locations'])
+ self.locations = [item.copy() for item in state['locations']]
self.player = player
self.board_locations = board_locations
'locations': locations_definition,
}
player = Player(initial_bits, initial_pos)
- board_locations = cls.generate_board(locations_definition)
+ board_locations = cls.import_board_locations(
+ cls.generate_board(locations_definition))
return cls(state, player, board_locations)
@classmethod
'health': self.health,
'wins_required': self.wins_required,
'wins': self.wins,
- 'locations': self.export_locations(),
+ 'locations': [item.copy() for item in self.locations],
'player': self.player.export(),
'board_locations': self.export_board_locations(),
}
- def export_locations(self):
- return [location.export() for location in self.locations]
-
@classmethod
def import_locations(cls, locations_definition):
return [
def export_board_locations(self):
return dict(
(position, location.export())
- for position, location in self.board_locations)
+ for position, location in self.board_locations.iteritems())
@classmethod
def import_board_locations(cls, board_locations_definition):
@classmethod
def generate_board(cls, locations_definition):
- # TODO: Choose some locations.
- return {}
+ 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()
+ return board_locations
def lose_health(self):
self.health -= 1
@classmethod
def import_location(cls, state):
- # TODO: Import real locations.
location_actions = [
cls.build_action(definition) for definition in state['actions']]
return cls(state['bitwise_operand'], location_actions)