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