티스토리 뷰

C++

20160516_콘솔 전투게임 만들기

cho22 2016. 5. 19. 02:08
반응형

콘솔을 이용한 간단한 전투게임을 만들자.

캐릭터와 스킬은 구조체를 이용해 구현하고, 공격은 함수를 이용해 구현해보자.

 

먼저 스킬의 이름, 최저 대미지, 최대 대미지를 가진 skill 구조체를 만든다.

struct stSkill {

char* name;

int minDam;

int maxDam;

}

 

캐릭터의 이름, 현재hp, 최대 hp, 스킬3개를 가진 캐릭터 구조체를 만든다. (mp는 hp와 같은 방법으로 만들면 된다.)

stuct stCharacter {

char* name;

int hp;

int maxHp;

 

stSkill skill1;

stSkill skill2;

stSkill skill3;

}



메인함수에서 캐릭터 hero 와 enemy를 만든다. 

구조체는 일반 변수를 우리가 직접 만든것이라고 생각하면 쉽다. 변수 안에 각각 name, hp 등을 가지고 있고, 변수에 접근하기위해 . 을 사용한다고 생각하면 된다. 

stCharacter hero;    // hero구조체를 만들었다.

stCahracter enemy; // enemy 구조체를 만들었다. 


두 캐릭터를 만들었으니 각각 name hp 등등을 설정해주자. (hero와 같은 방법으로 enemy도 초기화 해준다. )

hero.name = "영웅";

hero.hp = 1000;

hero.maxHp = 1000;

hero.skill1.name = "스킬1";

hero.skill1.minDam = 100;

hero.skill1.maxDam = 200;

hero.skill2.name = "스킬2";

hero.skill2.minDam = 200;

hero.skill2.maxDam = 300;

hero.skill3.name = "스킬3";

hero.skill3.minDam = 300;

hero.skill3.maxDam = 400;


두개의 캐릭터가 생성되었으니 서로 싸우기 시작하면 된다. 

스킬3개 중 하나를 선택하도록 선택지를 출력해 주고, cin을 이용해 입력받는다.

입력받은 스킬의 최소 ~ 최대 대미지 사이의 값을 적의 hp에서 빼주고, 적의 공격 또한 같은 방법으로 만들어준다.

cout << "skill1 : " <<hero.skill1. name << endl;

cout << "skill2 : " <<hero.skill2. name << endl;

cout << "skill3 : " <<hero.skill3. name << endl;

 

cin >> input;

 

if(input == 1)

damage = hero.skill1.minDam + rand() % (hero.skill1.minDam - hero.skill1.maxDam);

 

else if(input == 2)

damage = hero.skill2.minDam + rand() % (hero.skill2.minDam - hero.skill2.maxDam);

 

else if(input == 3)

damage = hero.skill3.minDam + rand() % (hero.skill3.minDam - hero.skill3.maxDam);

enemy.hp -= damage;

cout << hero.name << "이 " << enemy.name << "에게 " << damage << "의 대미지를 입혔습니다..." << endl; 

 

같은 방법으로 enymy의 공격 또한 만들어주면 간단한 콘솔 게임이 완성된다.

반응형

'C++' 카테고리의 다른 글

20160518_클래스와 객체지향(1)  (0) 2016.05.22
20160517_포인터로 별찍기  (0) 2016.05.22
20160513_포인터와 함수  (0) 2016.05.17
20160512_포인터  (0) 2016.05.17
20160511_빙고게임만들기  (3) 2016.05.12
댓글