콘솔 맵, 플레이어, 이동 게임 구현

나무에물주기·2022년 10월 21일
0

Coding Test

목록 보기
66/77
#include <iostream>
#include <conio.h> // 키보드 입력을 받아주는 라이브러리 선언

using namespace std;

// 커스텀 맵 생성
int Map[10][10] =
{
	{0,0,0,0,0,0,0,0,0,0},
	{0,1,1,1,1,1,1,1,1,0},
	{0,1,1,1,1,1,1,1,1,0},
	{0,1,1,1,1,1,0,1,1,0},
	{0,1,1,1,1,1,0,1,1,0},
	{0,1,1,1,0,1,1,1,1,0},
	{0,1,1,1,1,1,1,1,1,0},
	{0,1,0,0,0,0,1,1,1,0},
	{0,1,1,1,1,1,1,1,2,0},
	{0,0,0,0,0,0,0,0,0,0},
};

int keyCode = 0; // 키보드 입력을 받아줄 변수 생성
bool isRunning = true; // While 무한루프를 돌려줄 변수 생성

int X = 1; // 플레이어 X좌표
int Y = 1; // 플레이어 Y좌표

int StarX = 9; // Star X좌표
int StarY = 9; // Star Y좌표

void input() // 입력 함수
{
	keyCode = _getch(); // keyCode에 _getch(); 함수 선언
}

void process() // 입력 처리 함수
{
	switch (keyCode)
	{
		case 'w':  // w 입력시
			if (Map[Y - 1][X] != 0) // 0이 아닐때까지(0을 가상의 벽으로 설정)
				Y--; // Y축 1씩 감소
			break; // 턴 종료     //// case 'd'까지 같은 원리
		case 's': 
			if (Map[Y + 1][X] != 0) 
				Y++;
			break;
		case 'a':
			if (Map[Y][X - 1] != 0)
				X--;
			break;
		case 'd':
			if (Map[Y][X + 1] != 0)
				X++;
			break;
		case 'q':  // q 입력시
			isRunning = false; // 무한루프 종료
	}
}

void draw() // 맵 출력 함수
{

	system("cls"); // 새로운 출력이 생길때마다 이전 출력을 삭제함
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			if (i == Y && j == X) // Y, X가 i, j 좌표일때
			{
				cout << "P "; // P(플레이어) 출력
			}
			else if (Map[i][j] == 1) // 좌표가 1이면 공백 띄어쓰기
			{
				cout << "  ";
			}
			else if (Map[i][j] == 0) // 좌표가 0이면 ㅁ출력(벽 모양 설정)
			{
				cout << "ㅁ";
			}
			else if (Map[i][j] == 2) // 좌표가 2이면 별 출력(Star)
			{
				cout << "★";
			}
		}
		cout << "\n";
	}
}

void getStar() // 별을 먹었을때 효과 함수
{
	if (Map[X][Y] == 2) // 플레이어 좌표가 Star 좌표와 같으면
	{

		cout << "End !"; // End 출력
		isRunning = false; // 루프 종료
	}
}

int main() // 메인함수 실행
{
	while (isRunning) // 무한루프
	{
		// 함수 호출
		input();
		process();
		draw();
		getStar();
	}
	return 0;
}
profile
개인 공부를 정리함니다

0개의 댓글