- 締切済み
コンソール画面のクリアの方法
いま、C言語でごく単純なゲームをテーマにGUIで勉強しています。 それで、while分などループ文で毎度「○○入力してください」とか「○○でした」などと入力する度に表示されると非常にうざいです。1ターンごとに画面をクリアするいい方法ないでしょうか?おしえてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- oldroot2005
- ベストアンサー率66% (68/103)
OS が何かも「コンソール」ソフトが何かも不明なので、勝手に Windows だと仮定して回答します。 No.1 の回答にある「ESC[2J を printf する」方法は、ansi.sys をロードした「MS-DOS プロンプト」でないとうまく行きません。手元に Windows XP しかなくて、Windows 9x 系がどうなっているか確認できないのですが、Windows XP では、次のようにします。 C:\WINDOWS\SYSTEM32\CONFIG.NT の最後に次の二行を加える。 device=%SystemRoot%\system32\ansi.sys dosonly コマンドプロンプト(cmd.exe)ではなく、MS-DOS プロンプト(command.com) を起 動。このコンソールは、ESC[2J でクリアできます。 ただし、このコンソールでは MS-DOS 用に作成されたものしか実行できません。今、勉強のために作成しているソフトは実行できないかも知れません。 コマンドプロンプトでも有効な方法は二つあって、簡単なほうは、 #include <stdlib.h> .... .... system("cls"); .... という風にします。もうひとつの方法はコードが長いので、以下の URL を参照してください。 もし、Linux などの UNIX 系 OS の話だったら、方法が違うので、回答への補足でお知らせください。
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
お使いの「コンソール」が何かによってそのコンソールを操作する方法も違ってきます。 お使いの「コンソール」は何ですか。
- zzen
- ベストアンサー率23% (9/38)
コンソールのクリアであれば、エスケープシーケンスでクリアを表示してやればokです。 以下をprintfで表示してください。ESCはx1bです。 ESC[2J
お礼
自分でも探していたら方法がみつかりました。 system("cls")すればOKなんです。 ただしこれはWindowsでのはなし。 UNIXなら別のコマンドを入れなくてはならないとわかりました。 ありがとうございます。