옵션 |
|
게임만들기 질문 이후에 알려주신 링크를 타고 타다가..
밑의 소스를 봤습니다.
4가지 정도의 질문이 있슴니당
질문은 맨 아래에 하고 질문할 내용을 연두색으로 표시할게여
#include<stdio.h>
#include<conio.h>
#include<windows.h>
#define X_MAX 79 //가로(열) 방향의최대값
#define Y_MAX 24 //세로(행) 방향의최대값
void move_arrow_key(char key, int *x1, int *y1, int x_b, int y_b);
void gotoxy(int x, int y);
int main(void)
{
char key;
int x=10, y=5;
do
{
gotoxy(x,y);
printf("A");
key=getch();
system("cls");
move_arrow_key(key, &x, &y, X_MAX, Y_MAX);
}while(key != 27);
return 0;
}
void move_arrow_key(char key, int *x1, int *y1,int x_b, int y_b)
{
switch(key)
{
case 72:
(*y1)--; //위쪽(상) 방향의화살표키입력
if(*y1<1) *y1=1; //y좌표의최솟값
break;
case 75:
(*x1)--; //왼쪽(좌) 방향의화살표키입력
if(*x1<1) *x1=1; //x좌표의최솟값
break;
case 77:
(*x1)++; //오른쪽(우) 방향의화살표키입력
if(*x1>x_b) *x1=x_b; //x좌표의최댓값
break;
case 80:
(*y1)++; //아래쪽(하) 방향의화살표키입력
if(*y1>y_b) *y1=y_b; //y좌표의최댓값
break;
default:
return;
}
}
void gotoxy(int x, int y)
{
COORD Pos = { x-1, y-1 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
1. conio.h 와 stdilb의 차이점
표준과 비표준의 차이는 알겠습니다 하는 역할이 비슷하다고 그러더군요..
근데 stdlib을 사용하면 getch 함수에 빨간색 밑줄 쳐지면서 경고가 뜹니다 (실행은 잘되요..)
왜그럴까요?ㅠ
2. while 문에 key != 27 이 무얼 의미하는건가요?
좌표가 24,79 밖에 없으니 27이 나올리는 없다 즉 무한루프이다 라는걸까요??
그러기엔 79라는 좌표도 있는데...
3. 좌표의 최댓값 부분에서 int x_b, int y_b 얘는 각각 24, 79 를 의미하는 것 같은데
소스의 어딜 찾아봐도.. 대입하는 부분이 보이질 않습니다 ㅠㅠ
어째서 갑작스럽게 얘네들이 최댓값이 된건가요??ㅠ
4. COORD Pos = { x-1, y-1 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
api 함수라고 들었습니다..
아직 api에 대해 배우지도 않았고 개념도 뭘하는건지도 모릅니다만..
그래도 제가 앞으로 자주 써야하는 부분일것 같아서
위에 있는 함수만 어떻게든 배우고 가고싶습니다..