어떤 조건으로 해야 하는지 생각하고 고르는게 오래 걸렸다.
#include<stdio.h>
#include<stdlib.h>
int main(void) {
char key;
int y = 1, x = 0;
char map[20][15] = {
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'#','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','M','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','M','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','M','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.','.','.','.','.','.','.','G'}
};
while (1) {
for (int i = 0; i < 20; i++) {
printf(" ");
for (int j = 0; j < 15; j++)
printf("%c", map[i][j]);
printf("\n");
}
if (map[19][14] == '#') {
printf("축하합니다! 금을 찾았어요!");
_getch();
break;
}
key = _getch();
switch (key)
{
case 'w':
--y;
if (map[y][x] == 'M') { ++y; break; }
// 벽(M)으로 이동하면 원래 좌표로
if (y < 20 && y >= 0) {
map[y + 1][x] = '.';
map[y][x] = '#';
}
else
y = 0; // 맵 외부(배열 범위 밖)로 이동하면 다시 원래 좌표로
break;
case 's':
++y;
if (map[y][x] == 'M') { --y; break; }
if (y < 20 && y >= 0) {
map[y - 1][x] = '.';
map[y][x] = '#';
}
else
y = 19;
break;
case 'a':
--x;
if (map[y][x] == 'M') { ++x; break; }
if (x < 15 && x >= 0) {
map[y][x + 1] = '.';
map[y][x] = '#';
}
else
x = 0;
break;
case 'd':
++x;
if (map[y][x] == 'M') { --x; break; }
if (x < 15 && x >= 0) {
map[y][x - 1] = '.';
map[y][x] = '#';
}
else
x = 14;
break;
}
system("cls");
}
return 0;
}
2022-05-25
'C > 코딩 문제' 카테고리의 다른 글
[쉽게 풀어쓴 C언어 Express]Ch.12 문자와 문자열 character and string_Programming12 (0) | 2022.07.01 |
---|---|
[쉽게 풀어쓴 C언어 Express]Ch.12 문자와 문자열 character and string_Programming11 (0) | 2022.07.01 |