게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
본삭금) 커서이동 질문
게시물ID : programmer_14635짧은주소 복사하기
작성자 : 베오베감이다
추천 : 0
조회수 : 477회
댓글수 : 2개
등록시간 : 2015/11/27 19:41:34
옵션
  • 본인삭제금지

게임만들기 질문 이후에 알려주신 링크를 타고 타다가..

밑의 소스를 봤습니다.

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에 대해 배우지도 않았고 개념도 뭘하는건지도 모릅니다만..

그래도 제가 앞으로 자주 써야하는 부분일것 같아서

위에 있는 함수만 어떻게든 배우고 가고싶습니다..



전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호