调试过程中出现的问题以及解决办法
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总是很难预料的
原因:未知
解决:
我有一个很伟大的计划,就是重写……