过程蓝图文档.doc
《过程蓝图文档.doc》由会员分享,可在线阅读,更多相关《过程蓝图文档.doc(65页珍藏版)》请在冰豆网上搜索。
项目综合实验报告
课程名称算法与程序设计实践
程序名称_俄罗斯方块__
实验工具_________JBTooL__________________
编程语言_________JAVA__________________
专业:
软件工程
班级/学号:
软工1202/
学生姓名:
rouforever
成绩_______________________
指导教师________________
完成日期_______________________
程序设计说明书
1.引言
1.1编写目的
游戏是用来给大家娱乐的,所以要能在使用的过程中给大家带来快乐,消除大家的疲劳
1.2项目背景
之所以选择开发俄罗斯方块游戏,无可争议,《俄罗斯方块》是有史以来最伟大的游戏之一。
在曾经发布过的所有游戏中,《俄罗斯方块》还被认为是仅有的一个能够真正吸引广泛人群的作品。
1.3定义
我们在设计过程中主要用到的控件有:
command控件,image控件,picture控件,label控件,timer控件,text控件,windowsmediaplayer控件等等。
1.4参考资料
无
1.5人员及分工
一人完成
2.总体设计
2.1需求概述
在个人电脑日益普及的今天,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一,它以其趣味性强,易上手等诸多特点得到了大众的认可,因此开发此游戏软件可满足人们的一些娱乐的需求。
此俄罗斯方块游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的俄罗斯方块游戏。
2.2程序结构
俄罗斯方块游戏
游戏区
游戏控制
显示玩家操作
显示操作结果
开始
暂停/继续
提高等级
退出
降低等级
2.3程序功能
游戏控制模块
开始游戏
暂停游戏
初始级别设置
退出游戏
3.程序描述
游戏中玩家可以做的操作有:
1.以90度为单位旋转方每一格块。
2.以格子为单位左右移动方块,让方块加速落下。
3.方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在区域上方开始落下。
4.当区域中某一列横向格子全部由方块填满,则该列会自动消除并成为玩家的得分。
同时删除的列数越多,得分指数上升。
5.当固定的方块堆到区域最上方,则游戏结束。
3.1功能
暂停,开始游戏,提高降低级数。
3.3输入项目
主要实现的功能
我们开发的俄罗斯方块游戏,主要实现了以下几种功能:
1.可以灵活控制方块在图形框中运动。
2.游戏过程中方块可以自由旋转。
3.当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行。
4.游戏前可以选择游戏的速度和游戏的等级,游戏速度既为方块下落速度,游戏等级为初始游戏时在基层随机生成一定行数的无规律方块,生成的行数由你来选择,每行至少产生5个以上的无规律方块,这样增加了游戏难度,对于游戏高手来说,无疑不是一个新的挑战。
5.游戏的得分支持积分,并且按照公式:
得分=原来分数+100*(2^同时消除的行数-1)
这样,你同一时间消除的行数越多,你的得分也就越高,当游戏积分到了一定时可以自动升级,这个升级指速度升级。
6.游戏中提供了一个漂亮的场景和动听的音乐,给你带来无限激情。
3.5算法
是俄罗斯方块的关键矩阵。
其中,第一维的18,前16个整数表示4*4的方块的形状,后两个变量,表示该形状所占的宽度和高度,以免方块出界了。
第二维中的4表示方块的4个方向的旋转。
第三维中的7表示方块的7中基本形状。
所有情况的方块写到一数组里,作为一常量,以备调用。
例如:
for(i=0;i<4;i++)
grid[height][i+colum]+=shape[shp][loop][i];
for(i=4;i<8;i++)
grid[height+1][i+colum-4]+=shape[shp][loop][i];
for(i=8;i<12;i++)
grid[height+2][i+colum-8]+=shape[shp][loop][i];
for(i=12;i<16;i++)
grid[height+3][i+colum-12]+=shape[shp][loop][i];
其中,grid[][],就是整个画面的情况,用0和1表示,1表示有格子,0表示没有格子,上述的程序段表示,在第height行colum列显示shape形状的方块。
方块的变形就是改变第一维的值了,方块的旋转就是改变第而维的值了。
【采用过程蓝图的ACSD/ALSD/AISD详细描述各个模块在概念、逻辑和实现三个不同抽象层次的算法过程模型】
项目开发总结报告
1引言
1.1编写目的
说明编写这份项目开发总结报告的目的,指出预期的阅读范围。
1.2背景
说明:
a.本项目的名称和所开发出来的软件系统的名称;
b.此软件的来源或任务提出者、开发者、用户及安装此软件的计算中心。
1.3定义
列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
1.4参考资料
列出收集和用到的参考资料,如:
a.程序代码及文档的来源及出处;
b.为完成本项目所收集和自学的资料;
c.本文件中各处所引用的文件、资料,包括所要用到的软件开发标准。
列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
2实际开发结果
2.1产品
说明最终制成的产品,包括:
a.程序系统中各个程序的名字,它们之间的层次关系,以千字节为单位的各个程序的程序量、存储媒体的形式和数量;
b.程序系统共有哪几个版本,各自的版本号及它们之间的区别;
c.每个文件的名称;
d.所建立的每个数据库。
如果开发中制订过配置管理计划,要同这个计划相比较。
2.2主要功能和性能
逐项列出本软件产品所实际具有的主要功能和性能,对照可行性研究报告、项目开发计划、功能需求说明书的有关内容,说明原定的开发目标是达到了、未完全达到、或超过了。
2.3基本流程
用图给出本程序系统实际的基本处理流程。
2.4研制过程与进度
详细描述开发程序的完整过程,包括开发的各个阶段、制品、活动,并画出开发流程图;列出原定计划进度与实际进度的对比,明确说明,实际进度是提前了、还是延迟了,分析主要原因。
2.5费用
列出原定计划费用与实际支出费用的对比,包括:
a.工时,以人月为单位,并按不同级别统计;
b.计算机的使用时间,区别CPU时间及其他设备时间;
c.物料消耗、出差费等其他支出。
明确说明,经费是超出了、还是节余了,分析其主要原因。
3开发工作评价
3.1对生产效率的评价
给出实际生产效率,包括:
a.程序的平均生产效率,即每人月生产的行数;
b.文件的平均生产效率,即每人月生产的千字数;
并列出原订计划数作为对比。
3.2对产品质量的评价
说明在测试中检查出来的程序编制中的错误发生率,即每干条指令(或语句)中的错误指令数(或语句数)。
如果开发中制订过质量保证计划或配置管理计划,要同这些计划相比较。
3.3对技术方法的评价
重点给出对在开发中所使用的模型驱动程序技术、方法、工具的效果评价。
3.4对主动学习的评价
给出为完成项目开展主动学习的内容、主动学习方法及学习效果评价。
3.5对团队合作的评价
给出为完成项目是如何开展团队合作的,合作时出现了什么问题,如何解决这些问题,以及采用的高效团队协作的做法、成功经验和效果评价。
3.6碰到的问题、解决方法及建议
给出对于开发中出现的各种主要问题、原因分析及其解决方法。
请重点给出使用蓝图工具时碰到些什么问题、解决问题的做法,以及工具完善改进的建议。
4收获与体会
列出从这项开发工作中所得到的最主要的收获和体会
实现层包Block;
//类定义
类MyTimer
{
//成员方法
公共的MyTimer(BlockmyBlock)
{
调用对象.myBlock赋值myBlock;
}
//成员方法
公共的空类型运行()
{
当(myBlock.启动Sign等于1)
尝试
{
//e
sleep((10减myBlock.speedMark加1)乘100);
myBlock.重复wn();
}
捕获(Interrupted异常e)
{
系统.输出.输出字符串并换行();
}
}
}
//类定义
公共的类moxing
{
//成员变量
公共的静态的整数类型blockNumber=1;
公共的静态的字符串butLab[]={"开始游戏","重新开始","降低级数","提高级数","游戏暂停","退出游戏"};
公共的静态的Buttonbut[]=新建对象按钮[6];
公共的静态的ButtonnoStop=新建对象按钮("取消暂停");
公共的静态的布尔类型downSign=假;
公共的静态的整数类型[]game_body[][]=新建对象整数类型[19][10];
公共的静态的整数类型[]game_sign_x[]=新建对象整数类型[4];
公共的静态的整数类型[]game_sign_y[]=新建对象整数类型[4];
公共的静态的整数类型gameScore=0;
公共的静态的ImageIconicon=新建对象图像Icon("resource/Block.jpg");
公共的静态的JDialogdlg_1;
公共的静态的JFramejf=新建对象嘉窗口();
公共的静态的JMenumenu0=新建对象J菜单("游戏");
公共的静态的JMenumenu1=新建对象J菜单("帮助");
公共的静态的JMenuBarmb=新建对象J菜单栏();
公共的静态的JMenuItemmi0=新建对象J菜单项("新游戏");
公共的静态的JMenuItemmi1=新建对象J菜单项("退出");
公共的静态的JMenuItemmi1_0=新建对象J菜单项("关于");
公共的静态的JTextAreadlg_1_text=新建对象JTextA