Не прибавляется опыт
Потихоньку изучаю C++, решил написать маленькую консольную мини-игру. Задался вопросом, не хочет увеличиваться опыт после боя, в чем дело?
#include <iostream>
#include <windows.h>
using namespace std;
class hero
{
public:
int hp;
int damage;
int exp;
int level;
int gold;
int swordDamage;
void levelBoost()
{
int expBoost = 100;
if (exp >= expBoost)
{
level++;
expBoost * 2;
hp * 1.125; damage * 1.125;
}
}
};
void dayNight()
{
int change = 1;
system("color E0");
if (change % 2 == 0)
{
system("color 1");
change = 1;
}
change++;
system("cls");
}
void battle(int damageCharacter, int swordDamageChrctr, int hpCharacter,
int damageEnemy,int swordDamageEnemy,int hpEnemy, int expCharacter, int expEnemy)
{
cout << "Бой начинается!" << endl;
while (hpCharacter >= 0 || hpEnemy >= 0)
{
string str;
if (hpCharacter <= 0)
{
cout << "Проигрыш" << endl;
break;
}
else if (hpEnemy <= 0)
{
cout << "Победа!" << endl;
expCharacter += 125;
break;
}
cout << "Наносим удар по врагу." << endl;
hpEnemy -= (damageCharacter + swordDamageChrctr) * (rand() % 3);
cout << "Удар нанесен." << hpEnemy << " " << hpCharacter << endl;
expCharacter += 2;
cin >> str;
// 1 - в корпус * 2, 2 - по рукам * 1, 3 - голова * 3
cout << "Враг наносит удар." << endl;
hpCharacter -= (damageEnemy + swordDamageEnemy) * (rand() % 3);
expEnemy += 2;
}
expCharacter += 100;
}
int main()
{
setlocale(LC_ALL, "Russian");
dayNight();
hero character = { 100, 10, 1, 1, 0, 5 };
hero enemy = { 50, 6, 0, 1, 0, 5 };
battle(character.damage, character.swordDamage, character.hp,
enemy.damage, enemy.swordDamage, enemy.hp, character.exp, enemy.exp);
//dayNight();
//character.exp += 100;
character.levelBoost();
cout << character.level << endl << character.exp << endl;
string str;
cin >> str;
return main();
}
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
По умолчанию параметры передаются в функции "по значению" - то есть копируются, и любые изменения копии не влияют на оригинал.
Чтобы это исправить, нужно передавать "по ссылке", вот так: int &expCharacter.