학습일지/C와 C++

C/C++ 상태창 구현<과제>

Tsukino Ren 2026. 3. 6. 00:17
// Main.cpp

#include <iostream>

using namespace std;

void setPotion(int count, int* p_HPPotion, int* p_MPPotin);

int HPPotion = 5;
int MPPotion = 5;

int main()
{
	int status[8] = { 0, };
	int Level = 1;
	status[4] = 10;
	status[5] = 10;
	status[6] = 10;
	status[7] = 10;

	cout << "HP/MP를 입력해 주세요" << endl;
	cin >> status[0];
	cin >> status[1];

	while (status[0] <= 50)
	{
		cout << "50 이하는 적용이 되지 않습니다. 다시 입력해주세요" << endl;
		cin >> status[0];
	}

	while (status[1] <= 50)
	{
		cout << "50이하는 적용이 되지 않습니다. 다시 입력해주세요" << endl;
		cin >> status[1];
	}

	cout << "ATK/DEF를 입력해 주세요" << endl;
	cin >> status[2];
	cin >> status[3];

	while (status[2] <= 0)
	{
		cout << "0보다 큰 수를 입력해 주세요" << endl;
		cin >> status[2];
	}

	while (status[3] <= 0)
	{
		cout << "0보다 큰 수를 입력해 주세요" << endl;
		cin >> status[3];
	}
	
	cout << "HP : " << status[0] << "\nMP : " << status[1] << endl;
	cout << "ATK : " << status[2] << "\nDEF : " << status[3] << endl;

	int player = 1;

	while (player != 0)
	{
		cout << endl;
		cout << "1.HP UP / 2.MP UP / 3.공격력 UP / 4.방어력 UP / 5.현재 능력치 / 6.Level Up / 7.포션 추가 / 0.나가기" << endl;
		cout << "번호를 선택해주세요 : " << endl;
		cout << endl;
		cin >> player;

		if (player < 0)
		{
			cout << endl;
			cout << "표시된 번호 이외의 것을 누르지 마세요" << endl;
			cout << endl;
		}
		else if (player > 7)
		{
			cout << endl;
			cout << "표시된 번호 이외의 것을 누르지 마세요" << endl;
			cout << endl;
		}
		else if (player == 1)
		{
			if (HPPotion > 0)
			{
				--HPPotion;
				status[0] += 20;
				cout << endl;
				cout << "포션을 1개 사용하여 HP가 20 증가되었습니다." << endl;
				cout << "\n현재 HP : " << status[0] << endl;
				cout << "남은 포션 수 : " << HPPotion << endl;
				cout << endl;
			}
			else
			{
				cout << endl;
				cout << "HP 포션이 없습니다." << endl;
				cout << endl;
			}
		}
		else if (player == 2)
		{
			if (MPPotion > 0)
			{
				--MPPotion;
				status[1] += 20;
				cout << endl;
				cout << "포션을 1개 사용하여 MP가 20 증가되었습니다" << endl;
				cout << "\n현재 MP : " << status[1] << endl;
				cout << "남은 포션 수 : " << MPPotion << endl;
				cout << endl;
			}
			else
			{
				cout << endl;
				cout << "MP 포션이 없습니다." << endl;
				cout << endl;
			}
		}
		else if (player == 3)
		{
			status[2] *= 2;
			cout << endl;
			cout << "ATK가 2배 상승합니다" << endl;
			cout << "현재 ATK : " << status[2] << endl;
			cout << endl;
		}
		else if (player == 4)
		{
			status[3] *= 2;
			cout << endl;
			cout << "DEF가 2배 상승합니다" << endl;
			cout << "현재 DEF : " << status[3] << endl;
			cout << endl;
		}
		else if (player == 5)
		{
			cout << endl;
			cout << "레벨 : " << Level << endl;
			cout << "HP : " << status[0] << endl;
			cout << "MP : " << status[1] << endl;
			cout << "ATK : " << status[2] << endl;
			cout << "DEF : " << status[3] << endl;
			cout << "STR : " << status[4] << endl;
			cout << "DEX : " << status[5] << endl;
			cout << "INT : " << status[6] << endl;
			cout << "LUK : " << status[7] << endl;
			cout << "HP/MP 포션 수 : " << HPPotion << "/" << MPPotion;
			cout << endl;
		}
		else if (player == 6)
		{
			++Level;
			status[0] += 5;
			status[1] += 5;
			status[2] += 5;
			status[3] += 5;
			status[4] += 5;
			status[5] += 5;
			status[6] += 5;
			status[7] += 5;
			setPotion(1, &HPPotion, &MPPotion);
			cout << endl;
			cout << "레벨이 올랏습니다.모든 능력치가 5 상승합니다." << endl;
			cout << "포션이 지급되었습니다." << endl;
			cout << "HP/MP 포션 개수 : " << HPPotion << "/" << MPPotion;
			cout << endl;
		}
		else if (player == 7)
		{
			setPotion(1, &HPPotion, &MPPotion);
			cout << endl;
			cout << "포션이 지급됩니다." << endl;
			cout << "HP/MP 포션 개수 : " << HPPotion << "/" << MPPotion;
			cout << endl;
		}
	}

	return 0;
}

void setPotion(int count, int* p_HPPotion, int* p_MPPotion)
{
	*p_HPPotion += count;
	*p_MPPotion += count;
}

 

 

2026-03-06 08:00 기준 추가사항

  • 배열을 추가하여 str, dex, int ,luk 를 추가하였습니다.
  • 레벨업 시 모든 능력치가 5씩 증가하게 하였습니다.

'학습일지 > C와 C++' 카테고리의 다른 글

C++ Console IO  (0) 2026.03.08
C/C++ 지금까지 배운 C 문법 활용해보기!  (0) 2026.03.06
C/C++ 함수  (0) 2026.03.05
C/C++ 배열  (0) 2026.03.05
C/C++ 반복문  (0) 2026.03.04