c언어 - 테트리스 만들기1 - gotoxy함수

2022. 1. 27. 15:44C언어

728x90

 

gotoxy함수를 이용해 테트리스 테두리를 만들어보자!

# include <stdio.h>
# include <Windows.h>

void gotoxy(int x, int y);

int main(void)
{
    int a, b;

    for (a = 0; a < 21; a++)
    {
        for (b = 0; b < 21; b++)
        {
            if (b == 0)
            {
                gotoxy(a, b);
                printf("ㅁ");
            }
            else if (b == 20)
            {
                gotoxy(a, b);
                printf("ㅁ");
            }
            else
            {
                if (a == 0 || a == 20)
                {
                    gotoxy(a, b);
                    printf("ㅁ");
                }
            }
           
        }

    }
    return 0;
}
void gotoxy(int x, int y)
{
    COORD Pos;
    Pos.X = x;
    Pos.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

실행시킨다면..!!

COORD란 ?

 

COORD의 형태

typedef struct _COORD {
    SHORT X;
    SHORT Y;
} COORD, *PCOORD

구조체 : 사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입이다.

구조체는 다양한 타입의 변수집합을 하나의 타입으로 나타낼 수있다. 구조체를 구성하는 변수를 구조체의 멤버 혹은 멤버 변수라 한다.

 

typedef 키워드는 이미 존재하는 타입에 새로운 이름을 붙일 때 사용한다.

구조체 변수를 선언하거나 사용할 때 매번 struct 키워드를 사용하여 구조체임을 명시해야 하는데 typedef 키워드를 사용해 구조체에 새로운 이름을 선언하면 매번 struct 키워드를 사용하지 않아도 된다.

위는 _COORD라는 이름을 선언한 것.

 

struct 구조체이름

{

    멤버변수1의타입 멤버변수1의이름;

    멤버변수2의타입 멤버변수2의이름;

    ...

} 구조체변수이름;

 

결론은, COORD 라는 구조체는 선언되어있는 x, y 값을 저장하는 역할이다!

 

 

SetConsoleCursorPosition이란?

BOOL WINAPI SetConsoleCursorPosition(
    _In_ HANDLE hConsoleOutput,
    _In_ COORD dwCursorPosition
);

이 함수는 "콘솔의 핸들 값"과 "좌표값"을 받아, 해당 위치로 콘솔의 커서를 이동시킨다.

 

이상입니다.

다음에는 키보드로 ★을 테두리안에서 이동시켜 보도록 하겠습니다.

 

728x90