2017-04-10 7 views
1

簡単な質問です。私はCでプログラムのための簡単なアニメーションを作ろうとしていると私はコンソールを介してこのオブジェクトを移動する方法を見つけることができません。 私はprintfを使ってコンソール上にFigureを描画しています。私はgotoxy関数を使って動かすことを考えていましたが、オブジェクトを動かすことはできません。コンソールからの文字の移動

 printf("  /\\"); 
     printf("   // \\\\"); 
     printf("  // \\\\"); 
     printf("  //  \\\\"); 
     printf("  ||  ||"); 
     printf("=======|| [ ] ||======="); 
     printf("\\\\  || [ ] ||  //"); 
     printf(" \\\\====|| [ ] ||====//"); 
     printf("  +++++++++"); 
     printf(" // | | | | | \\\\"); 

何私がしたいことは、私はアニメーションのオプションを選択すると、ロケットはそれが上がっているようにする必要があることである: これは数字です。私はY値を変更するforループを実行しましたが、動作しませんでした。何か案は?

+0

出力バッファリングを無効にし、一度に1文字ずつ印刷しますか?「sleep」? –

+0

あなたは窓の上か、OSのようなUNIX上にいますか? – axelduch

+0

私はheheを忘れて申し訳ありません、私はインターネットで見つけたいくつかのコードでいくつかのテストを行っていました。私は持っていたJavaコードから数字を書き換えました。 私はWindowsです。 –

答えて

2

を見上げる

system("cls"); 

を使用しています。改行を印刷するとすべてのテキストが上に移動するという考えに基づいています。コンソールに25行と仮定。私は、Linuxのソリューションが非常に似ていることを期待しています。

#include <windows.h> 
#include <stdio.h> 

#define LINES 25 

int main(void) { 
    for(int i = 0; i < LINES; i++) {   // clear console 
     printf("\n"); 
    } 

    printf("  /\\\n");     // added newline to each of these lines 
    printf("   // \\\\\n"); 
    printf("  // \\\\\n"); 
    printf("  //  \\\\\n"); 
    printf("  ||  ||\n"); 
    printf("=======|| [ ] ||=======\n"); 
    printf("\\\\  || [ ] ||  //\n"); 
    printf(" \\\\====|| [ ] ||====//\n"); 
    printf("  +++++++++\n"); 
    printf(" // | | | | | \\\\\n"); 
    Sleep(3000);        // start the burn 

    for(int i = 0; i < LINES; i++) { 
     Sleep(200); 
     printf("\n");       // lift-off 
    } 
    return 0; 
} 
0

スクリーンオプションを無効にして、次回に別の条件でロケットを再描画する必要があります。

Cで画面を消去する方法は、どのコンパイラを使用しているかによって異なります。あなたがCを使用している場合++そうしないと、OSの相互作用を避け、このようにそれを行うことができますMSVCでのWindowsではthis article

関連する問題