2012-10-13 46 views
2
陣列

我剛開始用C,但我有PHP的一些知識,所以我決定做一些「複雜」的東西,作爲一個初學者:)重繪用C

我用了兩個嵌套的循環來打印一個50x50陣列。它不是很慢,但是我用一個帶有箭頭鍵的移動來移動一個符號,X(玩家)在陣列周圍。此舉是由每一次,需要被刷新,這是我做的整個陣列:

system("cls"); 
for(x=0;x<50;x++) 
{ 
    for(y=0;y<50;y++) 
    { 
     printf("%c",table[x][y]); 
    } 
    printf("\n"); 
} 

這是非常草率的解決方案和全陣列「閃爍」,而之後的一舉一動刷新。

C有沒有更有效的方法呢?

回答

2

您可能必須使用某種外殼圖形庫,如ncurses在您的陣列周圍移動東西,而不會在您重繪它時閃爍。當您僅使用printf將網格顯示爲輸出時,並不是一種簡單的方法來避免這種情況。

1

我假設你使用的是Windows(因爲是cls)。

也許ANSI.SYS轉義序列是沒有庫的最簡單的方法。

如果移動光標並覆蓋顯示內容而不清除舊內容,則可以避免閃爍。

+0

糟糕。據http://en.wikipedia.org/wiki/ANSI_escape_code,這不工作了(除非你有NT或更舊版本的Windows)。但該頁面提到了一個Win32控制檯API。我無法測試它,坐在一個linux的盒子前面 - 也許轉義序列仍然有效,但沒有ANSI.SYS「驅動程序」? – Sebastian