コード例 #1
0
    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
コード例 #2
0
ファイル: Standard.py プロジェクト: RvonGlahn/BattleSnake
    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
コード例 #3
0
ファイル: test_board.py プロジェクト: RvonGlahn/BattleSnake
    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)
コード例 #4
0
ファイル: test_board.py プロジェクト: RvonGlahn/BattleSnake
    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}])