2017-04-10 63 views
1

只是一個簡單的問題。我試圖爲C中的程序製作一個簡單的動畫,而且我找不到通過控制檯移動此對象的方法。 我正在使用printf在控制檯上繪製圖形,並且我在考慮使用gotoxy函數使其移動,但似乎並未移動該對象。 這是圖中:通過控制檯移動字符

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

什麼,我想說的是,當我選擇動畫的選項,火箭需要做出像它的上升。我做了一個for循環改變Y值,但它沒有奏效。有任何想法嗎?

+0

禁用輸出緩衝,一次打印1個字符,'sleep'? –

+0

你是在windows還是像操作系統的unix? – axelduch

+0

對不起,我忘記了嘿嘿,我正在用我在互聯網上找到的一些代碼進行一些測試,並重新編寫了我的java代碼中的數字。 我在Windows上。 –

回答

2

在Windows與MSVC,你可以像這樣做,避免了操作系統的交互。它基於打印換行符將所有文本移動的想法。假定控制檯中有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++使用

system("cls"); 

否則查找this article