오븐 노트

[C++] TextRPG #1 (포인터 X, 기초) 본문

Develop/C++

[C++] TextRPG #1 (포인터 X, 기초)

오 븐 2022. 6. 15. 07:44
#include <iostream>
using namespace std;

enum playerType
{
	PT_Knight = 1,
	PT_Archer = 2,
	PT_Mage = 3,
};

enum MonsterType
{
	MT_Slime = 1,
	MT_Orc = 2,
	MT_Skeleton = 3,
};

int playerType;
int hp;
int attack;
int defance;

int monsterType;
int monsterHp;
int monsterAttack;
int monsterDefence;

void EnterLobby();
void SelectPlayer();
void EnterField();
void CreateRandomMonster();

int main()
{
	// 랜덤 시드 설정
	srand(time(0));

	EnterLobby();

	return 0;
}

void EnterLobby()
{
	while (true)
	{
		cout << "--------------------" << endl;
		cout << "로비에 입장했습니다!" << endl;
		cout << "--------------------" << endl;

		//플레이어 직업 선택
		SelectPlayer();

		cout << "--------------------" << endl;
		cout << "(1) 필드 입장 (2) 게임 종료" << endl;
		cout << "--------------------" << endl;

		int input;
		cin >> input;

		if (input == 1)
		{
			EnterField();
		}
		else
		{
			return;
		}
	}
}

void SelectPlayer()
{
	while (true)
	{
		cout << "--------------------" << endl;
		cout << "직업을 골라주세요!" << endl;
		cout << "(1) 기사 (2) 궁수 (3) 법사" << endl;
		cout << "> ";

		cin >> playerType;

		if (playerType == PT_Knight)
		{
			cout << "기사 생성중... !" << endl;
			hp = 150;
			attack = 10;
			defance = 5;
			break;
		}
		else if (playerType == PT_Archer)
		{
			cout << "궁수 생성중... !" << endl;
			hp = 100;
			attack = 15;
			defance = 3;
			break;
		}
		else if (playerType == PT_Mage)
		{
			cout << "법사 생성중... !" << endl;
			hp = 80;
			attack = 25;
			defance = 0;
			break;
		}
	}
}

void EnterField()
{
	while (true)
	{

		cout << "--------------------" << endl;
		cout << "필드에 입장했습니다!" << endl;
		cout << "--------------------" << endl;

		cout << "[PLAYER] HP : " << hp << " / ATT : " << attack << " / DEF : " << defance << endl;

		CreateRandomMonster();
	}
}

void CreateRandomMonster()
{
	// 1~3
	monsterType = 1 + (rand() % 3);

	switch (monsterType)
	{
	case MT_Slime:
		cout << "슬라임 생성중...! (HP : 15 / ATT : 5 / DEF : 0)" << endl;
		monsterHp = 15;
		monsterAttack = 5;
		monsterDefence = 0;
		break;
	case MT_Orc:
		cout << "오크 생성중...! (HP : 40 / ATT : 10 / DEF : 3)" << endl;
		monsterHp = 40;
		monsterAttack = 10;
		monsterDefence = 3;
		break;
	case MT_Skeleton:
		cout << "스켈레톤 생성중...! (HP : 80 / ATT : 15 / DEF : 5)" << endl;
		monsterHp = 80;
		monsterAttack = 15;
		monsterDefence = 5;
		break;
	}
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

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

[C++] 포인터 기초 #1  (0) 2022.06.30
[C++] TextRPG #2 (구조체)  (0) 2022.06.28
[C++] 함수 마무리 (오버로딩, 기본 인자값, 스택 오버플로우)  (0) 2022.06.12
[C++] 함수 기초  (0) 2022.06.12
[C++] 열거형  (0) 2022.06.12