2차원 배열로 만든 맵 안에서 gotoxy로 캐릭터 움직이기
앵겨쭈
질문 제목 :2차원 배열로 만든 맵 안에서 gotoxy로 캐릭터 움직이기제가 쓴 코드로 하면 캐릭터를 움직이면 맵이고 뭐고 다 무시하고 이동해버립니다.....
배열로 만든 맵에서 ■ 는 움직이지 못하고 빈공간만 움직이게 배열 11111111111
10000000001
11111111111
이렇다고 하면 0인 곳만 돌아다닐 수 있게 하고 싶은데 잘 안되네요
질문 내용 :
#includestdio.h
#includeconio.h
#include windows.h
#define up 72
#define down 80
#define left 75
#define right 77
void gotoxy(int x,int y){
coord pos={x,y};
setconsolecursorposition(getstdhandle(std_output_handle), pos);
}
void main(){
int map[20][20]={
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
};
int key;
int x=3,y=3,i=15,j=15;
int map_x,map_y;
for(map_x=0;map_x20;map_x++){
for(map_y=0;map_y20;map_y++){
if(map[map_x][map_y]==1)
printf(■);
else if(map[map_x][map_y]==0)
printf( );
}puts();
}
gotoxy(x,y);
printf(●);
gotoxy(i,j);
printf(★);
while(1){
key=getch();
switch(key){
case up: gotoxy(x,y);
printf( );
y-=1;
gotoxy(x,y);
printf(●);break;
case down: gotoxy(x,y);
printf( );
y+=1;
gotoxy(x,y);
printf(●);break;
case left: gotoxy(x,y);
printf( );
x-=1;
gotoxy(x,y);
printf(●);break;
case right: gotoxy(x,y);
printf( );
x+=1;
gotoxy(x,y);
printf(●);break;
}
}