一、题目简介
本次课程设计中,我们实现了一个五子棋小游戏,该游戏由模块部分组成。各部分模块基本功能如下:ChessFrame 创建五子棋游戏主窗体和菜单
ChessModel 实现了整个五子棋程序算法的核心
MainPanel 1、构建一个面板,在该面板上画上棋盘;
2、处理在该棋盘上的鼠标事件(如鼠标左键点击、鼠标右键点击、鼠标拖动等)
ChessWindowEvent 事件响应
本软件简单评价:这个小游戏,娱乐性强、规则简单、易学、流行性广,普通人不需长时间专门训练即可自如行棋。可以与朋友一起玩,增进友谊,还可以自己玩,打发无聊的时间,游戏耗时短,不会浪费大量的时间
缺点是界面不丰富,没法换成玩家喜欢的颜色,没有设置悔棋步骤
本课程设计达到的效果描述:虽然使用的代码虽然不长,但类与类之间也有很强的逻辑关系,这就是面向对象语言的最大优势,这样可使我们更轻松的运用JAVA。
二、GitHub地址
https://github.com/wangwangrong/test2/blob/master/wuziqi
结队Github地址
http://www.cnblogs.com/zhanshan/p/4508742.html
三、结对分工及过程
我主要负责整个游戏算法的分析及程序的主框架的代码的编写、程序的测试
王荣荣主要负责整个程序的框架,主要包括制作棋盘及按钮和处理在该棋盘上的鼠标事件(如鼠标左键点击、鼠标右键点击、鼠标拖动等)
四、测试情况及截图
1.测试目的
软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例{即输入数据及其预期的输出结果},并利用这些测试用例去运行程序,以发现程序错误的过程。设计测试的目标是想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。
2.游戏图
3. 白盒测试
通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正,这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
用软件白盒测试产生的测试用例能够:
1.保证一个模块中的所有独立路径至少被使用一次;
2.对所有逻辑值均需测试true和false;
3.在上下边界及可操作范围内运行所有循环;
4.检查内部数据结构以确保其有效性。
4.测试用例
(1)用例1:
因为类ArrComparator主要功能是创建五子棋游戏主窗体,所以对其进行测试,看其构造五子棋游戏的主窗体的方法是否正确。
import java.util.Comparator;
/**
* 排序 Comparator
*/
class ArrComparator implements Comparator<Object> {
int column = 2;
int sortOrder = -1; // 递减
public ArrComparator() {
}
public int compare(Object a, Object b) {
if (a instanceof int[]) {
return sortOrder * (((int[]) a)[column] - ((int[]) b)[column]);
}
throw new IllegalArgumentException("param a,b must int[].");
}
}
(2)用例2:
用ChessMap类实现电脑下子,并先通过方法判断某坐标位置是否可下棋子。
代码见github。
(3)用例3:
用ChessPanel类实现控制下棋和判断胜负及算法,并先通过方法判断某坐标位置是否可下棋子。
代码见github。
5.测试存在的问题
通过小组游戏测试发现,由于棋盘大小问题,使得可能导致有时棋子满格也没有分出胜负,这样,就很难显示博弈者的水平。
6.游戏不足的解决方案
通过对代码的修改实现对游戏棋盘大小的规格控制选择,让博弈者尽展各自高超棋艺。
五、心得体会
通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。通过对此课题的开发,使我对用Eclipse开发平台有了一个比较清楚的认识,体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。