2022. 04. 13_C++ 간단한 콘솔용 탈출게임 만들기

JSK·2022년 4월 13일
0

조건1>

10 x 10 크기의 맵 구성.(2차원 배열)

  • 맵은 '#'로 표시

조건2>

플레이어(O), 탈출구(E)가 존재한다.

  • 플레이어 초기위치 0,0
  • 탈출구 위치 랜덤

조건3>

WASD 키입력을 통해 플레이어를 이동.

조건4>

플레이어가 탈출구에 도달하면 "탈출에 성공했습니다" 텍스트 출력후 종료.

예시>

#O########
##########
##########
##########
##########
##########
##########
######E###
##########
##########


#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    //맵 크기
    char map[10][10] = {};    

    //탈출구 좌표 변수(랜덤)
    srand(time(NULL));
    int exit_position_x = rand() % 9 + 1;       
    int exit_position_y = rand() % 9 + 1;

    //플레이어 좌표 변수(초기 고정)
    int player_position_x = 0;                  
    int player_position_y = 0;

    //인게임
    while ((exit_position_x != player_position_x) || (exit_position_y != player_position_y))
    {
        //맵 리딩
        for (int i = 0; i < 10; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                map[i][j] = '#';
            }
        }

        //플레이어, 출구 배치
        map[exit_position_x][exit_position_y] = 'E';
        map[player_position_x][player_position_y] = 'O';

        //맵 출력
        for (int i = 0; i < 10; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                cout << map[i][j];
            }
            cout << "\n";
        }

        //조작버튼 및 맵 이탈 방지
        switch (int input = _getch())
        {
        case 119:
            if (player_position_x > 0)
            {
                player_position_x -= 1;
            }
            break;
        case 115:
            if (player_position_x < 9)
            {
                player_position_x += 1;
            }
            break;
        case 97:
            if (player_position_y > 0)
            {
                player_position_y -= 1;
            }
            break;
        case 100:
            if (player_position_y < 9)
            {
                player_position_y += 1;
            }
            break;
        }

        //초기화
        system("cls");
    }
    cout << "탈출에 성공했습니다!" << endl;
}

1주일동안 공부한 내용을 활용한 실습을 진행했다.
아직 익숙치 않은 부분이 있어서 조금은 헤메이며 작성했으나, 실습을 진행하며 공부에 많은 도움이 되었다.

0개의 댓글

관련 채용 정보