`

Java自此丰富多彩--五子棋项目总结

    博客分类:
  • Java
阅读更多
历经数天的艰苦奋战,五子棋的项目终于拿下了。
我觉得,这里面的精华是平常我们所不注意的东西。

最开始我是有5个文件来实现的,但是我发现自己不善于整合(至少是现在),
所以:我把一开始的判断输赢类和后来的结果输出类都归纳在了一起,这样我在实现的时候就显得很游刃有余,诚然,我是按照自己的方式做的,分开自己也没问题,只是还有待习惯。

其实这也是我想要总结的第一点:练习。
这个道理简单的浮云了,可是你不去做还是不知道何如,所以说,熟练程度有时候远胜于技巧,至少我是这么理解的。
我在编写人机对战的算法的过程中,三次“易稿”:
从最开始的原始程序,到后来的优化程序1.0,再到最后的版本2.0,
我几乎是一种思想,三种套路,在脑子里勾画并敲击了三遍。
没有现在的熟练,没有现在这样基础程序阶段的熟练,没有现在一步一个脚印的熟练应用,就没有将来的驰骋。

我发现自己纠结类最久的就是那个所谓的“实例化对象”的问题,这个问题之前就有,我以为自己解决类,其实还隐藏在比较深层次的地方我没有发现。
五子棋的编写过程中,这个问题最明显的出现就是我程序运行时无数次的“空指针异常”。
我总结类我在解决“空指针异常”时的几种处理方式:
1:看在使用对象或者类的方法时,有没有实例化对象,有没有赋初值,有没有将用到的方法写规范;
2:通过在方法中或者在主函数中,添加输出行的方法来判断在程序运行中是否有错误,根据输出的值进行修正或者重写
3:根据错误提示的位置,看调用或者被电泳的环节是否正确无误
4:在编写程序的过程中,尽量在算法环节和必要处添加详细一点的注释,使修改和代码的含义更加明了易读
5:最后,就是在编写大的改动时,提前进行备份,
  虽然Ctrl+Z可以为你挽回一些过失,但是当改动变多而你又需要跳出来回到原程序去找寻思路时,这个快捷键恐怕就无能为力了,
    而且,有时候它可能还会引起你不必要的错误:
    比如:忘记恢复某一文件的修改或恢复过多导致修正失效。

五子棋项目其实是分三个阶段的实现的:
1:实现棋盘界面,实现落子的位置相对固定,同时判定输赢
2:实现人人对战,即黑白两种棋子交替出现
3:实现人机对战,即简单的“人工智能”——通过编写棋子周边空位的权值的类来具体实现

第一个阶段我在之前就顺利完成了,从第二个阶段开始就遇到了障碍。
对于人人对战来说,就是棋子交替的出现,就是要存储每个棋子的位置,位子里面所存的值相应的随着落子发生变化,然后就是判定输赢。

在这里则出现了我所要总结的第二点:耐心&专注。
说实话,我有时候是没有什么所谓耐心的,我也没想过我什么时候,多久会完成这个工作,我会在失败了很多次看了无数行红字之后崩溃一段时间,此时耐心值接近零。
从做人机开始我就一直在两个问题上纠结:一是之前的对象问题,在这里不是穿插出现;二是机器的智能落子和权值计算的问题——焦头烂额恐怕是很贴切了。
我会每每做一个下午,然后收获甚微有时甚至是失望而归,把类实例化类放到主函数里面,调用,完善主函数的执行,优化监听器,云里雾里的。
之后的两天我开始玩三国杀了。我每晚都要玩大概两个小时然后才回到程序的正题。在玩的过程中我几乎什么都没想就是一心玩,将我还有大量错误的程序搁置一边,不复思考。在三国杀里酣畅淋漓的胜利之后我归来了,(虽然在新手区哈哈),那是我就很想喊一声Superman returns 里面的那句台词:I’m BACK!!
我觉得热那就是有时候需要一种释放,然后回到自己的自我中来,我一边回忆一边思考,差不多搞了一个大概,又是两天,我终于完成了!
我觉得自己突然间就顿悟了,真的,那种不能说是大彻大悟吧,至少也是那种可以长久影响人的顿悟:
人世间有很多道理,你一直以为他们显而易见,一直以为他们过于简单,但是只有你去做一件事,去投身到一个事业中去,才会知道他们一点都不简单,他们都不只是我们所用的语言中的简单名词,突想起柏拉图的一句话:存在即合理。简单的才最深刻,浅显的往往都是真理,只有由浅入深才是王道,于我现在的状况来说,Java大放异彩的日子,才刚刚开始,Just Go!
0
16
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics