오늘은 2번째.
내일 3번째 글 올리면 끝날 것 같다.
아 진짜 블로그에 쓸 글이 없어
새로 추가된 move함수입니다. 방향키를 입력받아서 돌을 움직입니다.
void move()
{
int input;
input=getch();
switch(input)
{
case RIGHT :
if(x<40)
{
if(map1[y][(x/2)+1] == 0)
{
gotoxy(x,y);
printf(" ");
x+=2;
gotoxy(x,y);
printf("●");
}
}
break;
case LEFT :
if(x>1)
{
if(map1[y][(x/2)-1] == 0)
{
gotoxy(x,y);
printf(" ");
x-=2;
gotoxy(x,y);
printf("●");
}
}
break;
case UP :
if(y>1)
{
if(map1[y-1][x/2] == 0)
{
gotoxy(x,y);
printf(" ");
y-=1;
gotoxy(x,y);
printf("●");
}
}
break;
case DOWN :
if(y<20)
{
if(map1[y+1][x/2] == 0)
{
gotoxy(x,y);
printf(" ");
y+=1;
gotoxy(x,y);
printf("●");
}
}
break;
}
}
가는 곳에 벽이 없다면 지금 위치에 있는 걸 지우고
새로운 돌을 그립니다.
move함수 호출은 이렇게 무한루프 ㅇ_ㅇ
while(1)
{
move();
}
최종 소스
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
int x,y;
int map1[20][20]=
{
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 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, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 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, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 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, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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 }
};
void gotoxy(int x, int y)
{
COORD XY = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), XY);
}
void move()
{
int input;
input=getch();
switch(input)
{
case RIGHT :
if(x<40)
{
if(map1[y][(x/2)+1] == 0)
{
gotoxy(x,y);
printf(" ");
x+=2;
gotoxy(x,y);
printf("●");
}
}
break;
case LEFT :
if(x>1)
{
if(map1[y][(x/2)-1] == 0)
{
gotoxy(x,y);
printf(" ");
x-=2;
gotoxy(x,y);
printf("●");
}
}
break;
case UP :
if(y>1)
{
if(map1[y-1][x/2] == 0)
{
gotoxy(x,y);
printf(" ");
y-=1;
gotoxy(x,y);
printf("●");
}
}
break;
case DOWN :
if(y<20)
{
if(map1[y+1][x/2] == 0)
{
gotoxy(x,y);
printf(" ");
y+=1;
gotoxy(x,y);
printf("●");
}
}
break;
}
}
void main()
{
int count,count2;
for(count=0;count<20;count++)
{
for(count2=0;count2<20;count2++)
{
if(map1[count][count2]==1)
printf("○");
else
printf(" ");
}
printf("\n");
}
x=0;
y=1;
gotoxy(x,y);
printf("●");
while(1)
{
move();
}
}
추가된 게 move함수밖에 없네요. (목숨만은 살려주세요)
이해안가는 부분은 리플 ㄱㄱ
Ps. 그거보다 내일 월요일 ㅜㅜㅜㅜ
학교가자
이 글이 유익하다면 (굽신굽신) ->
헐...C언어..뭐가뭔지 한게도 모르겠네요..+_+;;
C언어 별 거 없습니다 ㅋㅋ
별거 없는 거 때문에 죽을지경이지만요 ㅋㅋㅋ
ㅋㅋ 저 gets를 이용하는 방법이 원시적인 수준의 scanf라죠. 실제로 받은 데이터들을 전부 문자열로 취급한 후 숫자인지 뭔지 분류해 내는 방법을 쓴답니다.
저는 역시 야만인건가요 ㅋㅋㅋ
오스트랄로 피테쿠스
호모 에렉투스
호모 사피엔스
호모 사피엔스 사피엔스
이 절 중에 고르라면 그냥 호모?
그냥 헛소리입니다 ㅋㅋ
대학 선배님이 현재 C 언어로 쩔쩔 매고 계시는데 ㅠㅠ;;
저는 그냥 웹언어에 머물러 있을레요 엉엉;;
C언어는 공공의 적이지요 ㅜㅜ