C++程式:計算角色生命值


假設我們正在玩一個2D橫版卷軸遊戲。遊戲角色當前位於位置pos,生命值為h。當角色在遊戲中前進時,他獲得pos值的生命值,並且pos值在每一步都減少。每當角色遇到位於oh或ph位置的障礙物時,角色的生命值分別減少od或pd。只有當角色位於pos 0時,他才會停止移動。我們必須找出角色在位置pos = 0時的生命值h。

問題類別

程式設計中的各種問題可以透過不同的技術來解決。為了解決一個問題,我們首先必須設計一個演算法,為此,我們必須詳細研究特定問題。如果同一個問題反覆出現,可以使用遞迴方法;或者,我們也可以使用迭代結構。可以使用if-else和switch case等控制語句來控制程式中的邏輯流程。有效地使用變數和資料結構可以提供更簡單的解決方案以及輕量級、低記憶體需求的程式。我們必須檢視現有的程式設計技術,例如分治法、貪心演算法、動態規劃,並找出是否可以使用它們。這個問題可以透過一些基本的邏輯或暴力方法來解決。請遵循以下內容以更好地理解該方法。

因此,如果我們問題的輸入類似於pos = 6,h = 5,oh = 3,od = 3,ph = 3,pd = 4,則輸出將為15。

步驟

為了解決這個問題,我們將遵循以下步驟:

while h is not equal to -1, do:
   pos := pos + h
   if h is same as ph, then:
      pos := pos - oh
   if h is same as pd, then:
      pos := pos - od
   if pos < 0, then:
      pos := 0
   (decrease h by 1)
print(pos)

示例

讓我們看看下面的實現以更好地理解:

#include<bits/stdc++.h>
using namespace std;
void solve(int pos, int h, int oh, int od, int ph, int pd) {
   while(h != -1){
      pos = pos + h;
         if(h == ph)
            pos -= oh;
         if(h == pd)
            pos -= od;
         if(pos < 0)
            pos = 0;
         h--;
   }
   cout<< pos;
}
int main() {
   int pos = 6, h = 5, oh = 3, od = 3, ph = 3, pd = 4;
   solve(pos, h, oh, od, ph, pd);
   return 0;
}

輸入

6, 5, 3, 3, 3, 4

輸出

15

更新於:2022年4月7日

261 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.