连连看游戏--详细设计说明书

连连看游戏--详细设计说明书
连连看游戏--详细设计说明书

基于FLEX开发的连连看游戏详细设计说明书

[V1.1.0]

学院名称:湖南软件职业学院

专业名称:软件技术专业

组员:虢威、孙庆龙、段志辉、罗奇

指导老师:危孟君

1引言 (3)

1.1编写目的 (3)

1.2背景 (3)

1.3定义 (3)

1.4参考资料 (3)

2程序系统的结构 (3)

3程序(标识符)设计说明 (4)

3.1程序描述 (4)

3.2功能 (4)

3.3性能 (5)

3.3.1精度 (5)

3.3.2时间特性要求 (5)

3.3.3灵活性 (5)

3.4算法 (5)

3.4.1地图的生成 (5)

3.4.1寻路算法 (7)

3.5流程逻辑 (12)

3.6接口 (13)

3.7注释设计 (14)

3.9限制条件 (14)

3.10尚未解决的问题 (14)

详细设计说明书

1引言

1.1编写目的

详细设计说明书对连连看游戏的总体设计和各个模块的功能、性能、输入输出、算法、接口、程序逻辑、存储分配及其它给出了详细的设计方案,为软件开发制定详细的计划,同时也提交系统分析员,由其提出意见。这是程序员开发及未来测试烦人重要文档资料。

1.2背景

a.开发软件名称:基于FLEX开发的连连看

b.项目开发小组成员:虢威、孙庆龙、段志辉、罗奇

c.用户:所有喜欢玩这个游戏的玩家

d.项目开发环境:Windows XP + Flash Builder4 + ActionScript 3.0。

1.3定义

连连看项目详细设计方案。

1.4参考资料

(1)《软件工程案列开发与实践》,刘竹林等,清华大学出版社

(2)《IT项目管理》,曾鸿、毛志雄等,中国铁道出版社

(3)《ActionScript 3.0编程精髓》,Colinn Moock(美),机械工业出版社

(4)《Flex 3 Cookbook》,(美)诺布尔(美)安德森,电子工业出版社

2程序系统的结构

本次所设计连连看游戏的程序主结构如图2-1所示。

3程序(标识符)设计说明

从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层 模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。

3.1程序描述

主要功能:连连看是一款图案配对的益智游戏,与“找出两幅图片中的不同”类戏同为比眼力的游戏。游戏速度节奏快,画面清晰可爱,适合细心的玩家。

可扩展性:能够适应应用要求的变化和修改,具有灵活的可扩充性。。

3.2功能

游戏界面主框架主要包括游戏图形区域界面、游戏开始按钮、游戏关闭按钮。

游戏画布区主要应该包括游戏画布中图片随机出现的位置。

图2-1 连连看程序主结构

3.3性能

3.3.1精度

1、在执行游戏页面首次加载的时候,不允许出现因为程序的原因导致增加加载失败;

2、在执行物件删除操作的时候,不允许因为程序的原因发生多删除物件、删除失败的情况

3.3.2时间特性要求

把用户进入游戏界面的时间要求在3秒内,对鼠标点击两个相同物件后,物件消失的响应时间规定在2秒内。

3.3.3灵活性

A、操作方式

程序在通常的应用环境下使用鼠标和键盘进行输入和输出操作,对于执行按钮,通常使用鼠标的点击完成。

B、运行环境

WINDOWS XP操作系统。

3.4算法

3.4.1地图的生成

本游戏地图设计是由一个由M*N(M=N)个的正方形图案组成的.因此我们设定按钮在X 轴上的数目为x_num,在Y轴上的数目为y_num。然后用一个地图数组来存储地图元素。其中每个数字代表一种图案,而0则为同路,代表无图。所以,我们的地图数组可能是以下这样的一组数据。这个地图为(行数+ 2) * (列数+ 2) 的距阵。

[[0,0,0,0,0,0],

[0,1,4,3,1,0],

[0,2,3,1,2,0],

[0,4,2,3,4,0],

[0,3,1,4,2,0],

[0,0,0,0,0,0]]

为何要在周围加上一圈0,待会在算法中解释。

这样的地图有以下特点:

1.地图中的每一个数字的个数都是偶数,也即都是成对的出现

2.地图的排列必须是随机排列的.

3.地图中的每一个数字的种类不能大于已有的图案的个数。

以下是产生按钮数组的代码:

public function genBtns():void{

this._btns.length = 0;//清除以前保存的按钮数组

var x_num:uint = Game.NUM_X + 2;//按钮数组 X轴大小

var y_num:uint = Game.NUM_Y + 2;//按钮数组 y轴大小

var vals:Array = this.genVals();

var v:int = 0;

for(var p_x:uint = 0;p_x

var x_btns:Array = [];

for(var p_y:uint = 0;p_y

if(p_x == 0 || p_x == (x_num - 1) || p_y == 0 || p_y == (y_num - 1)){

x_btns.push(null);

}else{

var l_x:uint = (p_x-1) * MyButton.SIZE + Game.MARGIN;

var l_y:uint = (p_y-1) * MyButton.SIZE + Game.MARGIN;

var val:uint = vals[v++];

var btn:MyButton = new

MyButton("btn_"+p_x+"_"+p_y,val,val+"",l_x,l_y,new Point(p_x,p_y));

x_btns.push(btn);

}

}

this._btns.push(x_btns);

}

}

以下是把按钮添加到画布的代码:

