Borland C++ 의 conio.h에 들어있던 콘솔용 기능인 clrscr(), gotoxy(x,y), delay(x) 는 Visual C++ 이나 gcc, Dev C++등에서는 사용할 수 없다.
그러나 clrscr(), delay(x), gotoxy(x,y)는 windows.h 를 이용해 Visual C++이나 Dev C++ 에서 구현할 수 있다.
인터넷에 떠도는 것들 중에서 잘못된 게 많아, 여기에 이렇게 올린다.
사실 이것도 잘 만든 것인지는 잘 모르지만, 나름대로의 테스트로 제대로 구현했다고 본다.
1. gotoxy();
참고 : 인터넷에서 떠도는 것 중에서, x,y대신 x-1, y-1이라고 되어있는 경우가 있는데, 이는 잘못된 것이다.
이는 추후에 올릴 nibbles for Dev C++ (in Windows) 에서 그 이유를 알 수 있다.
#include <windows.h>
void gotoxy(int x, int y)
{
COORD Pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
한글과 특수문자는 좌표 2를 , 영문은 좌표 1을 소모한다. (바이트와 동일)
2. clrscr();
주의 : clrscr()을 사용하기 위해서는 필히 gotoxy(); 가 필요하다.
printf(만을 가지고 구성해보려고 한 적이 있으나, 화면 떨림이 너무 심해서 포기했다.
참고 : 인터넷에서 떠도는 중에는 #include <windows.h>를 이용하여,
system("cls");를 사용하라는 사람들이 있는데, 이는 매우 비효율적이다.
실제로 프로그램을 구현할 때 속도차가 많이 나는 것을 알 수 있다.
#include <stdio.h>
void clrscr (void)
{
for (int i = 0; i<24; i++) { // 콘솔 화면이 24줄까지임을 이용
gotoxy(0,i);
printf("%80c",' '); // 콘솔 가로의 칸이 80칸임을 이용. 참고로 안 띄면 실행 에러
}
}
3. delay();
참고 : delay()는 windows.h에 Sleep()라는 함수가 동일한 기능을 하므로, 단순히 치환해주면 끝이다.
그러나 Borland C++로 짜여진 장문의 프로그램에서 이를 치환하는 건 매우 힘들 수 있으므로,
다음과 같이 구현하자.(주의! Sleep()는 sleep()가 아니다.)
#include <windows.h>
void delay(int x)
{
Sleep(x);
}