今回は、エスケープシーケンスを使って画面の文字を消去する方法について伺いに参りました。
OSはXP、VisualStudio2010プロフェッショナルを使っております。
使用言語はC++です。
現在、ライブラリを用いずに、コマンドプロンプト上で動くような
簡単なゲームを作ってみようかなと考えております。
画像ファイルを用いずに、文字だけで表現する感じです。
そこで、一度標準出力した文字を画面から消すというプログラムを試すために
以下のようなコードを書いて実行してみたのですが、どうも消去されません。
#include <stdio.h>
#include <conio.h> //getch()のため
int main()
{
char Letter; //入力したキーの文字コード
bool ProgramEnd=false;
while(ProgramEnd==false)
{
Letter=getch();
if(Letter=='q')
ProgramEnd=true;
if(Letter=='c')
printf("0x1b[2J"); //画面に描いた文字を消去したい!
printf("%c\n",Letter); //入力したキーの文字を表示する
}
return 0;
}
実行すると、以下のように"0x1b[2J"がそのまま標準出力され、
画面消去されません。(試しにaとsとdを入力しております)
------------------------実行結果-------------------------
a
s
d
0x1b[2Jc
---------------------------------------------------------
printf("0x1b[2J");
の部分ですが、
printf("\0x1b[2J");
に変えても駄目でした。
調べてみたところ、0x1b[2Jというエスケープシーケンスを使えるかどうかは環境に依る、
というような感じのことが書かれておりました…。
プログラム初心者にこのあと手ほどきしたいと思っているので、
APIに深く突っ込んだりパスを変えたりせず、
なるべく簡単なコードでなんとかならないかと思案しております。
環境を変えたりAPIに深く踏み込んだりせずに、
標準出力した文字を消去する方法はあるでしょうか。