private function addBtns(e:TimerEvent):void{

var tmpCount:uint = this._dfFlag?Game.NUM_X+2:Game.NUM_Y+2;

var btns:Array = [];

if(btnsIdx < tmpCount){

if(this._dfFlag){

btns = this._btns[btnsIdx] as Array;

for(var j:uint=0;j

var btn:MyButton = btns[j] as MyButton;

if(btn){

this._btn_content.addElement(btn);

this._lab_Count.text = (++tCount) +"";

}

}

}else{

for(var i:uint=0;i

var btn2:MyButton = this._btns[i][btnsIdx] as MyButton;

if(btn2){

this._btn_content.addElement(btn2);

this._lab_Count.text = (++tCount) +"";

}

}

}

btnsIdx++;

}else{

t.stop();

t.removeEventListener(TimerEvent.TIMER,addBtns);

t = null;

this._lab_level.text = this.getLevel() + "";

startTime();//开始计时

}

}

3.4.1寻路算法

为了方便,我们假设地图大小为4*4,国旗有4种。参考以下图片,图中用4中颜色表示4种不同国旗。

实际上程序内部是不需要认识国旗的图象的,只需要用一个ID 来表示,界面上画出来的国旗图形是根据ID 取资源里的图片画的。比如上图中用 4 种颜色表示 4 种国旗,我们可以定义红色棋子的ID 为1,绿色为2,蓝色为3,黄色为4。另外,如果棋子被消除ID 可以定义为0。把ID 放在一个二维矩阵,画到界面上时,根据距阵里元素的位置和值(ID)决定在什么位置画什么颜色棋子。

我见过两种风格的连连看,有一种是和我正在写的连连看一样,连线可以伸到图形矩行

外面,比如图中的第一行有两个红色棋子,这两个是可以连的;另外一种和QQGame 里的连连看一样,连线不能伸到棋子矩行外面,也就是说图中的第一行的两个红色棋子是不能连的。程序内部棋子都是数字,这两种风格的差别在于ID 距阵的大小,第一种是:(行数+ 2) * (列数+ 2);第二种是:行数* 列数。第一种更简单,所以下面只说第一种。

连通算法:

1、两次点击同一张图片:

return null

2、两次点击不同图片:

return null

3、两次点击同一种图片:

连连看所要求的是:

A:两个目标是相同的

B:两个目标之间连接线的折点不超过两个。(连接线由x轴和y轴的平行线组

成)那么分析一下连接的情况可以看到,一般分三种情况

a:直线相连b:一个折点c:两个折点如下图:

具体实现代码如下:

public static function testLX(frBtn:MyButton,toBtn:MyButton):Array{ if(frBtn == toBtn){//同一个对象

return null;

}

if(frBtn.getVal() != toBtn.getVal()){//值不符合

return null;

}

var fr_point:Point = frBtn.getPoint();

var to_point:Point = toBtn.getPoint();

var points:Array = [fr_point];//目标点只有两个

//测试 0个转折点(水平或者垂直方向) 是否能通过

if(isPass(fr_point,to_point,frBtn,toBtn)){

points.push(to_point);

return points;

}

//测试 1个转折点是否能通过

var p1:Point = new Point(fr_point.x,to_point.y);//转折点 1

var p2:Point = new Point(to_point.x,fr_point.y);//转折点 2

if(isPass(fr_point,p1,frBtn,toBtn) &&

isPass(p1,to_point,frBtn,toBtn)){// 转折点 1 可以无障碍的连接两点points.push(p1);

points.push(to_point);

return points;

}

if(isPass(fr_point,p2,frBtn,toBtn) &&

isPass(p2,to_point,frBtn,toBtn)){// 转折点 2 可以无障碍的连接两点points.push(p2);

points.push(to_point);

return points;

}

//测试 2个转折点是否能通过

//两个 x轴相等或两个 y轴相等

var i:int;

var j:int;

var first_p:Point;//第1个连接点

var second_p:Point;//第2个连接点

var btns:Array = getGameInstant().getBtns();

// →

for(i = fr_point.x+1;i < Game.NUM_X + 2;i++){

if(btns[i][fr_point.y] == null){//无障碍

first_p = new Point(i,fr_point.y);//第1个连接点

second_p = new Point(i,to_point.y);//第2个连接点

if(isPass(to_point,second_p,frBtn,toBtn) &&

isPass(first_p,second_p,frBtn,toBtn)){

points.push(first_p);

points.push(second_p);

points.push(to_point);

return points;

}

}else{

break;

}

}

// ←

for(i = fr_point.x-1;i >= 0;i--){

if(btns[i][fr_point.y] == null){//无障碍

first_p = new Point(i,fr_point.y);//第1个连接点

second_p = new Point(i,to_point.y);//第2个连接点

if(isPass(to_point,second_p,frBtn,toBtn) && isPass(first_p,second_p,frBtn,toBtn)){

points.push(first_p);

points.push(second_p);

points.push(to_point);

return points;

}

}else{

break;

}

}

// ↓

for(i = fr_point.y+1;i < Game.NUM_Y + 2;i++){

if(btns[fr_point.x][i] == null){//无障碍

first_p = new Point(fr_point.x,i);//第1个连接点

second_p = new Point(to_point.x,i);//第2个连接点

if(isPass(to_point,second_p,frBtn,toBtn) && isPass(first_p,second_p,frBtn,toBtn)){

points.push(first_p);

points.push(second_p);

points.push(to_point);

return points;

}

}else{

break;

}

}

// ↑

for(i = fr_point.y-1;i >= 0;i--){

if(btns[fr_point.x][i] == null){//无障碍

first_p = new Point(fr_point.x,i);//第1个连接点

second_p = new Point(to_point.x,i);//第2个连接点

if(isPass(to_point,second_p,frBtn,toBtn) && isPass(first_p,second_p,frBtn,toBtn)){

points.push(first_p);

points.push(second_p);

points.push(to_point);

return points;

}

}else{

break;

}

}

return null;

}

//判断两点之间在水平或者垂直方向是否能通过

private static function

isPass(fr_point:Point,to_point:Point,fr_btn:MyButton,to_btn:MyButton) :Boolean{

var btns:Array = getGameInstant().getBtns();

var i:int;

//直线—

if(fr_point.y == to_point.y){

// →

for(i = fr_point.x;i <= to_point.x;i++){

if(btns[i][fr_point.y] == fr_btn || btns[i][fr_point.y] == to_btn){

continue;

}

if(btns[i][fr_point.y]){//有障碍

return false;

}

}

// ←

for(i = fr_point.x;i >= to_point.x;i--){

if(btns[i][fr_point.y] == fr_btn || btns[i][fr_point.y] == to_btn){

continue;

}

if(btns[i][fr_point.y]){//有障碍

return false;

}

}

return true;

}

//竖线 |

if(fr_point.x == to_point.x){

// ↓

for(i = fr_point.y;i <= to_point.y;i++){

if(btns[fr_point.x][i] == fr_btn || btns[fr_point.x][i] == to_btn){

continue;

}

if(btns[fr_point.x][i]){//有障碍

return false;

}

}

// ↑

for(i = fr_point.y;i >= to_point.y;i--){

if(btns[fr_point.x][i] == fr_btn || btns[fr_point.x][i] == to_btn){

continue;

}

if(btns[fr_point.x][i]){//有障碍

return false;

}

}

return true;

}

return false;

}

3.5流程逻辑

本次游戏设计的处理流程如下图所示

3.6接口

3.6.1外部接口

A、用户界面

本软件的屏幕格式,按钮格式,输入输出方式等都是完全按照人性化的设计,方便用户执行各种操作。

各个按钮简单明了,互动性强,适用于各类人群。

用户通过主界面的按钮进行游戏的控制,同时系统返回一个信息。

B、硬件接口

本软件产品的用户需要通过键盘及鼠标进行操作,进入主界面后点击相应的按钮,进行规定的键盘操作,然后分别在主界面有相应的动作反应。

3.6.2内部接口

内部模块之间的接口是通过内部函数完成,在程序设计中用设计软件本身所带的调用函数实现。

3.7注释设计

在本程序中安排的注释:

a.加在类首部的注释;

/**

* XX类

*/

b.加在各函数首部的注释;

/**

* XX函数

*/

c.对各变量的功能、范围、缺省条件等所加的注释等。

//

3.9限制条件

本游戏操作平台简单,适合于各种操作系统。基本无限制条件。

3.10尚未解决的问题

1.没有解决死局的问题。

2.没有实现提示的功能。

3.没有实现重排的功能。

连连看游戏毕业设计

连连看游戏毕业设计 【篇一:连连看游戏的设计与实现本科生毕业论文】 毕业论文(设计) 论文(设计)题目 院系名称 专业(班级) 姓名(学号) 指导教师 系负责人 完成时间连连看游戏的设计与实现 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下 进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方 外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过 贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期:

使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定, 即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学 校有权保存 毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以 采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为 目的前提下, 学校可以公布论文的部分或全部内容。 作者签名:日期: 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究 所取得的研究成果。除了文中特别加以标注引用的内容外,本论文 不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的 研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本 人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同 意学校保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或 部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等 复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日

系统详细设计说明书

文档标题 文档编号BH-CSD-003 版本V1.0 密级商密 A 研发生产中心项目名称全科医生专家咨询系统 项目来源 系统详细设计说明书 (V1.0 ) 南京毗邻智慧医疗科技有限公司 二○一三年十一月

文档变更记录 序号变更( +/- )说明作者版本号日期批准1 创建Steve.ma V1.0 2013.11.15 1 引言.......................................................................... (3) 1.1 编写目 的 ......................................................................... (3) 1.2 背 景 .......................................................................... (3) 1.3 定 义 .......................................................................... (3) 1.4 参考资 料 ......................................................................... (4) 2 平台安全体系与程序系统的结构........................................................................................ (4) 2.1 平台安全体 系 ........................................................................ (4) 2.2 程序系统结 构 ........................................................................ (5) 3 程序设计说 明 ........................................................................... (5) 3.1 程序描 述 ......................................................................... (5) 功能及其接 口 ........................................................................

连连看游戏设计

中南林业科技大学 《数据结构课程设计》报告必做题:连连看游戏 选做题: 姓名: 学号: 专业班级:软件工程1班 学院:计算机与信息工程学院 指导老师:

签名: 2017年1 月10 日 目录 一、连连看问题.............................. 错误!未定义书签。 1.1需求分析.................................... 错误!未定义书签。 ............................................. 错误!未定义书签。 ............................................. 错误!未定义书签。 1.2系统设计.................................... 错误!未定义书签。 1.2.1 程序流程图 ............................. 错误!未定义书签。 1.2.2 程序组成 ............................... 错误!未定义书签。 1.3调试测试.................................... 错误!未定义书签。 1.3.1测试用例................................ 错误!未定义书签。 1.3.2测试结果................................ 错误!未定义书签。 1.3.3存在问题................................ 错误!未定义书签。 1.3.4改进设想................................ 错误!未定义书签。

连连看游戏--详细设计说明书

基于FLEX开发的连连看游戏详细设计说明书 [V1.1.0] 学院名称:湖南软件职业学院 专业名称:软件技术专业 组员:虢威、孙庆龙、段志辉、罗奇 指导老师:危孟君

1引言 (3) 1.1编写目的 (3) 1.2背景 (3) 1.3定义 (3) 1.4参考资料 (3) 2程序系统的结构 (3) 3程序(标识符)设计说明 (4) 3.1程序描述 (4) 3.2功能 (4) 3.3性能 (5) 3.3.1精度 (5) 3.3.2时间特性要求 (5) 3.3.3灵活性 (5) 3.4算法 (5) 3.4.1地图的生成 (5) 3.4.1寻路算法 (7) 3.5流程逻辑 (12) 3.6接口 (13) 3.7注释设计 (14) 3.9限制条件 (14) 3.10尚未解决的问题 (14)

详细设计说明书 1引言 1.1编写目的 详细设计说明书对连连看游戏的总体设计和各个模块的功能、性能、输入输出、算法、接口、程序逻辑、存储分配及其它给出了详细的设计方案,为软件开发制定详细的计划,同时也提交系统分析员,由其提出意见。这是程序员开发及未来测试烦人重要文档资料。 1.2背景 a.开发软件名称:基于FLEX开发的连连看 b.项目开发小组成员:虢威、孙庆龙、段志辉、罗奇 c.用户:所有喜欢玩这个游戏的玩家 d.项目开发环境:Windows XP + Flash Builder4 + ActionScript 3.0。 1.3定义 连连看项目详细设计方案。 1.4参考资料 (1)《软件工程案列开发与实践》,刘竹林等,清华大学出版社 (2)《IT项目管理》,曾鸿、毛志雄等,中国铁道出版社 (3)《ActionScript 3.0编程精髓》,Colinn Moock(美),机械工业出版社 (4)《Flex 3 Cookbook》,(美)诺布尔(美)安德森,电子工业出版社 2程序系统的结构 本次所设计连连看游戏的程序主结构如图2-1所示。

JAVA实验报告3-“连连看”游戏程序设计

目录 一、实验目的与要求 (2) 二、实验方案 (2) 三、实验结果和数据处理 (3) 四、结论 (20) 五、问题与讨论 (20)

一、实验目的与要求 (1)实验目的:通过在指定的窗口界面完成“连连看”小游戏程序的编写和调试,加深对面向对象程序设计的理解。 (2)实验要求:按照Java程序设计教程的要求完成第三章中“连连看”游戏程序的编写和调试。 二、实验方案 定义了一个lianliankan类,实现了接口ActionListener: ①main()方法:主函数; ②actionPerformed()方法,用来实现重来一局按钮的响应事件; ③go()方法:初始化界面,排列图形; ④ex()方法:设置“退出游戏”窗体界面; ⑤suiji()方法:产生随机数,来填充游戏界面对应的数组的各个位置; ⑥chonglie()方法:当无符合条件的图形可消去时,需要重新排列图形; ⑦ling()方法:将数组中为零的成员所对应的按钮消去(设为不可见); ⑧wei()方法:判断并记录每次单击按钮的一些信息; ⑨xiao()方法:判断两个按钮在对应数组元素的值相同时能不能消去。

三、实验结果和数据处理 整个游戏最重要的方法,xiao()方法,用来判断两个按钮在对应数组元素的值相同时能不能消去: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class lianliankan implements ActionListener { JFrame mainFrame; //主面板 Container thisContainer; JPanel centerPanel,southPanel,northPanel; //子面板 JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组 JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮JLabel fractionLable=new JLabel("0"); //分数标签 JButton firstButton,secondButton; //分别记录两次被选中的按钮 int grid[][] = new int[8][7];//储存游戏按钮位置 static boolean pressInformation=false; //判断是否有按钮被选中 int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateL V; //游戏按钮的位置坐标 int i,j,k,n;//消除方法控制 public void init(){ mainFrame=new JFrame("JKJ连连看"); thisContainer = mainFrame.getContentPane();

网上购物系统——详细设计说明书

网上购物系统 详细设计说明书 1引言 1.1编写目的 电子商务是于九十年代初,在欧美兴起的一种全新的商业交易模式,它实现了交易的无纸化,效率化,自动化表现了网络最具魅力的地方,快速的交换信息,地理界限的模糊,这所有的一切也必将推动传统商业行为在网路时代的变革。随着电子商务,尤其是网上购物的发展,商品流通基础设施和配套行业的重点将会将对中国商品流通领域和整个经济发展带来种种影响,确实值得我们认真研究。特别是在全球经济一体化的国际背景下,在我们继续扩大国内流通领域对外开放的同时,深入研究这个问题,审慎制订相应的宏观对策,尤其重要和迫切。网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。 1.2.项目背景 软件名称:网上购物系统 开发者:宋金德,袁浩,王朝阳,许威 项目简介:本系统主要实现网上产品展示与在线定购及人员的管理, 一、不同身份有不同的权限功能(管理人员、注册用户、游客) 二、在线产品展示(分页显示) 三、在线定购 四、后台管理(用户管理、商品的管理) 1.3定义 Asp(active server pages)是微软公司推出的一种用以取代CGI的技术,基于目前绝大多数网站应用于windows平台,asp是一个位于windows服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的交互式的web服务器应用程序以及EDI(电子数据交换)。 ADO:ActiveX Data Object, ActiveX 数据对象 SQL:Structured Query Language 1.4参考资料 [1] 谭浩强《动态网页制作ASP》北京电子工业出版社. 2001 [2] 彭万波《网页设计精彩实例》北京电子工业出版社.2002

LabVIEW连连看课程设计报告

成绩评定表

课程设计任务书

目录 1目的及基本要求 (1) 2 连连看设计原理 (2) 3连连看设计和仿真 (2) 3.1 主程序设计 (2) 3.2 子程序详细设计 (3) 3.3 设计中遇到的问题 (10) 4 结果及性能分析 (11) 4.1 运行结果 (11) 4.2 性能分析 (11) 参考文献 (12)

1目的及基本要求 虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。灵活高效的软件能帮助您创建完全自定义的用户界面,模块化的硬件能方便地提供全方位的系统集成,标准的软硬件平台能满足对同步和定时应用的需求。这也正是NI近30年来始终引领测试测量行业发展趋势的原因所在。只有同时拥有高效的软件、模块化I/O硬件和用于集成的软硬件平台这三大组成部分,才能充分发挥虚拟仪器技术性能高、扩展性强、开发时间少,以及出色的集成这四大优势。LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器集成环境)是一种图形化的编程语言(又称G语言),它是由美国NI公司推出的虚拟仪器开发平台,也是目前应用最广、发展最快、功能最强的图形化软件集成开发环境。使用这种语言编程时,基本上不用写程序代码,取而代之的是程序框图。 虚拟仪器(VI) 的概念虚拟仪器[1](virtual instrument)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。上面的框图反映了常见的虚拟仪器方案。尽可能采用了通用的硬件,各种仪器的差异主要是软件。同时可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。 熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器原理、设计方法和实现技巧,运用专业课程中的基本理论和实践知识,采用LabVIEW开发工具,实现电子时钟的设计和仿真。要求通过本课程设计使学生熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器设计原理、设计方法和实现技巧,使学生掌握通信系统设计和仿真工具,为毕业设计做准备,为将来的学习及今后从事科学研究、工程技术工作打下较坚实的基础。

系统软件详细设计说明书

系统软件详细设计说明书 1.引言 1.1编写目的 本详细设计说明书是针对网络信息体系结构的课程作业而编写。目的是对该项目进行详 细设计,在概要设计的基础上进一步明确系统结构,详细地介绍系统的各个模块,为进行后面的实现和测试作准备。本详细设计说明书的预期读者为本项目小组的成员以及对该系统感兴趣,在以后想对系统进行扩展和维护的人员。 2.系统的结构 ui :系统界面部分,负责接受用户输入,显示系统输出,负责其他模块功能的协调调用,并含有站内搜索功能,即在用户指定的已打开的ftp站点中搜索用户需要的资源。ui 部分调用common部分的功能读取xml文件中保存的界面元素属性信息,用户最近访问过的10个ftp信息,用户选择的下载的ftp内容列表及其他需要通过xml文件保存的信息。 client :实现ftp客户端的功能,ftp连接,ftp上传及下载:上传或下载用户指定的

资源,并返回相应的信息。 search: 资源实时检索部分,根据用户输入的资源名称关键字,资源类型和选择的检索方式检索用户需要的资源,并验证资源的可用性,返回可用资源及其大小,速度等相关信息。 preview :资源预览部分,显示用户选择的资源的部分内容,以使用户决定是否需要该资源。 preview部分调用comm on部分读取属性文件的内容亦显示预览资源内容的显示格式。 3.模块1(ui )设计说明 3.1 模块描述实现用户界面的包,含有11个文件51 个类,是本系统中最复杂的代码。 3.2 功能负责接受用户输入,显示系统输出,其他模块功能的协调调用,并含有站内搜索功能,即在用户指定的已打开的ftp 站点中搜索用户需要的资源。 3.3 交互的模块 client ,search ,preview ,common。 3.4 模块设计该模块中的主要文件,文件中包含的主要类及其功能和与其它包的交互如下: MainFrame.java :MainFrame 是含有主函数的类,也是lyra 客户端开始执行的类,它先后进行资源的初始化,显示主界面等工作,根据屏幕大小设置界面大小,设置界面的观感。 FtpFrame_AboutBox.java: 显示关于窗口的类,当用户点击帮助菜单中的关于菜单项时会 弹出关于对话框。 Tools.java :FileTools 是文件操作辅助类,可以实现文件的递归删除等。 XMLController.java: JDOMTes是操作xml文件的类,用JDOM来操作xml文件, 实现的功能有: (1)保存ftp 服务器的文件列表(站内搜索时使用),递归的从ftp 服务器读取列表,并存入一个xml文件中(文件的命名方法是:ip+用户名.xml);以目录树的形式保存。 (2)根据文件名在文件中查找文件,站内搜索时使用。 (3)保存ftp 服务器的信息:ip ,端口(默认端口21 不保存),用户名(默认anonymous 不保存),密码,最多存10 个;存在resource\settings\ serversinfor.xml 文件中。 (4)读取已存储的ftp 服务器信息。 (5)从type.xml 读取搜索的类型。 Constants.java: 放置系统运行时使用的一些常量,initcontent ()函数对所有常量进行初始化,这个函数在MainFrame 中被调用一次。iconHashMap 是hash 表,用于存放文件的系统图标。 CustomizedController.java :包含自定义的控件类,java 中的控件可能不能满足需求,需要自己定义某些属性。这些控件会在创建界面时使用。其中含有的类有: (1)CustomizedJTable 是表格类,设置表格的某些属性,如字体等。 (2)CustomizedTableCellRenderer 是表格单元格绘制器类,主要用于显示文件的系统图标,和文件名。 (3)LeftPanel类的父类是JTabbedPane,用户显示主窗口左边的面板。 (4)RightPanel 类的父类是JPanel ,用户显示右边的主题部分,包括右上边的搜索及服务 器选项,和中间的显示服务器文件的TabbedPane。. (5)BottomPanel 类是右下放显示下载和服务器信息的JTabbedPane。 (6)CustomizedJButton 是定义按钮类,更改了按钮的字体,java 本身默认的字体不好看。 (7)CustomizedTableModel 是表格类,实现单元格的不可编辑。 (8 )CustomizedTableCellRenderer_Remote 类是表格绘制器,在远程文件浏览 器RemoteFilesPanel 使用,用于显示文件名和文件图标。

连连看游戏设计

连连看游戏设计 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

中南林业科技大学 《数据结构课程设计》报告必做题:连连看游戏 选做题: 姓名: 学号: 专业班级:软件工程1班 学院:计算机与信息工程学院 指导老师: 签名: 2017年 1 月10 日 目录

一、连连看问题 问题描述 该游戏对一堆图案中相同的图案进行配对,点击开始按钮后,要求在一定的时间内完成对所有的图片配对,玩家每次选择两个图形,如果两图形相同,且这两个图形之间存在少于2个拐角的连通路径,则可以消除这两个图形。成功消除一对图片则计分板会增加10分,对应的时间增加3秒。要求各类类型的图片个数为偶数个,途中若有玩家找不到可以匹配的图片时可以点击提示按钮,由系统提示出一对可以消除的图片,通过玩家的点击可以消除。当所有的图片消除时,系统提示消息为“恭喜你,通关了”,如果没有在规定时间完成所有图片的配对,则系统提示为“游戏结束”。 基本要求 (1)生成游戏初始局面; (2) 每次用户选择两个图形,如果图形能满足一定条件(如果两个图形一样,且这个两个图形直接存在少于 2个弯的拐角),则两个图形都能消掉。给定具有相同图形的任意两个格子,我们需要寻找这两个格子之间在转弯少的情况下,经过格子数目少的路径。如果这个优路径的转弯数目少于 2,则这个两个格子可以消去; (3)判断游戏是否结束。如果所有图形全部消去,游戏结束;

(4) 判断死锁,当游戏玩家不可能消去任意两个图像的时候,游戏进入“死锁”状态。 设计思想 判断两个图形可以消除的条件是:两个图形必须相同,它们之间存在着0个拐角,或1个拐角,亦或是2个拐角可以互相连通消除,否则,消除不了。 广度优先搜索的具体实现:如果两个图形可以通过0个拐角连通,则从第一个选中的图片一次向右,向下,向左,向上搜索可以和当前选中图片消除的另一图片,当搜索到与之相同的图片时,则与之消去;图片布局刷新; 如果两个图片之间存在1个拐角可以消去,则广度搜索从当前图片出发,向左,右上下一次寻找一个路径节点(没有图片的点),使得寻找到的路径节点可以与选中的图片一线连通,并且可以与第二次选中的图片一线连通,则可以判断为可消除图片;图片布局重新刷新; 如果连个图片之间存在两个拐角可以连通,则分为两种情况:一种是两个图片在矩形区域的最外沿,则通过判断是否存在一条线使得在两待消除的图片周围一个单位,若存在则消去。二是两图片在矩形区域内部,则在两待消除的图片水平方向和垂直方向上寻找另外两个中间点能使两中间点之间连通,并且其中一个中间点能和待消图片1一线连通,另一中间点能和待消图片2一线连通,如若找到这样的点,则判断两图片能消去,找不到则不能消去。 需求分析 (1) 初始化游戏界面 该部分主要由执行窗口创建函数及游戏地图加载函数来实现。通过数据的初始化及游戏地图资源的加载为用户呈现一个游戏初始的界面。 (2) 图片的选择

游戏设计说明书-认识数字

软件设计说明书 基于Cocos2D-X的儿童教育类游戏——认识数字的设计与实现 深圳童心教育科技有限公司

20 16 年11 月

摘要 本次软件设计为一个基于Cocos2D-X的儿童教育游戏,通过玩这个游戏,教小孩子认识数字,学习数字之间的大小关系,通过找缺失数字,学习数字的同时培养观察力。本次设计的语言为C#,选择因为C#这一门语言是因为C#操作简单不复杂,无内存。对于游戏中的道具存储方式为列表,一个个存储之后再读取,涉及的截图存储以及查看功能是用一个文件流存储在设备的内存中,游戏的动画是用flash制作完成之后,转为swf解析json,然后在程序中调用动画。本次的设计模式主要为外观模式,设计好接口统一调用。 关键词:Cocos2D-X,跨平台,C#,json,列表,设计模式

ABSTRACT The software design for a Cocos2D-X based on the education of children through the game, play the game, teach children to recognize the numbers, size relations between digital learning, through to find the missing number, at the same time learning digital observation. The design of the language for the C#, because the choice of the C# language because C# is simple and not complicated, no memory. For storage in the game props for the list, after a storage and read, to store and view screenshot function is a file stream stored in the device memory, game animation is produced with flash, swf to parse JSON, then call in the program of animation. The main design patterns for the appearance of the model, the design of a unified interface call. Keywords:Cocos2D-X, cross platform, C#, JSON, list, design pattern.

软件系统详细设计说明书模板

xxxxx系统详细设计说明书

版本历史

修改记录

目录 1引言 (5) 1.1编写目的 (5) 1.2背景 (5) 1.3参考资料 (5) 1.4术语定义及说明 (5) 2设计概述 (5) 2.1任务和目标 (5) 2.1.1需求概述 (5) 2.1.2运行环境概述 (5) 2.1.3条件与限制 (6) 2.1.4详细设计方法和工具 (6) 3系统详细需求分析 (6) 3.1详细需求分析 (6) 3.2详细系统运行环境及限制条件分析接口需求分析 (6) 4总体方案确认 (6) 4.1系统总体结构确认 (6) 4.2系统详细界面划分 (7) 4.2.1应用系统与支撑系统的详细界面划分 (7) 4.2.2系统内部详细界面划分 (7) 5系统详细设计 (7) 5.1系统程序代码架构设计 (7) 5.1.1UI(User Interface)用户界面表示层 (7) 5.1.2BLL(Business Logic Layer)业务逻辑层 (8) 5.1.3DAL(Data Access Layer)数据访问层 (8) 5.1.4Common类库 (8) 5.1.5Entity Class实体类 (8) 5.2系统结构设计及子系统划分 (8) 5.3系统功能模块详细设计 (9) 5.3.1XX子系统 (9) .1XX模块 (9) 列表和分页 (9) 创建XX (9) .2XX模块 (9) XX列表 (9) XX修改 (9) 5.3.2XX子系统 (9) 5.3.6.1用户管理模块 (9) 5.3.6.2角色管理模块 (14) 5.3.6.3系统设置模块 (14) 5.3.6.4系统登录注销模块 (14) 5.4系统界面详细设计 (14) 5.4.1外部界面设计 (14) 5.4.2内部界面设计 (14) 5.4.3用户界面设计 (14) 6数据库系统设计 (14) 6.1设计要求 (14) 6.2信息模型设计 (14) 6.3数据库设计 (14) 6.3.1设计依据 (14)

JAVA课程设计—连连看

Java 课程设计报告 (一):前言: 随着计算机的快速发展,计算机的应用范围越来越广。其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、体育等各个领域,也应用到了娱乐方面。让人们在业余时间来放松心情。 (二):内容: 1:实验课题:连连看小游戏的开发设计 2:实验任务:完成游戏的运行 3:功能需求和分析: 本程序将涉及一款单机小型连连看游戏,该程序具备以下的功能:(1)该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。方块上随 机分布一些数字,数字的要求是至少两两相同,位置随机打乱。(2)游戏规则是将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则视为无效,若连接一对成功就 消失于界面,继续游戏,直到游戏结束。 (3)帮助:游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。 (4)退出游戏:可点击左下方“退出游戏”按钮,结束游戏。(5)该游戏纯属个人小型休闲游戏。

(三):代码设计 连连看java源代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class lianliankan implements ActionListener { JFrame mainFrame; //主面板 Container thisContainer; JPanel centerPanel,southPanel,northPanel; //子面板 JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组 JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮 JLabel fractionLable=new JLabel("0"); //分数标签 JButton firstButton,secondButton; //分别记录两次被选中的按钮 int grid[][] = new int[8][7];//储存游戏按钮位置 static boolean pressInformation=false; //判断是否有按钮被选中 int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标int i,j,k,n;//消除方法控制 public void init(){ mainFrame=new JFrame("JKJ连连看"); thisContainer = mainFrame.getContentPane(); thisContainer.setLayout(new BorderLayout()); centerPanel=new JPanel(); southPanel=new JPanel(); northPanel=new JPanel(); thisContainer.add(centerPanel,"Center"); thisContainer.add(southPanel,"South"); thisContainer.add(northPanel,"North"); centerPanel.setLayout(new GridLayout(6,5)); for(int cols = 0;cols < 6;cols++){ for(int rows = 0;rows < 5;rows++ ){ diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1])); diamondsButton[cols][rows].addActionListener(this); centerPanel.add(diamondsButton[cols][rows]); } } exitButton=new JButton("退出"); exitButton.addActionListener(this); resetButton=new JButton("重列"); resetButton.addActionListener(this); newlyButton=new JButton("再来一局");

基于Android的连连看游戏设计

本科毕业论文(设计) 题目:基于Android的连连看游戏设计 学生:李超学号: 201040620175 学院:物理与电子科学学院专业:电子信息科学与技术入学时间: 2010 年 9 月 13 日 指导教师:王森职称: 完成日期: 2014 年 4 月 18 日

摘要 手机游戏是一款在手机或者平板电脑上运行的游戏软件。随着移动互联网和科技的发展,移动终端设备得到了广泛的应用,在日常生活中,人们越来越离不开它。在此基础上,手机游戏得到了很大的发展。android手机就是在此基础上产生的,它是由Google公司推出的一款基于Linux内核的开源手机操作系统,由于其具有开放性、不受运营商的束缚、丰富的硬件选择、开发商不受任何限制和能无缝结合优秀的Google 应用的特点。再加上手机游戏的娱乐性、随意性,更是有了很大的发展空间。 本文就是在对android 手机游戏的研究基础上,开发了一款特别有趣的游戏---连连看。通过对游戏需求的分析,确定了连连看要实现的功能,通过对游戏界面布局、音效控制、动画设置、数据模型等研究,设计出了一款界面清新,有趣的一款简单的手机游戏,希望能为大家的日常生活带来一点乐趣,是人们生活更加快乐,心情愉悦。通过这次连连看游戏的设计,我对Android产生了更加浓厚的兴趣,并且从中看到了Android游戏的发展前景,相信Android的发展前景会越来越好。 关键字:手机游戏Android 连连看 ABSTRACT Mobile game is game software which is run on a mobile phone or a tablet. With the development of Internet and science and technology, mobile terminal equipment has been widely used and is indispensable in People's Daily life.Based on this , the mobile phone games got great development. Android is produced on the basis of this.It is a a open source operating system produced by Google company ,and which based on the Linux kernel.Due to its openness, free from all bondage of operators, rich hardware selection, developers are not subject to any restrictions and combine with excellent characteristics of Google apps closely. In addition to the entertainment of mobile games , optional, it has a very big development space. This article is based on the study of android mobile games, has developed a very

贪吃蛇游戏详细设计说明书

详细设计说明书 1 引言 1.1 编写目的 本说明书在概要设计的基础上,对贪吃蛇游戏的各模块、程序、子系统分别进行了实现层面上的要求和说明。软件开发小组的产品实现人员阅读和参考本说明进行代码的编写和测试。 本说明书预期的读者是软件开发小组的产品实现人员。 1.2 背景 说明: 系统名称:贪吃蛇游戏 任务提出者:手机策划人员 开发者:软件开发小组的产品实现人员 用户:NOKIA手机用户 运行该程序系统的计算中心:NOKIA手机芯片 1.3 定义 1.节: 一条蛇可以看成由许多正方形的“小格子”拼凑成,称作节。节是蛇身上最小的单位。 2.链表: 用来保存每一段的状态,链表的元素单位是节。且链表的第一个元素表示蛇的头部。 3.坐标系: 以左上角那点为(0,0),向右则x递增,向下则y递增。 1.4 参考资料 张海藩:《软件工程导论》第五版清华大学出版社 肖刚等:《实用软件文档写作》清华大学出版社

2 程序系统的组织结构 2.1每个模块和子程序的名称、标识符: 1Ground类: 1)private int TYPE; 2)public int[][] rocks=new int[Global.WIDTH][Global.HEIGHT]; 3)public void setGround(int type){} 根据不同的Type值将rocks的不同下标的元素设为1,其他元素为0。 4)public boolean isSnakeEatRock(Snake snake){} 判断蛇头的所在的位置在数组rocks中的值是否为1,如果是1,则表示蛇吃 到了石头,返回TRUE,否则返回FALSE。 5)public Point getPoint(){} 产生一组随机数(x,y),是食物的坐标 6)public void drawMe(Graphics g){} 将数组rocks中值为1的元素填充为石头颜色。 2Snake类: 1)public static int x,y; 2)private int oldDirection,newDirection; 用于判断newDirection和oldDirection是否为相反方向,用于选取有效方向。 3)private Point oldTail; 用于判断蛇头是否和蛇身的某个节点的坐标重合,即蛇是否吃到自己。 4)public LinkedList body=new LinkedList(); 5)public void die(){} 设置变量life=FALSE;使控制进程的条件为假,进程结束。 6)public void move(){} 实现蛇身沿着蛇头的轨迹移动 7)public void changeDirection(int direction){} 根据方向键,改变蛇头的x、y的值,即改变方向 8)public void drawMe(Graphics g){}//把属于蛇的格子画出来 9)private class SnakeDriver implements Runnable{}//蛇不停走动 3Food类: 1)public void drawMe(Graphics g){} 根据产生的一组随机坐标,在其坐标处画出食物 4Controller类: 功能:处理按键事件及鼠标点击事件,处理逻辑。根据不同的情况向Snake,Food,Ground发出不同的命令。 实现接口snakeMoved,蛇每移动一步,就要判断一次,蛇是否吃到石头、是否吃到自己,是的话就snake.die()并停止计时;不是则不进行任何操作。如果吃到食物,就要加分、重画食物、蛇身加长。 实现(N)NewGame功能、(E)Exit功能、(R)Resume功能、(L)LowLevel功能、(H)HighLevel功能、(P)Pause功能。 5GamePanel类: 功能:画出Snake,Food,Ground,并实现重新显示

系统详细设计说明书

XXXXXX XXXXXXXXXXXXX 项目名称 详细设计说明书 XXX公司 二〇XX年X月

文档修改记录

目录 第一章引言............................................. 错误!未定义书签。 目的............................................. 错误!未定义书签。 背景............................................. 错误!未定义书签。 术语定义......................................... 错误!未定义书签。 参考资料......................................... 错误!未定义书签。第二章系统概述......................................... 错误!未定义书签。第三章程序1设计说明................................... 错误!未定义书签。 程序描述......................................... 错误!未定义书签。 模块架构图 ................................... 错误!未定义书签。 功能 ......................................... 错误!未定义书签。 类图 ......................................... 错误!未定义书签。 增加功能(功能点) ........................... 错误!未定义书签。 程序流程 ..................................... 错误!未定义书签。 测试和限制条件 ............................... 错误!未定义书签。 备注 ......................................... 错误!未定义书签。第四章程序2设计说明................................... 错误!未定义书签。第五章公用接口程序说明................................. 错误!未定义书签。 全局变量......................................... 错误!未定义书签。 公用界面或接口................................... 错误!未定义书签。 公用方法和过程................................... 错误!未定义书签。第六章附件............................................. 错误!未定义书签。详细设计评审意见.......................................... 错误!未定义书签。

相关文档
最新文档