7.22.2017

미로 만들기

#include <iostream>
#include <Windows.h>

using namespace std;

void main(){
        char arr[7][5] = {
                { ' ',' ',' ','*',' ' },
                { '*','*',' ','*',' ' },
                { ' ',' ',' ','*',' ' },
                { ' ','*',' ',' ',' ' },
                { ' ',' ','*',' ','*' },
                { ' ','*','*',' ',' ' },
                { ' ',' ','*',' ',' ' },
        };

        int x = 0, y = 0, i = 0, j = 0;
        char move;
        //위(w) : 행의 좌표 --
        //아래(s) : 행의 좌표 ++
        //왼쪽(a) : 열의 좌표 --
        //오른쪽(d) : 열의 좌표 ++

        //맵 밖으로 못 나가게 예외 처리
        //벽을 만났을 경우 위치 이동(x)

        while (true) {
                cout << "-----현재 좌표-----\n";
                cout << "x : " << x << " , y : " << y << endl;
                arr[x][y] = 'p';
                for (i = 0; i < sizeof(arr) / sizeof(arr[i]); i++) {
                        for (j = 0; j < sizeof(arr[i]); j++) {
                                cout << arr[i][j] << " ";
                        } cout << endl;
                }
                cin >> move;

                switch (move) {
                case 'w':
                        x--;
                        if (x<0 || arr[x][y] == '*') x++;
                        arr[x + 1][y] = ' ';
                        break;
                case 's':
                        x++;
                        if (x>6 || arr[x][y] == '*') x--;
                        arr[x - 1][y] = ' ';
                        break;
                case 'a':
                        y--;
                        if (y<0 || arr[x][y] == '*') y++;
                        arr[x][y+1] = ' ';
                        break;
                case 'd':
                        y++;
                        if (y>4 || arr[x][y] == '*') y--;
                        arr[x][y-1] = ' ';
                        break;
                default:
                        break;
                }
                system("cls"); //콘솔창 초기화
        }//end
}

댓글 없음:

댓글 쓰기