[C++] 멤버함수응용 : monster 사냥
2022. 6. 2. 19:21ㆍ코딩 1막 <C++개념편>/코딩 1막 <C++응용편>
728x90
1. <몬스터 구조체 멤버함수로 속성과 기능을 작성하고 몬스터를 잡아보기>
#include <iostream>
#include <string>
using namespace std;
// Monster의 구조체
// 모든 몬스터의 정보를 출력하는것은 적합하지 않다
// why? 멤버함수이기 때문이다.
struct Monster
{
// Monster의 속성
string name;
string dropItem;
int hp;
int atk;
int level;
void PrintInfo()
{
cout << "몬스터 이름 : " << name << endl;
cout << "레벨 : " << level << endl;
cout << "체력 : " << hp << endl;
cout << "공격력 : " << atk << endl;
}
void SetInfo(string _name, string _dropItem, int _hp, int _atk, int _level)
{
name = _name;
dropItem = _dropItem;
hp = _hp;
atk = _atk;
level = _level;
}
//Monster의 기능
void Attack()
{
cout << name << "이 " << atk << "의 공격력으로 공격한다" << endl;
}
void Hit(int damage)
{
hp -= damage;
cout << name << "에게 데미지 " << damage << "를 입혔다." << endl;
cout << name << "의 현재 체력은 " << hp << endl;
if (hp <= 0)
{
Die();
}
}
void Die()
{
cout << name << "은 죽었다." << endl;
DropItem();
}
void DropItem()
{
cout << dropItem << "을 떨어트렸다" << endl;
}
};
void main()
{
Monster dragon;
dragon.SetInfo("드래곤", "용의 보옥", 100, 50, 10);
Monster slime;
slime.SetInfo("슬라임", "점액", 10, 1, 1);
dragon.PrintInfo();
dragon.Attack();
dragon.Hit(10);
dragon.Hit(50);
dragon.Hit(50);
cout << endl;
slime.PrintInfo();
slime.Attack();
slime.Hit(5);
slime.Hit(3);
slime.Hit(2);
}
2. <플레이어 구조체를 추가하여 몬스터를 잡아보기>
#include <iostream>
#include <string>
using namespace std;
struct Monster
{
// Monster의 속성
string name;
string dropItem;
int hp;
int atk;
int level;
void PrintInfo()
{
cout << "몬스터 이름 : " << name << endl;
cout << "레벨 : " << level << endl;
cout << "체력 : " << hp << endl;
cout << "공격력 : " << atk << endl;
}
void SetInfo(string _name, string _dropItem, int _hp, int _atk, int _level)
{
name = _name;
dropItem = _dropItem;
hp = _hp;
atk = _atk;
level = _level;
}
//Monster의 기능
void Attack()
{
cout << name << "이 " << atk << "의 공격력으로 공격한다" << endl;
}
void Hit(int damage)
{
hp -= damage;
cout << name << "에게 데미지 " << damage << "를 입혔다." << endl;
cout << name << "의 현재 체력은 " << hp << endl;
if (hp <= 0)
{
Die();
}
}
void Die()
{
cout << name << "은 죽었다." << endl;
DropItem();
}
void DropItem()
{
cout << dropItem << "을 떨어트렸다" << endl;
}
};
// 실습_ 플레이어의 구조체에 적합한 속성과 기능을 작성하고, 몬스터와 상호작용 해보기
struct Player
{
// 플레이어의 속성
string name;
string dropItem;
int level;
int atk;
int hp;
void PlayerPrintInfo()
{
cout << "플레이어 이름 : " << name << endl;
cout << "레벨 : " << level << endl;
cout << "체력 : " << hp << endl;
cout << "공격력 : " << atk << endl;
}
void PlayerSetInfo(string newName, string newDropItem, int newHp, int newAtk, int newLevel)
{
name = newName;
dropItem = newDropItem;
hp = newHp;
atk = newAtk;
level = newLevel;
}
//플레이어의 기능
void Attack()
{
cout << name << "가 " << atk << "의 공격력으로 공격한다" << endl;
}
void Hit(int damage)
{
hp -= damage;
cout << name << "에게 데미지 " << damage << "를 입혔다." << endl;
cout << name << "의 현재 체력은 " << hp << endl;
if (hp <= 0)
{
Die();
}
}
void Die()
{
cout << name << "은 죽었다." << endl;
DropItem();
}
void DropItem()
{
cout << dropItem << "을 떨어트렸다" << endl;
}
};
void main()
{
Player player;
player.PlayerSetInfo("zl존전사", "50000메소", 100, 30, 7);
Monster dragon;
dragon.SetInfo("드래곤", "용의 보옥", 100, 50, 10);
player.PlayerPrintInfo();
cout << endl;
dragon.PrintInfo();
cout << endl << endl;
player.Attack();
dragon.Hit(20);
dragon.Attack();
player.Hit(40);
player.Attack();
dragon.Hit(10);
dragon.Attack();
player.Hit(30);
player.Attack();
dragon.Hit(30);
dragon.Attack();
player.Hit(30);
}
728x90
'코딩 1막 <C++개념편> > 코딩 1막 <C++응용편>' 카테고리의 다른 글
[C++] 가위바위보 게임 (0) | 2022.06.02 |
---|---|
[C++] 덧셈연산, 몬스터생성, 사칙연산계산기만들기 (0) | 2022.06.02 |
[C++] 외부함수들을 멤버함수로 변환하고 비교해보기(구조체) (0) | 2022.06.02 |
[C++] 특정한 값을 출력하는 구조체를 만들어보자 (0) | 2022.06.02 |
[C++] 구조체를 써서 축구팀을 만들어 보자 (0) | 2022.05.31 |