貪吃蛇閃爍現象

2022-03-29 13:28:58 字數 1734 閱讀 7476

介面效果:

介面閃爍的原因是「如果列印左上角第乙個字元到列印右下角最後乙個字元時間間隔超過20ms,就會閃爍」

列印背景:

法一:根據乙個整型二維陣列來判斷列印方塊或空格

blackblock整型字串為:

1

int blackblock[20][23] =,

3 ,

4 ,

5 ,

6 ,

7 ,

8 ,

9 ,

10 ,

11 ,

12 ,

13 ,

14 ,

15 ,

16 ,

17 ,

18 ,

19 ,

20 ,

21 ,

22 };

列印的函式:

1

void

show1()

216 sleep(1000); //

時間間隔是1000ms,即1s,若無此函式則迴圈高速進行,不停閃爍17}

18}19

1

void

show1()217

stop = clock();

18duration = ((double)(stop - start)) / clk_tck;

19printf("duration = %lf\n", duration);

20 sleep(1000); //

時間間隔是1000ms,即1s21}

22 }

用clock()函式檢測列印一次所需時間,測試後結果為24ms~53ms,超過20ms,人眼所能識別最小的時間間隔是20ms,所以會造成閃爍現象

法二:直接列印字串

字串陣列為:

1

char background[20][48] =;

顯示的函式:
1

void

show2()211

12 }

1

void

show2()218

19 }

用clock()函式檢測列印一次所需時間,測試後結果為0ms~10ms,

且大多數情況下在0ms ~ 4ms,遠小於20ms,所以幾乎看不到閃爍現象

法三:直接用乙個一維字元陣列存放法二中的所有字串:

1

char background[960] =;

顯示的函式:

1

void

show3()

29 }

法三的閃爍現象幾乎看不到,這在法二的基礎上又是一次改進和優化。

總結:各個函式的時間消耗主要在呼叫printf函式和列印字元,三種方法列印的字元都一樣多,所以呼叫printf()的次數越少,則時間間隔越小,越優化,閃爍越不明顯。

貪吃蛇遊戲

貪吃蛇遊戲 結構化程式設計 c語言程式設計 重要的的是結構化的程式設計思想 include include include include include include define field width 300 就做20個格仔的 define field height 300 define f...

貪吃蛇(改進)

該程式分成3個檔案 第乙個檔案 fang.cs using system using system.collections.generic using system.text using system.windows.forms using system.drawing namespace snak...

貪吃蛇遊戲

include include include include include 使用當前時間做種子 enum dir 列舉型別enum dir 圍牆 class fencef 定義物件 畫框框 void fence initfence 顯示框框 void fence outputf int snak...