五子棋程序设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

宜宾学院

面向对象课程设计

学院:_计算机与信息工程学院_ 班级: 2014级6班学生姓名: 郑亮学号: 141106020 设计地点(单位)_________宜宾学院__________

设计题目:____________双人五子棋_____________

完成日期:2015年12月5日

目录

1 问题要求及任务描述 (3)

1.1题目要求 (3)

1.2 主要任务 (3)

2 解决问题的主要思路和方法 (3)

2.1 关键问题 (3)

2.2 拟采用解决问题的方法及算法 (4)

2.3主要算法和处理流程图以及类图等 (4)

3 程序实现 (6)

3.1 程序实现时应考虑的问题 (6)

3.2 主要源代码及说明 (8)

3.2.1 总体设计 (8)

3.2.1 详细设计 (8)

4 测试 (18)

4.1 游戏测试结果及分析 (18)

5 小结 (21)

5.1本问题解决方法及程序实现小结 (21)

5.2尚未解决的问题及下一步工作思路。 (23)

5.3 心得与体会 (23)

6 参考文献 (24)

双人五子棋游戏设计报告书

1 问题要求及任务描述

1.1题目要求

双人五子棋游戏

1.2 主要任务

1.独立设计、编制、调试出一款双人五子棋游戏,并单独完成其中一定量的函数模块。

2.要求该游戏具有趣味性和可操作性,能够正常运行。其中用到Java语言中的各种语句、结构。(如其中需要注意全局变量和局部变量的申明,数组的使用等)3.双人五子棋要求能够进入可视化界面,二人对弈,当有五颗同色棋子相连时,判断出输赢等一系列游戏流程。

2 解决问题的主要思路和方法

2.1 关键问题

1.棋盘的绘制

2.棋子的绘制,必须落在棋盘的交叉点处

3.有棋子的地方不能重复落子

4.棋子的黑白交替

5.五子连珠的判断(即游戏输赢判断)

2.2 拟采用解决问题的方法及算法

1.棋盘的绘制:可以用一层for 循环通过分别对X,Y 坐标设置相应的增量来绘制棋盘的横线和竖线。

2.绘制棋子:通过填充一个椭圆的方式来绘制棋子,

棋子的落子位子:首先定义一个二维数组a[][],用二维数组的两个参数来对应一个交叉点的X,Y虚坐标,通过鼠标点击的位置所得坐标来整除棋盘格子的宽度。这样就得到了鼠标点击的位置的最近的一个交叉的位置。然后通过交叉点的位置信息,以交叉点为圆心来绘制相应的棋子。

3.有棋子的位置不能重复落子:可以给二维数组a[][]付初值为“0”,当a[x][y] == 0 时表示无子可以落子,当a[x][y] ! = 0 时就不能落子。

4.棋子的黑白交替:可以定义一个布尔型变量Order 当为真时就为:黑子Order 为假时就为:白子。

5.五子连珠的判断:首先定义一个整形变量color 来存放棋子的颜色。先

对color进行赋值。横向的判断是定义count1 来记录棋子个数,当横向左右有相同颜色的棋子就让count1加上1,当count1 >= 5 时五子连珠成功,结束游戏。其它纵向和斜向方法相同。

2.3主要算法和处理流程图以及类图等

类视图:

算法处理流程图

3 程序实现

3.1 程序实现时应考虑的问题1. 根据所选题目,首先设计模块图

2. 画出主程序和主要模块的流程图

3.2 主要源代码及说明

3.2.1 总体设计

主要包括的类有两个个:Myframe, MyPanel

1、Myframe类: Myframe类是java版五子棋的主框架,程序的启动类。其中包括游戏界面的创建、按钮的设置、相关的事件监听器设置、游戏的启动、实现重新游戏。

2、MyPanel类: MyPanel类主要实现的是棋盘的绘制、创建数组存放棋子的坐标、设置只能在棋盘内可以落子、实现判断黑白棋的输赢。

3.2.1 详细设计

1 .Myframe类

变量定义:

private MyPanel; //新建一个自定义的Jpanel

public JButton btnReset; //创建新游戏按钮

public JButton btnExit;//创建退出

public JButton btnMin;//创建最小化按钮

public JButton btnBfirst;//创建黑子先按钮

public JButton btnWfirst;//创建白子先按钮

按钮的监听器和按钮功能实现:

/**

* 创建新游戏按钮

*/

btnReset = new JButton("\u65B0\u6E38\u620F");

btnReset.setFont(f1);

btnReset.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent arg0) {

myPanel.Reset(); //调用重置棋盘的函数

myPanel.canPlay = true; //开始游戏

myPanel.repeat = true;//解决重复点击设置颜色按钮

repaint();//调用重绘函数

}

});

btnReset.setBounds(432, 351, 142, 58);

myPanel.add(btnReset);

btnReset.setUI(new MyButtonUI());

btnReset.setBackground(new Color(250, 154, 81, 240));

/**

* 创建退出按钮

*/

btnExit = new JButton("\u9000\u51FA");

btnExit.setFont(f2);

btnExit.setBounds(506, 415, 68, 39);

myPanel.add(btnExit);

btnExit.setUI(new MyButtonUI());

btnExit.setBackground(new Color(250, 154, 81, 240));

btnExit.addMouseListener(new MouseAdapter() { //实现按钮单击退出的功能@Override

public void mouseClicked(MouseEvent arg0) {

System.exit(0);

}

});

/**

* 创建最小化按钮

*/

相关文档
最新文档