示例#1
0
    def from_json(cls, obj):
        board = cls()

        board.links = [tuple(link) for link in obj["links"]]
        board.remaining_bombs = obj["remaining_bombs"]
        board.game_over = obj["game_over"]
        board.max_turns = obj["max_turns"]
        board.current_turn = obj["current_turn"]

        board.num_factories = obj["num_factories"]
        board.min_dist = obj["min_dist"]
        board.max_dist = obj["max_dist"]
        board.stock_range_player = tuple(obj["stock_range_player"])
        board.stock_range_neutral = tuple(obj["stock_range_neutral"])
        board.max_turns = obj["max_turns"]

        board.factories = [Factory.from_json(fac) for fac in obj["factories"]]

        board.troops = []
        for troop_json in obj["troops"]:
            troop = Troop(
                troop_json["strength"],
                board.get_factory(troop_json["source"]),
                board.get_factory(troop_json["destination"]),
            )
            troop.active = troop_json["active"]
            troop.team = troop_json["team"]
            troop.distance = troop_json["distance"]
            troop.travelled = troop_json["travelled"]
            board.troops.append(troop)

        board.bombs = []
        for bomb_json in obj["bombs"]:
            bomb = Bomb(
                bomb_json["strength"],
                board.get_factory(bomb_json["source"]),
                board.get_factory(bomb_json["destination"]),
            )
            bomb.active = bomb_json["active"]
            bomb.team = bomb_json["team"]
            bomb.distance = bomb_json["distance"]
            bomb.travelled = bomb_json["travelled"]
            board.bombs.append(bomb)

        return board