작성
·
170
0
제가 전투방식을 간단하게 구현해봤는데
&를 매개변수로 넣을경우 같은 주소를 공유하여
함수를 벗어나도 그 값을 유지한다고 이해를 했는데
왜 제 코드는 값이 원래대로 초기화가 되었을까요..
혹 제가 이해를 잘못하여 코드를 잘못작성한걸까요?
void aet(const int &hp, const int &at)
{
int de = hp - at;
cout <<"전사는 몬스터에게 "<< de<<"의 데미지를 입었습니다." << endl;
de = hp;
}
struct At
{
string ne;
int hp;
int at;
};
int main()
{
At at;
at.ne = "전사";
at.hp = 80;
at.at = 20;
cout << "플레이어의 직업은 " << at.ne << " " << "HP:" << at.hp << " " << "공격력:" << at.at << endl;
At mt;
mt.ne = "몬스터";
mt.hp = 50;
mt.at = 10;
cout << mt.ne << "의 정보는 " << "HP:" << mt.hp << " " << "공격력:" << mt.at << endl;
aet(mt.hp, at.at);
cout << "****************************************************************************************" << endl;
cout <<"현재 "<< at.ne << " " << "HP:" << at.hp << " " << "공격력:" << at.at << endl;
cout << "현재 " << mt.ne << "의 정보는 " << "HP:" << mt.hp << " " << "공격력:" << mt.at << endl;
return 0;
}
이렇게 작성했습니다..
현재 플레이어의 정보와 몬스터의 정보를 띄어주고
플레이어가 공격하는 함수를 만들어
매개변수로 몬스터의hp,플레이어의 공격력을 넣어주었고
de라는 변수에 몬스터의hp - 플레이어의 at(공격력)을 넣고
de라는 값을 다시 hp에 넣어주려고 한건데
디버그를 봐도 함수에서 몬스터의hp - 플레이어의 at
되어 de의 값은 30이 잘 되었는데
그 다음 de = hp; 이 부분에서
de 50 , hp 50 으로 바뀌네요..
뭐가 문제일까요..
배운걸 토대로 구현해보는 연습해보는건 좋은 습관이신 것 같아요. 화이팅 !!!