C++ 문법

[C++] 콘솔용 탈출 게임 만들어보기(수정 중)

simstealer 2022. 4. 14. 21:50

    10 * 10 크기의 맵을 구성한다. (2차원 배열)
    플레이어(0, 0)가 존재한다.
    탈출지점이 존재한다.
    WASD 키입력을 통해 플레이어를 이동시킨다.
    탈출 지점은 (0, 0)을 제외하고 랜덤 설정.
    P가 E에 도착하면 "탈출에 성공했습니다." 출력하고 프로그램 종료
    ※ 화면 클리어 : system("cls");  

더보기


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

int main()
{   
#pragma region 

    #P########
    ##########
    ##########
    ##########
    ##########
    ##########
    ##########
    ######E###
    ##########
    ##########

    srand(time(NULL));
    char map[10][10];
    int key;
    int player_x = 0; //플레이어 x 위치
    int player_y = 0; //플레이어 y 위치
    int exit_x = rand() % 9 + 1; //여기 수정 필요.
    int exit_y = rand() % 9 + 1; //여기 수정 필요.
    char player = 'P';
    char escape = 'E';

    while (true)
    {   
        //탈출 지점과 플레이어 지점 비교
        if (player_x == exit_x && player_y == exit_y)
        {
            cout << "탈출에 성공하였습니다.";
            break;
        }

        //맵 구성
        for (char map1 = 0; map1 < 10; map1++)
        {
            for (char map2 = 0; map2 < 10; map2++)
            {
                map[map1][map2] = '#';
            }
        }

        //플레이어
        map[player_x][player_y] = player;

        //탈출구
        map[exit_x][exit_y] = escape;

        cout << "탈출 좌표 x, y : " << exit_x << ", " << exit_y << endl;
        cout << "플레이어 좌표 x, y : " << player_x << ", " << player_y << endl;

        //출력 부분 ★★★출력 구문을 따로 둘 수 있다는 것 알아두자!!! 
        for (char map1 = 0; map1 < 10; map1++)
        {
            for (char map2 = 0; map2 < 10; map2++)
            {
                cout << map[map1][map2];
            }
            cout << endl;
        }

        // 키 움직임
        switch (_getch())
        {
        case 'w':   //w : 119
            player_x -= 1;
            if (player_x < 0)
            {
                player_x = 0;
            }
            break;

        case 'a':    //a : 97
            player_y -= 1;
            if (player_y < 0)
            {
                player_y = 0;
            }
            break;

        case 's':   //s : 112
            player_x += 1;
            if (player_x > 9)
            {
                player_x = 9;
            }
            break;

        case 'd':   //d : 100
            player_y += 1;
            if (player_y > 9)
            {
                player_y = 9;
            }
            break;

        default:
            break;
        }
        system("cls");
    }
    
#pragma endregion 

    return 0;
}