C, C++에서 콘솔화면에 커서를 원하는 위치로 이동하여 해당위치에 문자를 출력하는 방법이 존재한다.
아래 gotoxy함수를 참고하자.
windows.h 헤더에 포함되어 있는 api 를 이용하면 된다.
그러면 원하는 위치로 커서를 이동시킬 수 있다.
아래 gotoxy 함수를 소스에 추가해서 사용하면 편리하다.
1 2 3 4 5 6 7 8 9 | #include <windows.h> void gotoxy(int x, int y) { COORD Cur; Cur.X = x; Cur.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur); } | cs |
아래는 해당 함수를 가지고 키보드의 방향키를 입력 받아 해당 방향키대로 A 문자를 콘솔 화면에서 이동시키는 코드이다.
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 50 51 52 53 54 55 | #include <iostream> #include <conio.h> #include <windows.h> #define UP 0x48 #define LEFT 0x4B #define RIGHT 0x4D #define DOWN 0x50 #define SPACE 0x20 class CCharacter { int m_x, m_y; char m_ch; int m_key; public: CCharacter(char ch) : m_x(0), m_y(0) //생성자(x,y좌표값을 모두 0으로 초기화 시킨다.) { m_ch = ch; } void gotoxy() {//커서이동함수 COORD Cur; Cur.X = m_x; Cur.Y = m_y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Cur); } bool KeyProcess() { if (kbhit()) // 키입력을 체크 { m_key = getch(); switch (m_key) { case UP: m_y--; break; case DOWN: m_y++; break; case LEFT: m_x--; break; case RIGHT: m_x++; break; case SPACE: break; } return true; } return false; } void Draw() { system("cls"); // 화면을 지운다. gotoxy();//커서를 이동시킨다. printf("%c", m_ch); //문자출력 } }; void main() { CCharacter ch('A'); while (1) { boolean b = ch.KeyProcess(); if(b) ch.Draw(); } } | cs |
아래 화면처럼 A 문자를 키보드 방향키로 마음대로 움직이게 할 수 있다.
방향키를 입력받을때마다 화면을 지우고 커서가 있는 좌표에 문자를 출력하는 방식이다.
화면을 초기화하는 것은 아래 링크를 참고하자.
C언어/C++ 콘솔 화면 초기화 방법, 예시 : http://hijuworld.tistory.com/53
'C, C++' 카테고리의 다른 글
C언어/C++ 콘솔 화면 초기화 방법, 예시 (0) | 2018.06.04 |
---|---|
C언어/C++ 딜레이 함수 Sleep(), 설명, 사용예시 (0) | 2018.06.04 |
C, C++ 에서 동적 메모리의 할당(malloc, new)과 해제(free,delete) 원리 (0) | 2018.04.30 |
포인터 배열 VS 배열 포인터 차이 및 예제 (0) | 2018.04.30 |
[c/c++] memset()을 이용한 배열에 값을 모두 0또는 -1로 초기화 (0) | 2018.04.08 |