首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言實戰:遊戲關卡中玩家與怪物的戰鬥模擬與協作計算

     編輯:程式設計綜合問答

問題描述

遊戲關卡由老怪 Q 守衛,攻擊力 a、血量 b、每回合回血 c。玩家 P 攻擊力 d、血量 e、每回合回血 f。判斷 P 能否單獨擊敗 Q;若不能,需多少個 P 協作才能獲勝。

解題思路

假設雙方攻擊力與回血量固定,模擬回合制戰鬥:

  1. 玩家先攻擊,怪物血量減少 d;若怪物血量 ≤ 0,玩家獲勝。
  2. 怪物反擊,玩家血量減少 a;若玩家血量 ≤ 0,怪物獲勝。
  3. 雙方各自回血(不超過初始血量上限)。
  4. 循環直到一方血量歸零。

參考程式碼 (Java)

public static String fight(int a, int b, int c, int d, int e, int f) {
    int lifeQ = b, lifeP = e;
    while (true) {
        // 玩家攻擊
        lifeQ -= d;
        if (lifeQ <= 0) return "P success";
        // 怪物回血
        if (b > lifeQ) lifeQ = Math.min(lifeQ + c, b);

        // 怪物反擊
        lifeP -= a;
        if (lifeP <= 0) return "Q success";
        // 玩家回血
        if (e > lifeP) lifeP = Math.min(lifeP + f, e);
    }
}

協作判斷

若單人無法獲勝,可引入多玩家協作模型:每回合總傷害 = n × d,總血量 = n × e(或共享血池),重新模擬或用數學公式推導最小 n。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved