结对项目3-五子棋

一、题目简介

本次课程设计中,我们实现了一个五子棋小游戏,该游戏由模块部分组成。各部分模块基本功能如下: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开发平台有了一个比较清楚的认识,体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。

时间: 2024-10-06 12:16:16

结对项目3-五子棋的相关文章

结对项目之五子棋游戏

一.   题目简介 五子棋游戏 本次项目分析了五子棋游戏的游戏规则,设计了游戏算法,并选择eclipse作为该软件的开发平台,实现了五子棋的多种对战模式,既可人与人对战,也可人与电脑对战.还实现了,自定义棋盘行列数. 本文将从开发环境的安装,到五子棋的功能分析与设计,到各功能模块的实现,逐步向您展现五子棋的实现过程.经测试,本游戏系统功能齐全,能平稳运行,具有较强的使用价值. 该软件由画图.标记.判断模块三部分组成.各部分模块基本功能如下: (1)画图模块: 由画背景 ,画棋子 黑棋白棋要交错画

软件工程——结对项目

一.项目背景 五子棋是一种两人对弈的纯策略型棋类益智游戏,棋具与围棋通用,起源于中国上古时代的传统黑白棋种之一.主要流行于华人和汉字文化圈的国家以及欧美一些地区. 容易上手,老少皆宜,而且趣味横生,引人入胜:不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性.已在各个游戏平台有应用. 二.五子棋功能 1.计算机能根据棋局状态实时的判断对弈双方的胜负. 2.控制双方交替下棋. 3.友好的界面呈现. 三.结对分工及过程 结对 贾殿铎(学号后四位:1135)  王辉勇(学号后四位:1150)

结对项目更新

本周确实对结对项目没投入多少时间,新的需求没进行跟进,应该要被老板扣钱的吧.只针对之前的程序进行了争论和修改,之前的程序在处理除法的时候其实是有缺陷的,我们二人就此展开过讨论,在并没有达成共识的情况下,用各自的方法进行了编程试验,也没有解决问题,最后询问了同学,采用了新的办法,才解决了遗留的问题.

结对项目 - 词频统计Ⅱ

目的与要求 代码复审练习 结对练习 编写单元测试 基于上一个结对项目的结果,读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似) 解释: 选项 -f 表示打开某一文件 选项 -w 表示统计其后单词在打开的文件中的频率 详细内容 开发语言:J

结对项目之小游戏编程(斗地主)

一.题目简介    本次的项目是编写一个斗地主的小游戏,实现语言:java:主要完成了GUI设计.计时线程.算法.本次项目的主要目的是对算法的学习.算法分析在心得里面. 技术难点:1.图片的移动    2.计时线程的设定   3.对牌的分割,必须考虑到优先拆分方案,将权值低的拆分方案舍去. 4.在删除的时候遇到问题了,删除不了. 二.结对分工及过程 本次结对项目的成员有两个,张国伟:负责对GUI界面的设计,完成功能:洗牌功能,发牌功能,打牌功能的图片的位移处理,基本打牌的桌面等等. 我主要负责对

结对项目—地铁出行路线规划

结对项目—地铁出行路线规划 我的搭档:陈鸿超 14061216 https://github.com/ChengFR/PairProgramming_SubwayRoute- 会在十一期间发布新版本 结对编程体会: 结对编程的优点: 站在软件开发的角度,两个人共同面对同一台电脑进行开发,无论是效率还是软件质量都要超过一个人进行开发的情况. 对于还处于学习阶段的年轻软件开发者来说,结对编程是一个很好的互相学习的机会 结对编程时动力.责任感更强 结对编程的缺点: 对于我们来说,寻找两个人共同的时间进

软工_结对项目总结博客

关于结对编程 第一次进行真正的结对编程,而且我们组又是最奇葩的三人组合(14061183韩青长)(14061195陈彦吉),在经历了三天的合作以后,感觉收获还是蛮多的,下面是我对于结对编程的一些个人体验. 优点 在结对编程的过程中,两个人共同面对同一份代码,编码时旁边时刻有人提示监督.这样写出的代码,首先考虑的特殊情况会更多,能避免很多一个人编程时因为考虑不周而在某个不起眼的地方产生的Bug,代码质量更高,少了很多调试时间. 同时,由于两个人交替工作,一方面可以缓解疲劳,同时又因为身旁有人共同工

软件工程 结对项目总结

在结对项目中我和王以正同学一组.我们决定以王以正同学个人项目为基础开发.原因主要有几点:我使用的C++在开发效率和难易度上没有王以正用的java好:java语言的跨平台特性可以更好地支持网页端.安卓端:还有就是王以正同学个人项目的功能比我的更为完善.综合以上几点我们选用王以正同学的作为基础开发. 在这次结对项目中我学到了结对编程的方法.感觉这个方法十分实用,效率很高.因为个人开发的话遇到问题很容易陷入困境.止步不前继而工作效率十分低下.结对编程除了两个人分工合作提高了效率之外遇到问题也可以一起解

结对项目2

题目:构造程序,分别是: •不能触发Fault •触发Fault,但是不能触发Error. •触发Error,但是不能产生Failure. 结对对象:王翰林   博客地址:http://www.cnblogs.com/whl1127/p/5405639.html 双方贡献比例:1:1 编程照片: 源代码: import java.util.Scanner; public class MainTest { public static void main(String[] args) { doubl

结对项目总结

时为几周的结对项目结束了,经历了整个结对项目开发周期,我对结对开发软件有了一些新的认识.不同于个人的开发,结对项目强调的是两个人的合作关系.之前一个人能够搞定的问题,这下不得不两个人来做,开始时我是拒绝的.但是逐渐我发现,在两个人讨论的过程中,能够发现一些隐含的问题.比如,一个人设计的时候,有些事情没想明白就先做别的了,之后就忘掉了,但是在结对项目里面,这些问题想不搞清楚也不行,经常是随便提一句,然后就讨论了起来,然后就xx了:).咳 总的来看,整个结对项目可以分为几个大的阶段:一是讨论阶段,如