1)在游戏开始时,用户可以选择一种类型的玩家(1,2,3)。
2)每种类型的球员从以下属性开始-
3)玩家1-最大生命值= 50,伤害= 10,治疗= 20。
4)玩家2-最大生命值= 75,伤害= 25,治疗= 10。
5)玩家3-最大生命值= 100,伤害= 75,治疗= 20。
6)一个玩家只能被治疗到最大生命值(忽略这一点,因为我还没有编码)
7)玩家出生后,游戏允许玩家受到伤害或按以下方式得到治疗
8)按D(伤害)或H(治疗)玩家
( 9)按D或H可以重复无限次,直到玩家的生命降到0以下
10)当玩家的生命值为0或低于0时,游戏就结束了!
11)现向用户提供以下选择-
12)按S键重新开始游戏
13)按E键结束节目
14)如果用户按下"S“键,则整个游戏再次开始,用户现在可以创建任意类型的新玩家(1、2、3)。
15)如果用户按下"E",整个程序就结束了!
问题:

1当退出work循环的条件满足时,它确实会退出while循环,但是在按下任何其他数字以生成玩家的“伤害”和“恢复”时,输出是空的。
#include <iostream>
using namespace std;
int input;
char input1;
bool gameOver;
class player
{
public:void p(int Health,int Damage,int Heal)
{
do
{
cout << "Player Health is" << Health;
cin >> input1;
switch(input1)
{
case 'd':
Health -= Damage;
break;
case 'h':
Health += Heal;
break;
}
if(Health == 0 || input1 == 's')
{
gameOver = true;
}
} while (gameOver == false);
}
}p1;
int main()
{
do{
//system("cls");
cin >> input;
if(input == 1)
{
p1.p(50,10,20);
}
if(input == 2)
{
player p2;
p2.p(75,25,10);
}
if(input == 3)
{
player p2;
p2.p(100,75,20);
}
} while (input != 5);
return 0;
}发布于 2020-01-27 11:25:16
当您启动下一个玩家游戏循环时,变量gameOver不会被重置为false。试着做这样的事情:
void p(int Health, int Damage, int Heal)
{
gameOver = false;
do
{
// game logic...
} while (gameOver == false)
}https://stackoverflow.com/questions/59929793
复制相似问题