• 締切済み

コンソール画面のクリアの方法

いま、C言語でごく単純なゲームをテーマにGUIで勉強しています。 それで、while分などループ文で毎度「○○入力してください」とか「○○でした」などと入力する度に表示されると非常にうざいです。1ターンごとに画面をクリアするいい方法ないでしょうか?おしえてください。

  • nVIDIA
  • お礼率46% (520/1121)

みんなの回答

回答No.3

 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 の話だったら、方法が違うので、回答への補足でお知らせください。

参考URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/clearing_the_screen.asp
nVIDIA
質問者

お礼

自分でも探していたら方法がみつかりました。 system("cls")すればOKなんです。 ただしこれはWindowsでのはなし。 UNIXなら別のコマンドを入れなくてはならないとわかりました。 ありがとうございます。

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

お使いの「コンソール」が何かによってそのコンソールを操作する方法も違ってきます。 お使いの「コンソール」は何ですか。

  • zzen
  • ベストアンサー率23% (9/38)
回答No.1

コンソールのクリアであれば、エスケープシーケンスでクリアを表示してやればokです。 以下をprintfで表示してください。ESCはx1bです。 ESC[2J

関連するQ&A

  • 教えてください!!

    C言語を勉強しているのですが、整数ABを入力して、AのB乗を求めるにはどうしたらいいのですか?while文でお願いします。

  • ループについて

     アンケート的な質問ですが、forの無限ループと、whileの無限ループが、C言語にはありますよね?  whileの場合は、while(1)と書きますし、問題ないですが、 forの場合は、for(;;)とかきますよね。  forの無限ループって、顔文字の涙にみえないですか? for文の無限ループって、何が悲しかったのでしょうか? 答えられる方、こたえてください。

  • do while

    do whileの文で do{… }while(c!=1 && c!=2 && c!=3); つまり1,2,3以外の数字を入力した場合はループするようにしました。…は無限ループしないようにしています。実際1,2,3以外の数字を入力しても無限ループしません。しかし、数字以外の文字を入れてしまうと、無限ループします。%dがいけないのでしょうか?初心者ですので分かりやすくよろしくお願いします。多分これだけじゃ情報不足だと思うので、足りない情報があれば言ってください。すぐに書き込みます。

  • ループの特定入力終了

    C言語初心者です。よろしくお願いします。 whileなどのループ関数を使って、キーボード 入力をするたびに、ループが一度走る事は、 可能です。ですが、 常にループは走らせながらendなどの特定 の入力をされた場合に、ループを抜ける プログラムをどうしてもできません。 わかる方、教えていただければ幸いです。

  • Java言語でノベルゲームを作りたいと思います。お勧めの参考書を教えて

    Java言語でノベルゲームを作りたいと思います。お勧めの参考書を教えてください。 学校の課題でJava言語を用いて一からノベルゲームを作ることになりました。 アルゴリズムを考える際の参考になる本を紹介いただけたらと思います。 また、ゲーム画面の作成でGUIについてもすこし学習したいと思っていますので、そちらについてもお勧めのものがありましたら紹介いただけたらと思います。 Javaプログラミングの知識については初心者に近くif文やループ、メソッドの分割程度しかやったことがありません。 注文が多くてて申し訳ありませんが、丁寧で難しすぎない内容のものを教えていただけると助かります。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • C言語プログラム

    C言語プログラム ある数を入力して、入力された数を一辺とする図形を描くプログラムを作りたいんです。 分かりやすくすると、 入力された数が5だった時、画面には ***** ***** ***** ***** ***** ↑こう出力させたいんです。 四角だけじゃなくて、 * ** *** **** ***** ↑こういう三角とか、逆三角とか、 *        * **     *** ***  ***** **     *** *        * こんなかんじでいろんな形を描けるようにしたいんです。 C言語で、for文の二重ループを使うようにとのことなんですが、 どうすればいいでしょうか。 こういうのってズルですけど、何かヒントでも貰えればと思っています...。

  • 素人なのですが、プログラマになってしまいました。

    営業として入った会社に技術者が足りないので、自習室を使ってもいいからC言語の勉強をして欲しいとの事で、プログラミング言語Cの著書では有名なK&Rを配布され、1章まで読み進めたところで会社側から問題を出されたのですが。 『入力 キーボードから文字を入力し、改行が入力されるまで、 1文字ずつ配列に文字を保存していきます。 出力 改行が入力されたら、それまでに保存した文字を配列から 1文字ずつ出力し、改行までに入力された文字数を画面に表示します。 入力仕様 (1)最大半角 80文字まで入力可能であること。 (2)入力された文字を保存する配列の大きさは defineで定義すること。 (3)入力を開始する前に入力を促すプロンプトとして「 Input>」を表示させること (4)入力時のループは whileを使うこと。 (5)ループを抜ける条件は読み込んだ文字が改行文字である場合とすること。 出力仕様 (1)戻り値も引数も取らない一つの関数を宣言し、その関数を使って出力すること。 (2)出力時のループは for文を使うこと。 (3)ループを抜けた後、改行までに入力された文字数を画面に出力すること。 演習 (1)上記課題を作成せよ (2) (1)で作成したプログラムについて、入力について配列の最大サイズを超えた入力は無効となる様にプログラムを変更せよ。』 上の内容を一つずつであればなんとかプログラミング出来るようになったのですが、全てを一つのプログラムにする、となると文の書き方が解らなくて困っています。 皆さんはプログラマーの勉強を始めて壁にぶつかった時、どう対処されていました?? 回答よろしくお願いします。。

  • C言語のプログラムについて

    C言語のプログラムについて 3桁の自然数の中で、自分自身を含めた約数が奇数になるものがいくつあるかを求めるプログラムを作りたいのですが、swich文を使って、6通りの方法で出そうとしていまして、 while 文、 for文、 do while文に加え、 for文のを、1つの関数として独立させたもの、 さらに、for文のを重ループ部分のそれぞれのループに対応して、2つの関数として独立させたもの、 そして、この2つの関数のどちらともをループを用いずに再帰呼び出しを用いたもの の6通りで出したいのですが、swich文を使うところは自力でできたのですが、あとの6つそれぞれのプログラムの組み方がわかりません。 教えていただけないでしょうか?ややこしい書き方をしてすいません・・・。

  • ループの中にループ

    while文の中にwhile文をする方法はありますでしょうか? 最初のwhile文は指定回数のループで その中のwhile文はデータベースの検索結果数分だけループするためのwhileです。

    • ベストアンサー
    • PHP
  • Cのコンソールアプリ

    Cを勉強し始めて1ヶ月ほどになります。 [a] メインメニュー (1)○○開始 (2)○○終了 (3)××× (4)△△△ (9)プログラムの終了 処理番号入力:_ [b] ○○開始 ESCでメインメニューへ戻る (1)○○開始 (2)キャンセル 処理番号入力:_ コンソールアプリで[a]のようなメインメニューがあり [b]のような画面でキャンセルの選択やESCを押した場合などに 「メインメニューに戻る」動作をさせたいのですが、 forやwhileを使えばいいのでしょうか? なかなかイメージが出来ていなくて教えていただけるとありがたいです。 環境はVisual C++ 6.0です。

専門家に質問してみよう