关于一个bug的解决

       前几个星期做黑白棋的提示落子功能等附加功能时出了一个bug,解决它花了我好多时间,下面我简单的讲一下这个过程。

       首先我要添加的功能是“选出”允许下子的地点(即下了之后能“吃子”的地点),其实在原本写的程序中就有吃子部分的代码,现在只需提出来,做到在落子前完成判断即可(此时便要在下黑棋的监听里面添加选出白子落子地点的代码,在下白棋的监听里选出黑子落子地点的代码)。思路的话,从头到尾都很简单:所有棋盘上的点都过一遍,假设这里落子能不能吃子,能的话标记,随后落子前判断是否有标记。但是!我写出的程序总是会显示“程序执行超出默认15秒限制”,就是出现死循环了。随后我在调试中发现最里面的循环执行了上十亿次。。。。。。而且程序执行效果也不对,有时候还会显示可下子的地点是已经有棋子的了(即使我让他只判断空位置也是如此)。

       经过漫长的调试排错之后我终于发现了问题所在。当初为了简洁明了,我是在另一个图层写的这一段代码(主程序写在另一个图层),结果,这一段代码所在的图层位于主程序所在的图层,所以,执行程序的时候是先执行前一个图层的,于是就是各种悲剧了。所以原先程序就是先判断黑子落点再按照点击放上白子吃子。所以显示的其实是白子下子前的黑子可落子点。死循环的话问题是出在一个if和else if的问题上,加上前面的问题,让我一开始的修改都无效了。。。。

       在修改了程序顺序之后果然就跑通了。所以对于这次bug我得到经验就是,以后写程序最好还是要有一个大纲流程,注意程序的书写顺序(这点非常重要)。往往程序错不是在他的难度上,我们首先要理顺思路,同时写程序的时候也要仔细不要弄反了代码顺序,这样连调试都很难找得到错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值