五子棋和画板项目总结 五子棋画板BMP项目总结java
五子棋和画板项目总结
项目介绍
项目过程:
一. 遇到的困难
五子棋:刚开始接触到五子棋的时候经常会被一些很简单的算法纠结,比如说,判断输赢的算法,还有就是怎么样让棋子下到交叉点上,刚开始有点不太明白
在人人对战的时候也经常会犯很多错误但是自己这么都找不到,有时为了一个很小的问题纠结很久
在人机对战的时候怎么实现人机算法关于判断权值找出下棋的位置,刚开始不是很理解,
怎么去判段到底是属于活连还是死连,一直没想到解决的方法,后来看了网上的资料才有了思路
在最后的优化界面的过程中,一直有个问题困扰着我,那就是如何实现添加背景图片,然后可以在图片上添加组件,那段时间一直没有解决,直到前段时间随着知识的积累就解决了那个问题
最后在实现五子棋的一些功能的时候,第一个困难就是悔棋的实现(最后被逼无难只有用队列实现) 然后就是关于人人和人机之间的转换(在移除监听器和加上监听器之间转换,经常会出现一些BUG),最后就是关于加倒计时功能,因为我的五子棋就是一张背景图片,要关于五子棋在图片是倒计时一直会出现闪屏的问题,有解决的方法,但是会破坏我整个界面的布局,所以一直纠结着到现在还没解决
画图板:最开始接触画图板的时候对鼠标监听器迷茫的,一时很难接受,
然后就是在优化界面的时候关于界面的排版总是达不到我想要的结果,关于JPanel和JSplitPane分割界面感觉不受控制
最后就是在图片的保存和打开时,在打开BMP文件时总会出现一些奇怪异常,无法在画图板中打开bmp文件,最后bmp的保存时,基本上自己无法想到用截图的方法保存图片,还有那些复杂的图片数据,最后在雷超的帮助下实现了bmp的保存
二. 解决困难
当我遇到那些我暂时还没有理解的问题是,就会多理解几遍,多敲几遍代码,档子渐渐熟悉了这个问题后就觉得不是很难
在做五子棋的时候为了解决窗体的布局问题,我直接绕过,通过PS来整合多张图片,然后达到一个很好的效果
在遇到五子棋人机对战的算法时在查看了很多资料后初步对怎么实现一个好的人计算法有了了解
在五子棋倒计时功能的实现上通过预习后面的线程的知识然后慢慢熟悉掌握一些线程的基本用法
关于窗体的背景图片的添加,通过请教老师和同学慢慢的了解了添加背景的一些方法
还有就是布局和JPanel的应用,通过多次试验最后能做出一个和XP很相似的画图板
三. 存在的问题
五子棋再人人和人机对战之间转换由于系统反应慢,会出现人人和人机叠加的现象
五子棋添加倒计时功能
五子棋打开后的棋子不能实现重绘功能
五子棋界面存在局限性,如果在加一些功能的话就会打乱布局
画图板打开bmp文件速度太慢了,
画图板的功能按钮没有XP系统按钮的效果,还有很多功能有待实现
在画图板打开bmp图片后,再清楚图片重绘功能失效
心得体会:
我的感悟
写代码时最好写注释当一个类比较长时要理清楚类里面的逻辑顺序
做一个java程序都是不断优化的过程(从最开始的简单界面到最后的仿真界面)
写java程序要要追求完美,也许开始的时候你不能把这个界面写的很完美,只要你不断地去优化,去追求完美,你会乐在其中。
对于一些不懂的问题,代码出现了异常,要去寻求别人的帮助,或者去网上找资料,不一定别人的东西就不能拿来借鉴,你可以把别人的转化为自己的,
自己的不足
对一些基本的概念理解的不是很清楚
代码写的不够好,不够精简,在写代码时没有一个全局观
对一些比较复杂的算法的理解深度不够
写代码不喜欢写注释