Java团队项目总结
项目实现情况
- 主窗体和菜单
- 用类ChessFrame创建五子棋游戏主窗体和菜单
- 菜单可选为:
- 版本信息:
-
五子棋算法核心:用类ChessModel实现了整个五子棋程序算法的核心
- 用arrMapShow表示棋盘方格上的落子情况,数组arrMapShow只有3个值:1,2,3,-1,其中1代表该棋盘方格上下的棋子为黑子,2代表该棋盘方格上下的棋子为白子,3代表为该棋盘方格上没有棋子,-1代表该棋盘方格不能够下棋子。
- 通过设置,获取,交换获取棋手的标识符来确定黑方白方。
- 计算机走棋:用穷举法判断每一个坐标点的四个方向的的最大棋子数,最后得出棋子数最大值的坐标,下子;计算棋盘上某一方格上八个方向棋子的最大值,这八个方向分别是:左、右、上、下、左上、左下、右上、右下;其中左右,上下,左上右下,右上左下分别累计计数,得出这个棋盘方格的最大棋子数。
- 判断胜负:判断落子后,左右,上下,左上右下,右上左下计算8个方向,4条线上棋子数是否大于等于5.
-
面板的构建和棋盘棋子的绘制以及鼠标事件的处理
- 构建一个面板,在该面板上画上棋盘;
- 根据坐标计算出棋盘方格棋子的信息(如白子还是黑子),然后调用draw方法在棋盘上画出相应的棋子;
- 响应鼠标的点击事件,根据鼠标的点击来下棋;
- 处理在该棋盘上的鼠标事件(左击右击拖动)。
项目测试
下棋界面:
人机对战:
人人对战:
项目实现中的问题与解决
-
1.在初步实现代码时,无法实现图形图像的绘制。
-
通过上网搜索和学习,找到了创建用户界面和绘制图形图像的包import java.awt.*。
-
2.在实现计算机走棋时,我们需要一个可以施行的算法,使得游戏有可玩性。
-
我们小组成员收集各种相关内容,通过比较,选择采用穷举法来作为计算机走棋的方法。
-
3.在项目实现中,出现了六子连成一条线而无法判断的情况,如图所示
-
在代码实现过程中,我们并没有考虑到不出现五子连成一条线而直接成六子一条线的情况,经过小组成员讨论,一致认为这种情况也应算是赢的一种情况,所以我们修改了代码,改进了这一点,将判断胜负的条件由==5改为>=5。
项目展望与改进
我们项目目前只实现单机上的人人对战,需要两个人使用同一鼠标和键盘来进行对决,有些麻烦,希望能将其改进成为可联机的游戏。
团队成员贡献与成绩分配
何佳蕾负责主程序代码的编写和程序的细节优化,成绩为27;
彭垚负责窗体设计的部分代码,成绩为23;
刘钦令负责窗体设计的部分代码和组合运行程序,成绩为25。