结对项目之五子棋游戏
一. 题目简介
五子棋游戏
本次项目分析了五子棋游戏的游戏规则,设计了游戏算法,并选择eclipse作为该软件的开发平台,实现了五子棋的多种对战模式,既可人与人对战,也可人与电脑对战。还实现了,自定义棋盘行列数。
本文将从开发环境的安装,到五子棋的功能分析与设计,到各功能模块的实现,逐步向您展现五子棋的实现过程。经测试,本游戏系统功能齐全,能平稳运行,具有较强的使用价值。
该软件由画图、标记、判断模块三部分组成。各部分模块基本功能如下:
(1)画图模块:
由画背景 ,画棋子 黑棋白棋要交错画到指定的坐标中,等组成。
(2)标记模块:
将棋盘的坐标索引成二维数组的坐标;用一个二维数组对棋子进行标记,没有棋子为零,黑棋为2,白棋为1;
如果有棋子时单击,否则提示此处已有棋子。
(3)判断模块:
无禁手:黑白双方依次落子,任一方先在棋盘上形成连续的五个(含五个以上)棋子的一方为胜;
禁手主要分为以下几类:
1.黑长连禁手:连成六个以上连续相同的棋子。
2.黑三三禁手:两个以上的活三。
3.黑四四禁手:两个以上的四。
二.结对分工及过程
完成五子棋基本功能是:下棋和判断胜负。
为实现课程设计需求,需要实现的各个类、每个类需要负责实现的功能。
该游戏主要由以下几个模块组成:
此次项目中:徐晓萌负责画图模块及标记模块,在测试中负责白盒测试。
郭蕾负责判断模块,在测试中负责黑盒测试。
三.代码地址
https://github.com/xutiantian/Test
四.测试情况
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.游戏不足的解决方案
通过对代码的修改实现对游戏棋盘大小的规格控制选择,让博弈者尽展各自高超棋艺。
7.回归测试
对修改后的游戏版本执行回归测试。
用例 |
操作 |
预期结果 |
测试结果 |
用例1 |
选择不同规格棋盘,能否正常运行 |
能正常运行 |
Pass |
用例2 |
选择不同规格棋盘,对其他功能正常运行是否产生影响 |
没有影响 |
Pass |
六.问题及心得
在测试阶段,一系列的测试方案都是为了“破坏”已经建造好的软件系统而特地设计的,它的存在是为了竭力证明程序中的错误不能按照预定要求正确工作。软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。
通过此次软件测试的课程设计,深刻学习掌握了软件测试和软件测试过程的基本方法和基本技术,关于黑盒、白盒的测试用例的设计,也进行了认真学习研究,从而进一步提高了自己在程序上的编写能力,以及一些之前未触及的问题。
总之,收获颇丰,增强了自己动手以及团队合作的能力。付出才会有回报,实践才能出真知。为即将踏上社会的自己又做了一份理论和实践的准备。