私のC++コードには問題があります。私は初心者です。同様に、C++の非常に基本的な知識があるだけです。だから、私は本当にこれを行う方法を考え出すことができません。私はC++コマンドを使ってRPGゲームを作ることを考えていました。しかし何とか、私は英雄のための一定の健康を作ることができませんでした。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()
を機能させるにあまりにも多くの引数を述べています。以前は、私は単純にパラメータを避け、戦闘方法そのものにオブジェクト「ヒーロー」を作成しました。しかし、バトルシーケンスを終えるたびに、それが戻ってきて再び宣言して、健康補充を行います。
実際にはグローバル変数とそのすべてについて知りませんが、回避策があるかどうか、またはこのパラメータの問題を解決する方法があるかどうかを知りたいだけです。 o健康が「一定」であり、毎回宣言されず、温かく受け入れられます。どうもありがとうございます!
P.S.コードを短縮するための提案も受け入れますが、私は初心者です。だから先進的な戦略は今私のスキルを超えています。私は概念を理解するのに時間がかかります。
ABCが初期化されていません。 –