調試過程中出現的問題以及解決辦法
1、一運行就RE
原因:忘記調用init()函數,導致兩個類沒有實例化,直接讀取野指針。
解決:在主函數里調用init()函數。
2、發現每次生成的蟲子都是一樣的,主函數里雖然srand了,卻沒有達到初始化隨機種子的效果。
原因:我傻了,先init()才srand()。= =||
解決:先srand()再init()。
3、發現實際生成的蟲子數總比應該生成的少那么一兩個。
原因:我只檢測了生成的隨機蟲子是否越界和四周是否構成同顏色的三行或者三列,忘記檢測本位置是否原本有蟲子導致后生成的符合要求的蟲子將原生成的蟲子覆蓋。
解決:ok()函數里多加一條判斷語句
if ( b_grid_type[x][y] == WORM ) return false;
4、按向右鍵也是向左移動。
原因:case RIGHT:里面本應++d_x寫成了--d_x;
解決:>.<
5、下落時RE。
呃,這個問題很大,心很靜的時候解決了,忘記怎么解決的了。大概是重寫了很多函數,很多代碼這樣……
6、生成的藥丸總是青色的。
原因:drawCapsule()函數忘記_setColor()了。
解決:給drawCapsule()函數增加一個顏色形式參數并設置顏色。
7、按一下左會向左移動很多很多格。
原因:按鍵時間雖然感覺很短,可是電腦已經檢測到多次了。
解決:用GetTickCount()函數獲取當前按鍵時間,達到10ms以后再做動作。并且用一個static unsigned char變量判斷是否真正讀入了按鍵。
8、藥丸可以更漂亮些
原因:可愛的糖糖畫了好多圖圖,搶過來用,嘿嘿 ^.^
解決:寫了一個readBMP()函數,免得每次讀取圖片都要增加一大片代碼。
×××××××9、血精靈圖片讀不出來
原因:
解決:
10、不會自己掉落
解決:count每到speed的時候都執行一次fall()函數。
11、最后一橫行連續四個消不掉
原因:竟然把16寫成了15……
解決:我想以后還是多用點const int之類的東西吧……
×××××××12、新生成的不連接藥丸落下時產生的可消四列直至下一次才能消去。
原因:
解決:
13、有時候會生成三個連續同色蟲子
原因:有一種情況是,先生成左蟲子,后生成右蟲子,最后生成中間的蟲子
解決:加上這種情況以后,測試30余次,沒有問題。
×××××××14、竟然偶然發現連接狀態未變化的單獨藥丸不能落的bug
原因:未知
解決:bug未再出現過……
15、藥丸在瓶子最上面的時候不能變化,給玩家帶來不便。
解決:empty()函數里添加if ( y == -1 ) return true;處理特殊情況
×××××××16、竟然發現有不為空卻顏色為黑的格子,bug啊bug,囧bug,bug總是很難預料的
原因:未知
解決:
我有一個很偉大的計劃,就是重寫……