티스토리 뷰

반응형

|C/C++ CMD창에서 커서위치 원하는 좌표로 이동하기

C,C++ 에서 도스창을 이용한 게임이나 프로그램을 만들다 보면 도스상에서의 커서 위치를 옮겨야 할 때가 있는데 이럴때 사용할 수 있는 함수가 있습니다.

1
2
3
4
5
6
7
void gotoxy(int x, int y)
{
    COORD Cur;
    Cur.X = x;
    Cur.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Cur);
}
cs

위 함수는 windows.h 헤더 안에 포함된 기능을 이용한 함수이고 해당소스를 본문에 추가한 후 본문 내에서 함수 호출하듯이

1
gotoxy(x, y);
cs

위와 같은 형태로 원하는 좌표를 입력하면 됩니다. 

추가로 CMD 에서는 가로 2칸이 세로 1칸과 같은 크기를 가지니 참고하면 됩니다.

 

만약 이미 글씨가 써져있는 위치로 이동한후 새로운 글자를 쓰게 되면 원래있던 글자가 지워지며 입력되게 됩니다. 이것을 응용하면 화면 전체를 지우는

1
system("cls");
cs

위 함수가 아니라 gotoxy 함수를 이용해서 일정 부분만 글자를 지우고 다른 글자로 변경할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
void gotoxy(int x, int y)
{
    COORD Cur;
    Cur.X = x;
    Cur.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Cur);
}
 
 
int main()
{
    cout << "글자지우기" << endl;
    _getch();
    gotoxy(00);
    cout << "          " << endl;
    _getch();
}
cs

위 코드는 gotoxy()함수를 이용하여 이미 입력된 글자를 지우는 간단한 예제입니다.

|키보드 입력값에 따라서 점 이동하는 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
void gotoxy(int x, int y)
{
    COORD Cur;
    Cur.X = x;
    Cur.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Cur);
}
 
int main()
{
    int temp;
    int x = 0, y = 0;
 
    system("mode con: cols=50 lines=50");
 
    while (true) { 
        system("cls");
        gotoxy(x, y);
        cout << "*";
        
        temp = _getch();
 
        if (temp == 224) {
            temp = _getch();
            if (temp == 77) { //오른쪽
                if (x == 49) x = 0;
                else x++;
            }
            else if (temp == 72) { //위
                if (y == 0) y = 49;
                else y--;
            }
            else if (temp == 75) { //왼쪽
                if (x == 0) x = 49;
                else x--;
            }
            else if (temp == 80) { //아래
                if (y == 49) y = 0;
                else y++;
            }
        }
    }
}
cs

실행하면 도스창에 생기는 * 모양이 키보드 화살표위치에 맞춰서 따라 움직이게 됩니다.


출처/참고

 


광고

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함