// 玩家
var Player = /** @class */ (function () {
    function Player(name) {
        this.name = name;
        this.hp = 5;
        this.power = 1;
        this.defense = 0;
        this.chargeCount = 0;
        this.reboundUsed = false;
    }
    Player.prototype.attack = function (target) {
        target.receiveDamage(this.power);
        console.log("".concat(this.name, "\u53D1\u52A8\u4E86\u653B\u51FB\uFF01"));
    };
    Player.prototype.charge = function () {
        this.chargeCount++;
        console.log("".concat(this.name, "\u5F00\u59CB\u84C4\u529B\uFF01"));
    };
    Player.prototype.defenseMove = function () {
        this.defense++;
        console.log("".concat(this.name, "\u91C7\u53D6\u4E86\u9632\u5FA1\u59FF\u6001\uFF01"));
    };
    Player.prototype.ultimateStrike = function (target) {
        if (this.chargeCount === 2) {
            target.receiveDamage(999); // 直接秒杀
            this.chargeCount = 0;
            console.log("".concat(this.name, "\u4F7F\u7528\u4E86\u7EC8\u6781\u5927\u62DB\uFF01").concat(target.name, "\u88AB\u51FB\u8D25\u4E86\uFF01"));
        }
        else if (this.chargeCount === 1) {
            target.receiveDamage(this.power * 2); // 大招伤害为攻击的双倍
            this.chargeCount = 0;
            console.log("".concat(this.name, "\u91CA\u653E\u4E86\u5927\u62DB\uFF01").concat(target.name, "\u53D7\u5230\u4E86").concat(this.power * 2, "\u70B9\u4F24\u5BB3\uFF01"));
        }
        else {
            console.log("".concat(this.name, "\u5C1A\u672A\u84C4\u529B\u8DB3\u591F\uFF0C\u65E0\u6CD5\u91CA\u653E\u5927\u62DB\uFF01"));
        }
    };
    Player.prototype.reboundMove = function () {
        if (this.reboundUsed) {
            console.log("".concat(this.name, "\u672C\u5C40\u5DF2\u7ECF\u4F7F\u7528\u8FC7\u53CD\u5F39\u4E86\uFF01"));
        }
        else {
            this.reboundUsed = true;
            console.log("".concat(this.name, "\u91CA\u653E\u4E86\u53CD\u5F39\u6280\u80FD\uFF01"));
        }
    };
    Player.prototype.receiveDamage = function (damage) {
        var actualDamage = Math.max(damage - this.defense, 0); // 考虑防御
        this.hp -= actualDamage;
        console.log("".concat(this.name, "\u53D7\u5230\u4E86").concat(actualDamage, "\u70B9\u4F24\u5BB3\uFF01"));
        if (this.hp <= 0) {
            console.log("".concat(this.name, "\u88AB\u51FB\u8D25\u4E86\uFF01"));
        }
    };
    return Player;
}());
// 游戏主逻辑
function playGame() {
    var player1 = new Player('玩家1');
    var player2 = new Player('玩家2');
    while (player1.hp > 0 && player2.hp > 0) {
        // 玩家1的回合
        console.log('\n===== 玩家1的回合 =====');
        player1.attack(player2);
        // 玩家2的回合
        console.log('\n===== 玩家2的回合 =====');
        player2.charge();
        // 玩家1的回合
        console.log('\n===== 玩家1的回合 =====');
        player1.defenseMove();
        // 玩家2的回合
        console.log('\n===== 玩家2的回合 =====');
        player2.ultimateStrike(player1);
        // 重置防御
        player1.defense = 0;
        player2.defense = 0;
        // 判断玩家1是否被击败
        if (player1.hp <= 0) {
            break;
        }
        // 玩家1的回合
        console.log('\n===== 玩家1的回合 =====');
        player1.charge();
        // 玩家2的回合
        console.log('\n===== 玩家2的回合 =====');
        player2.attack(player1);
        // 玩家1的回合
        console.log('\n===== 玩家1的回合 =====');
        player1.reboundMove();
        // 判断玩家2是否被击败
        if (player2.hp <= 0) {
            break;
        }
    }
}
// 运行游戏
playGame();
