Я столкнулся с трудностями в своем коде на C++. Я начинающий. Например, только с очень базовыми знаниями C++. Итак, я действительно не могу понять, как это сделать. Я думал о создании RPG-игры с использованием команд C++ и близок к ее завершению. Но каким-то образом я не мог сделать постоянное здоровье для героя. Взглянув на код,Слишком много аргументов в C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
class player
{ public:
int health = 100;
};
int battle();
void death();
int main()
{
int abc;
player hero;
hero.health = abc;
int a;
int replay = 1;
cout << "You have 100 Hp. \n";
while (replay == 1)
{
srand(time(0));
cout << "\n Press 1 to move forward; 2 To stay. \n";
cin >> a;
if (a == 2)
{
if (rand() % 4 + 1 != 1)
{
cout << "You stay at your place. \n";
}
else
{
cout << "Enemy Attacks! (20 Hp) \n";
//battle(hero.health);
//cout << "\n Press 1 to continue. \n";
cout << "\n Do you want to play again? Press 1 to replay and 0 to quit.\n";
cin >> replay;
}
}
else if (a == 1)
{
if (rand() % 2 + 1 != 1)
{
cout << "You moved forward. No one around. \n";
}
else
{
cout << "You move forward. Enemy attacks! (20 Hp) \n";
battle(abc);
cout << "\n Do you want to play again? Press 1 to replay and 0 to quit.\n";
cin >> replay;
}
}
else
{
cout << "Sorry. Please enter a valid move. \n";
}
}
return 0;
}
int battle(int x)
{
player enemy;
enemy.health = 20;
player hero;
int y;
while (enemy.health >= 0)
{
int eattack = rand() % 15 + 7;
int attack = rand() % 10 + 1;
int escape = rand() % 4 + 1;
cout << "\n Press 1 to attack. 2 to flee \n";
cin >> y;
if (y == 2)
{
if (escape != 1)
{
cout << "Can't escape! \n";
cout << "Enemy attacked! Dealing a damage of: " << eattack << " Hp. \n";
hero.health = hero.health - eattack;
cout << "Your Hp is: " << hero.health;
}
else
{
goto Aftermath;
}
}
else if (y != 1)
{
cout << "Sorry. Please enter a valid response. \n";
}
else
{
cout << "You attack the enemy. \n";
cout << "You deal a damage of: " << attack;
enemy.health = enemy.health - attack;
if (enemy.health >= 0)
{
cout << "\n Enemy attacks you, dealing: " << eattack << " Hp damage.";
hero.health = hero.health - eattack;
cout << "\n You have: " << hero.health << " Hp left.";
}
}
if ((hero.health <= 0) || (hero.health == 0))
{
death();
enemy.health = -1;
}
}
if (hero.health > 0)
{
cout << "\n Enemy fainted!";
//cout << "You found Hp Potion! Your Hp was refilled.";
}
Aftermath:
if ((hero.health > 0) && (enemy.health > 0))
{
cout << "Escaped Successfully! \n";
}
return x;
}
void death()
{
cout << "You died!";
}
Как вы видите, я призвал battle(abc)
и battle(hero.health)
[который я комментировал сейчас], но проблема есть, она говорит, «Слишком много аргументов, чтобы функционировать int battle()
. Ранее, Я просто избегал параметров и создавал объект «герой» в самом боевом методе, но каждый раз, когда вы проходите боевую последовательность, он возвращается и снова заявляет об этом, тем самым делая свое здоровье. [Посмотрите на if (hero.health > 0)
]
I действительно не знаю о глобальных переменных и все такое. Я просто хочу знать, есть ли обходной путь или способ решить эту проблему параметров. Любые другие предложения t o иметь здоровье как «постоянное» и не декларироваться каждый раз, также тепло принимается. Спасибо огромное!
P.S. Предложения по сокращению кода также принимаются, но, пожалуйста, я новичок. Таким образом, передовые стратегии сейчас находятся вне моих навыков. Я занимаю время, чтобы понять концепции.
а не инициализированы. –