我是一名C ++学生,他以我所掌握的有限知识(今天才刚刚学习课程)来制作RPG游戏,并且我已经掌握了大部分细节。不过,一件事情一直让我发痒,这是事实,当我让自己的团队改变党员的健康价值观时,这个数字经常会变成负面的数字。基本的减法应该是使我发疯的一团糟!
某些上下文:“玩家”是进行攻击的人,而“玩家”是进行攻击的人。这些也可以治愈。
预期结果:player2.health-= player.att1.damage-player2.armor
如果player2.health = 15,player.att1.damage = 3,player2.health应该为12
相反,它可以达到-858993450 HP的新低点
代码:
void pvp(Party &player, Party &player2) {
int select, flinch = 2;
if (player.effect.flinch)
flinch = rand() % 2;
moveshow(player);
cin >> select;
switch (select) {
case 1: {
srand(time(NULL));
string re;
int t = rand() % 100 + 1;
int r = rand() % player.att1.hitcount + 1;
if (r == 1)
re = " time";
else
re = " times";
if (t < (player.att1.accuracy - player.att1.blindness + player.att1.deadeye) & flinch != 1) {
if (player.att1.damage < 0) {
cout << player.name << player.att1.action << player2.name << r << re << ", healing " << abs(player.att1.damage * r) << " health.\n";
}
else if (player.att1.damage == 0) {
cout << player.name << player.att1.action << player2.name << r << re << endl;
}
else
cout << player.name << player.att1.action << player2.name << r << re << ", dealing " << player.att1.damage * r << " damage.\n";
player2.health -= (player.att1.damage * r) - player2.armor;
cout << player2.name << ": " << player2.health << " HP\n";
pvpinflict(player, player2, select);
player.att1.pp--;
}
else if (flinch == 1)
cout << player.name << " flinched and couldn't move!\n";
else {
cout << player.name << " missed!\n";
player.att1.pp--;
}
break;
}
case 2: {
srand(time(NULL));
string re;
int t = rand() % 100 + 1;
int r = rand() % player.att2.hitcount + 1;
if (r == 1)
re = " time";
else
re = " times";
if (t < (player.att2.accuracy - player.att2.blindness + player.att2.deadeye) & flinch != 1) {
if (player.att2.damage < 0) {
cout << player.name << player.att2.action << player2.name << r << re << ", healing " << abs(player.att2.damage * r) << " health.\n";
}
else if (player.att2.damage == 0) {
cout << player.name << player.att2.action << player2.name << r << re << endl;
}
else
cout << player.name << player.att2.action << player2.name << r << re << ", dealing " << player.att2.damage * r << " damage.\n";
player2.health -= (player.att2.damage * r) - player2.armor;
cout << player2.name << ": " << player2.health << " HP\n";
pvpinflict(player, player2, select);
player.att2.pp--;
}
else if (flinch == 1)
cout << player.name << " flinched and couldn't move!\n";
else {
cout << player.name << " missed!\n";
player.att2.pp--;
}
break;
}
case 3: {
srand(time(NULL));
string re;
int t = rand() % 100 + 1;
int r = rand() % player.att3.hitcount + 1;
if (r == 1)
re = " time";
else
re = " times";
if (t < (player.att3.accuracy - player.att3.blindness + player.att3.deadeye) & flinch != 1) {
if (player.att3.damage < 0) {
cout << player.name << player.att3.action << player2.name << r << re << ", healing " << abs(player.att3.damage * r) << " health.\n";
}
else if (player.att3.damage == 0) {
cout << player.name << player.att3.action << player2.name << r << re << endl;
}
else
cout << player.name << player.att3.action << player2.name << r << re << ", dealing " << player.att3.damage * r << " damage.\n";
player2.health -= (player.att3.damage * r) - player2.armor;
cout << player2.name << ": " << player2.health << " HP\n";
pvpinflict(player, player2, select);
player.att3.pp--;
}
else if (flinch == 1)
cout << player.name << " flinched and couldn't move!\n";
else {
cout << player.name << " missed!\n";
player.att3.pp--;
}
break;
}
}
}```