def parse_snake(json): snake_id = json['id'] snake_name = json['name'] # kilab specific attribute snake_color = json['color'] if 'color' in json else None health = json['health'] body_json_list = json['body'] latency = json['latency'] if 'latency' in json else 0 # head = json['head'] # length = json['length'] shout = json['shout'] if 'shout' in json else "" squad = json['squad'] if 'squad' in json else "" body = Importer.parse_position_array(body_json_list) snake = Snake( snake_id=snake_id, snake_name=snake_name, snake_color=snake_color, health=health, body=body, latency=latency, shout=shout, squad=squad, ) if "elimination_event" in json: e = json["elimination_event"] if e is not None: event = EliminationEvent(EliminatedCause(e["cause"]), e["turn"], e["by"]) snake.elimination_event = event return snake
def create_initial_board_state(self, width: int, height: int, snake_ids: List[str]): board: BoardState = BoardState(width=width, height=height) for snake_id in snake_ids: board.add_snake(Snake(snake_id=snake_id)) self.place_snakes(board) self.place_food(board) return board
def test_clone(self): snake_a = Snake(snake_id="snake-a", body=[Position(x=3, y=3)]) snake_b = Snake(snake_id="snake-a", body=[Position(x=9, y=9)]) food_a = Food(x=1, y=2) snakes = [snake_a, snake_b] food = [food_a] board = BoardState(width=15, height=15, snakes=snakes, food=food) board_clone = board.clone() self.assertNotEqual(id(board), id(board_clone)) self.assertNotEqual(id(board.snakes[0]), id(board_clone.snakes[0])) self.assertNotEqual(id(board.food[0]), id(board_clone.food[0])) board_export = board.to_json() board_clone_export = board_clone.to_json() self.assertEqual(board_export, board_clone_export)
def test_to_json(self): snake_a = Snake(snake_id="snake-a", body=[Position(x=3, y=3)]) snake_b = Snake(snake_id="snake-a", body=[Position(x=9, y=9)]) food_a = Food(x=1, y=2) hazard_a = Hazard(x=4, y=1) snakes = [snake_a, snake_b] food = [food_a] hazards = [hazard_a] board = BoardState(width=15, height=20, snakes=snakes, food=food, hazards=hazards) json_data = board.to_json() self.assertEqual(json_data['width'], 15) self.assertEqual(json_data['height'], 20) self.assertListEqual(json_data['food'], [{'x': 1, 'y': 2}]) self.assertListEqual(json_data['hazards'], [{'x': 4, 'y': 1}])