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 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告