扫雷与纸牌游戏.docx
《扫雷与纸牌游戏.docx》由会员分享,可在线阅读,更多相关《扫雷与纸牌游戏.docx(19页珍藏版)》请在冰豆网上搜索。
扫雷与纸牌游戏
扫雷用户使用说明
本程序为Swing实现的扫雷游戏程序。
在java环境下,运行run.bat启动程序。
游戏分为三个难度等级,分别有12、24、36颗雷。
单击鼠标左键为踩雷。
单击鼠标左键在标记,疑问,空白三种状态中循环。
同时单击鼠标左右键为踩单击点在内的周围九格内所有没有标记为已标记的所有格子。
同时程序从你单击第一次时开始计时,到胜利或引爆地雷终结。
胜利后。
单击三个难度选择按钮内的一个重起游戏。
单击Game菜单Exit菜单项或程序对话框上的关闭按钮退出游戏。
扫雷需求规格说明书
1.引言1
1.1编写目的1
1.2项目背景2
1.3定义2
1.4参考资料2
2.任务概述2
2.1目标2
2.2运行环境2
2.3条件与限制2
3.数据描述3
3.1静态数据3
3.2动态数据3
3.3数据库介绍3
3.4数据词典3
3.5数据采集3
4.功能需求3
4.1功能划分3
4.2功能描述3
5.性能需求3
5.1数据精确度3
5.2时间特性3
5.3适应性3
6.运行需求3
6.1用户界面3
6.2硬件接口3
6.3软件接口3
6.4故障处理3
7.其它需求3
1.引言
1.1编写目的
随着现在生活节奏的加快,人们在工作之余需要一个轻松娱乐的放松环境。
因此我们小组编写此软件的目的,一方面作为初学者来了解Android的开发,另一方面开发此软件使用户能在娱乐休闲的同时拓展思维能力。
同时进一步拓展研究,做到将扫雷层次升级,能够在多人连机的情况下,一起分工来进行对战。
如一方放雷,另一方排雷。
1.2项目背景
项目的任务提出者:
开发者:
用户:
试用于所有人群
1.3定义
Android手机操作系统:
Android一词的本义指“机器人”,是Google开发的基于Linux平台的开源手机操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iphone等其他手机更强调搜索功能,界面更强大,可以说是一种融入Web应用的单一平台。
其最震撼人心之处在于Android手机系统的开放性和服务免费。
Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更强大的自由度,突破了iphone等只能添加为数不多的固定软件的枷锁;同时与WindowsMobile、Symbian等厂商不同,android操作系统免费向开发人员提供,可节省三成成本。
Android目前的开发者数量相对较少,不过,Android应用开发是基于java的,底层是linux的,世界上拥有众多的java开发人员,而linux也有广泛的基础,应该会吸引到越来越多的开发者。
1.4参考资料
《软件工程导论》
2.任务概述
2.1目标
扫雷游戏是一款基于Android平台的游戏。
此游戏的目的在于给用户提供一个放松娱乐的环境。
2.2运行环境
操作系统:
MicrosoftWindows7
支持环境:
Android手机操作系统
数据库:
SQLite
2.3条件与限制
Java比C语言写的程序执行起来慢很多。
执行慢的原因主要是在主机操作系统上加了虚拟机层,比本地编译玛慢。
Java现有的安全模型并不完善,有些开发人员能生成嵌入Web的Java小程序,即不友好的小程序。
这种程序可能给Web用户带来麻烦。
3.功能需求
3.1功能划分
生成数字模块
点击区域模块
放置地雷模块
图标模块
计时模块
3.2功能描述
游戏开始,计时开始,玩家点击扫雷区域,若没有踩到地雷,则该区域显示数字,显示笑脸图标。
若踩到地雷,游戏结束,显示哭脸图标,计时结束。
4.性能需求
4.1时间特性
一般操作的响应时间应在0.5秒内
4.2适应性
适用于Android操作系统的各版本的手机。
5.运行需求
5.1用户界面
采用对话框方式,多功能窗口运行。
5.2硬件接口
支持各种Android系列的手机。
5.3软件接口
运行Windows7及更高版本并装有Java虚拟机的操作系统。
5.4故障处理
正常使用时不应出错,当遇到错误时弹出对话框并将错误报告发送至Android手机支持中心。
6.其它需求
地图里地雷的数量不宜过多或过少。
游戏应该流畅。
纸牌用户使用说明
1.游戏目标
构建四叠纸牌,每套一叠,按升序排列(从A到K)。
2.玩法
A每个目标牌叠必须从A开始。
如果没有,则必须在列之间移动纸牌,直到翻开一个为止。
但是,不能在列之间随机移动纸牌。
必须按降序(从K到A)构建列。
因此,您可以在J上而不能在3上放10。
B作为一种附加花样,列中的牌色还必须黑红相间。
C不限制您仅移动一张牌。
还可以在列之间移动按顺序排列的一“串”牌。
只需单击牌串中最下面的纸牌,即可将它们全部拖到另一列。
D如果无法移动,则需要单击左上角的牌叠来拖动更多纸牌。
如果牌叠翻完,则可以单击玩牌区上牌叠的轮廓重新洗牌。
E过通拖动或双击某张牌可以将其移动到目标牌叠。
1.玩牌区
Windows纸牌只用一副牌玩,共52张。
游戏开始时使用28张牌排成七列。
第一列一张牌,第二列两张牌,依此类推。
每列的顶牌正面朝上,其余的牌正面朝下。
右上角是四个“目标牌叠”。
这是构建所需的牌叠以赢取胜利的位置。
1.计分
在标准计分下,将纸牌从牌叠移动到某列可以得5分,每向目标牌叠添加一张牌可以得10分。
如果游戏超过30秒,则还会根据完成游戏所需的时间收到奖分。
奖分公式是:
700,000除以游戏总秒数。
因此,标准计分下可能得到的最高分为24,113!
(若要更改计分系统,,请单击“游戏”菜单,然后单击“选项”。
)
纸牌:
规则和基本要求
游戏目标
构建四叠纸牌,每套一叠,按升序排列(从A到K)。
玩牌区
Windows纸牌只用一副牌玩,共52张。
游戏开始时使用28张牌排成七列。
第一列一张牌,第二列两张牌,依此类推。
每列的顶牌正面朝上,其余的牌正面朝下。
右上角是四个“目标牌叠”。
这是构建所需的牌叠以赢取胜利的位置。
玩法
每个目标牌叠必须从A开始。
如果没有,则必须在列之间移动纸牌,直到翻开一个为止。
但是,不能在列之间随机移动纸牌。
必须按降序(从K到A)构建列。
因此,您可以在J上而不能在3上放10。
作为一种附加花样,列中的牌色还必须黑红相间。
不限制您仅移动一张牌。
还可以在列之间移动按顺序排列的一“串”牌。
只需单击牌串中最下面的纸牌,即可将它们全部拖到另一列。
如果无法移动,则需要单击左上角的牌叠来拖动更多纸牌。
如果牌叠翻完,则可以单击玩牌区上牌叠的轮廓重新洗牌。
通过拖动或双击某张牌可以将其移动到目标牌叠。
计分
在标准计分下,将纸牌从牌叠移动到某列可以得5分,每向目标牌叠添加一张牌可以得10分。
如果游戏超过30秒,则还会根据完成游戏所需的时间收到奖分。
奖分公式是:
700000除以游戏总秒数。
因此,标准计分下可能得到的最高分为24,113!
(若要更改计分系统,请单击“游戏”菜单,然后单击“选项”。
)
提示与技巧
查看提示。
如果遇到困难,可以按H让Windows显示下一步应该移动的牌。
对于新手而言,这也是学习该游戏的一个好方法。
使一连串牌整齐。
牌串是您在列中创建的可见牌叠。
如果可能,请不要让在其他牌前面的任何一串牌变得太长。
使某个串特别长会使得难以进行其他移动。
翻开所有牌。
列中正面朝下的牌越多,越容易先翻开这些牌。
这会增加您玩牌的机会。
纸牌:
规则和基本要求
游戏目标
构建四叠纸牌,每套一叠,按升序排列(从A到K)。
玩牌区
Windows纸牌只用一副牌玩,共52张。
游戏开始时使用28张牌排成七列。
第一列一张牌,第二列两张牌,依此类推。
每列的顶牌正面朝上,其余的牌正面朝下。
右上角是四个“目标牌叠”。
这是构建所需的牌叠以赢取胜利的位置。
玩法
每个目标牌叠必须从A开始。
如果没有,则必须在列之间移动纸牌,直到翻开一个为止。
但是,不能在列之间随机移动纸牌。
必须按降序(从K到A)构建列。
因此,您可以在J上而不能在3上放10。
作为一种附加花样,列中的牌色还必须黑红相间。
不限制您仅移动一张牌。
还可以在列之间移动按顺序排列的一“串”牌。
只需单击牌串中最下面的纸牌,即可将它们全部拖到另一列。
如果无法移动,则需要单击左上角的牌叠来拖动更多纸牌。
如果牌叠翻完,则可以单击玩牌区上牌叠的轮廓重新洗牌。
通过拖动或双击某张牌可以将其移动到目标牌叠。
计分
在标准计分下,将纸牌从牌叠移动到某列可以得5分,每向目标牌叠添加一张牌可以得10分。
如果游戏超过30秒,则还会根据完成游戏所需的时间收到奖分。
奖分公式是:
700000除以游戏总秒数。
因此,标准计分下可能得到的最高分为24,113!
(若要更改计分系统,请单击“游戏”菜单,然后单击“选项”。
)
提示与技巧
查看提示。
如果遇到困难,可以按H让Windows显示下一步应该移动的牌。
对于新手而言,这也是学习该游戏的一个好方法。
使一连串牌整齐。
牌串是您在列中创建的可见牌叠。
如果可能,请不要让在其他牌前面的任何一串牌变得太长。
使某个串特别长会使得难以进行其他移动。
翻开所有牌。
列中正面朝下的牌越多,越容易先翻开这些牌。
这会增加您玩牌的机会。
纸牌需求规格说明书
1.引言1
1.1编写目的1
1.2项目背景2
1.3参考资料2
2.任务概述2
2.1待开发软件的一般描述2
2.2待开发软件的功能2
2.3用户特征3
2.4运行环境3
2.5条件与限制4
3.功能需求4
3.1功能划分4
3.2功能描述4
4.外部接口需求5
4.1用户界面5
4.2硬件接口6
4.3软件接口6
4.4故障处理6
5.性能需求6
5.1数据精确度6
5.2时间特性6
5.3适应性6
6.软件属性需求6
7.其它需求8
8.数据描述8
8.1静态数据8
8.2动态数据8
8.3数据库介绍8
8.4数据词典8
8.5数据采集10
1.引言
1.1编写目的
本需求规格文档的目的是说明网络棋牌游戏平台最终需要满足的条件和限制,为进一步设计和实现提供依据。
本文档将用户的需求用文字的形式固定下来,是与用户沟通的成果,也是用户验收项目时的参考。
本文档将供开发组团队成员查阅和使用,其中包括系统设计人员、编程人员、测试人员。
1.2项目背景
目前网络棋牌游戏在休闲游戏市场上有着很大份额,给用户提供一个放松娱乐,相互交流学习的平台,也是目前大多数网民娱乐的主要方式。
网络棋牌游戏是真正适合各种年龄群的用户使用的具有寓教于乐意义的游戏。
在当今如此盛行网络游戏的时代,教育网游的诞生不能不说是一个绝好的切入点。
因此网络棋牌游戏就更适合于教育网游。
与一般传统的角色扮演类游戏相比,网络棋牌游戏的开发更适合于如今网游的发展趋势,从另一方面更可以使如今的用户远离一些血腥暴力游戏所带来的危害。
益智休闲类游戏不仅满足用户对游戏的需要,也是一种促进智力发展的手段。
1.3参考资料
[1]网络棋牌游戏平台-项目开发计划书
2.任务概述
2.1待开发软件的一般描述
网络棋牌游戏平台是一款基于Java的游戏平台。
此平台的目的在于给用户提供一个放松娱乐,相互交流学习的平台。
2.2待开发软件的功能
本系统包括以下几个模块:
服务器用户管理模块:
服务器用户管理模块包含了用户权限管理及对用户账号的删除;
服务器商城管理模块:
服务器商城管理模块对整个游戏商城进行控制,包括修改物品信息、增加物品、删除物品、统计销售情况;
服务器控制模块:
服务器控制模块的主要功能包括内容清除、内容获取、服务器开启/关闭;
客户端游戏控制模块:
客户端游戏控制模块的主要功能包括用户登录、游戏选择、连接服务器、游戏创建、加入游戏、退出游戏;
客户端用户聊天模块:
客户端用户聊天模块是整个客户端聊天系统的核心,其主要功能是发送及接收信息;
客户端用户信息模块:
客户端用户信息模块主要用于查询用户账户资料及状态,包括游戏状态、基本信息及好友管理;
客户端游戏商城模块:
客户端游戏商城模块提供充值、游戏物品的出售及个人物品管理。
2.3用户特征
本网络棋牌游戏平台适合于任何年龄段的网民玩家,不受教育水平,工作经验及技术专长的影响,
2.4运行环境
本网络棋牌游戏平台适合运行的条件:
1.系统需求:
WindowsXP及更高版本
2.硬件需求:
Pentium42.4G及以上
256M内存及以上1G可用磁盘及以上
2.5条件与限制
由于Java语言本身的限制,该系统采用TCP/IP协议,程序运行速度比其他语言的程序略低。
3.功能需求
3.1功能划分
本系统包括以下几个模块:
1.服务器用户管理模块
2.服务器商城管理
3.服务器控制模块
4.客户端游戏控制模块
5.客户端用户聊天模块
6.客户端用户信息模块
7.客户端游戏商城模块
3.2功能描述
模块功能介绍:
服务器端:
1.用户管理模块
用户权限管理
删除用户
2.商城管理
修改物品信息
增加物品
删除物品
查询物品销售情况
3.服务器控制模块
内容清除
内容获取
服务器关闭
客户端:
4.游戏控制模块
用户登录
游戏选择
服务器连接
游戏创建
游戏加入
游戏退出
5.用户聊天模块
用户消息
系统消息
6.用户信息模块
用户状态
用户基本信息
用户好友管理
7.游戏商城模块
充值接口
购买
个人物品信息
4.外部接口需求
4.1用户界面
采用对话框方式,多功能窗口运行。
4.2硬件接口
支持各种x86系列的PC机。
4.3软件接口
运行WindowsXP及更高版本并装有Java虚拟机的操作系统。
4.4故障处理
正常使用时不应出错,对于用户的输入错误应给出适当的改正提示。
若运行时遇到不可恢复的系统错误,必须保证数据库完好无损。
5.性能需求
5.1数据精确度
查询时应保证查全率,所有在相应域中包含查询关键字的记录都应能查到,同时保证查准率。
5.2时间特性
一般操作的响应时间应在0.5秒内
5.3适应性
满足运行环境在允许操作系统之间的安全转换和与其它应用软件的独立运行要求。
6.软件属性需求
6.1可靠性
本系统的最终用户涉及面广,因此,整体系统运行要求稳定,有很强的防错、抗错能力,保证数据报送工作正常进行。
可靠性指标:
在连续运行情况下,系统可靠性99.9999%。
提供应用服务器集群技术和组件技术支持高可靠性和伸缩性。
6.2可维护性
系统从设计上尽量考虑使得大多数统计系统的建设都能使用本软件搭建而成,量少做二次开发或者不做二次开发,直接通过系统配置搭建系统,从功能上具有通用性,易修改和扩展。
软件开发使用组件技术,保证了可维护性高。
系统具有开放性,是指统计、分析内容的可修改、可扩展性。
例如,经过一定的授权,系统管理人员即可根据将来统计制度变动的需要对统计指标进行增、删等修改,无需经过软件开发技术人员。
6.3兼容性
系统应支持多种操作系统、数据库系统和、WEB服务器系统。
采用JAVA、JNDI技术来保证较好的可移植性和可扩展性。
6.4可用性
本系统采用C/S模式,同时,系统采取容错技术,具备数据恢复功能,能够保证用户随时随地操作系统。
6.5可移植性
本系统采用Java编写,能够实现跨平台操作。
6.6可测试性
软件系统具有良好的可测试性,能够在短时间的情况下顺利完成所有测试项目。
具体测试项目如下:
代码检查:
程序开发人员除了调试外,还应进行重点检查程序代码语法错误。
单元测试:
对组成系统的每个组件进行数据结构测试和功能性测试,重点是组件的功能和程序逻辑。
集成测试:
将组件组装成子系统后,应再次对组装后的子系统进行功能性测试,重点是组件与组件之间的接口测试。
系统测试:
经过测试后的各子系统组装成系统后,还应组织对整个系统进行全面的测试,包括功能、性能以及接口测试。
性能测试:
测试系统的操作相应速度以及资源占用效率。
压力测试:
测试系统的可靠性和伸缩性,以验证系统能承受多大的负载。
6.7易用性
系统应操作简单、易学易用,丰富的联机帮助,人性化的操作界面,界面布局合理,节省操作时间。
7.其它需求
保密性和私密性需求:
网络传递数据经过加密。
需要保证数据在采集、传输和处理过程中不被偷窥、窃取、篡改。
8.数据描述
8.1静态数据
静态数据:
包括系统登录密码,各数据库所在位置,系统分析原始数据
8.2动态数据
动态数据:
包括各数据库内各项显示数据,用户登录信息,系统时间
8.3数据库介绍
用户数据库:
玩家个人信息,好友信息,所有游戏的分数信息
8.4数据词典
(1)数据流词条描述:
1.数据流名:
登录信息
来源:
用户的输入
去向:
系统内部检验部分
组成:
用户名,密码,验证码
流通量:
每次登录输入一次
2.数据流名:
登录结果
来源:
系统
去向:
用户
组成:
返回信息
流通量:
每次登录返回一次
3.数据流名:
输入修改信息
来源:
用户
去向:
系统判断部分
组成:
根据各数据库内容而不同
流通量:
依用户输入而定
4.数据流名:
反馈信息
来源:
系统判断部分
去向:
用户
组成:
系统经判断后发回的字符数据
流通量:
依系统当前信息而定
5.数据流名:
识别信息
来源:
系统内部检验部分
去向:
系统判断部分
组成:
系统各数据库的标识信息
流通量:
用户每次输入流通一次
6.数据流名:
处理信息
来源:
系统判断部分
去向:
各数据库处理部分
组成:
读取/修改标识,读取/修改的变量名称
流通量:
用户每次输入流通一次
7.数据流名:
读取修改
来源:
系统判断部分
去向:
系统各数据库
组成:
读取/修改标识,读取/修改内容
流通量:
用户每次输入流通一次
(2)数据文件词条描述:
1.数据文件名:
用户数据
简述:
存储用户信息
数据文件组成:
用户的各项信息(以String类型为主)
2.数据文件名:
好友数据
简述:
存储好友信息
数据文件组成:
好友的各项信息(以String类型为主)
(3)使用逻辑词条描述:
1.使用名:
查看
简要描述:
判断用户的许可性
输入数据流:
登录信息
输出数据流:
登录结果
使用逻辑:
判断是否与系统内部用户信息相符合
2.使用名:
好友信息管理
简要描述:
对用户数据库进行相应要求的操作,并与判断部分交互
输入数据流:
处理信息,读取修改
输出数据流:
读取修改,处理信息
使用逻辑:
判断用户要读取/修改的内容->反馈用户所需信息
8.5数据采集
是确保数据快速、正确地输入系统,本系统选用键盘输入,鼠标输入。
比较
首先,纸牌判定成败的时间就要短于扫雷,一开局,一看7张明面上的牌能拆兑开的太少,马上f2,新开一局,不费那个事情,而扫雷不一样,你无法在开局时就立刻判断出你在这新的一局当中的地位有利还是不利,非得失败了才只得放弃前面的努力,特别是前面都扫除了98颗雷,最后要做出二选一的时候点错了,结果只能含恨打开又一局。
第三,扫雷需要选择的次数太多,看得到的偶然性太大,特别是在你连续蒙对了好多处之后,很有可能折在又一个选择之下。
写到这里我似乎理清了一点思路,之所以没能更接受扫雷,很大程度上是因为我觉得纵使是熟手(当然是纯业余的爱好者),也无法真正去驾驭它的规律,不得不接受被游戏玩的现实。
比较而言,纸牌就要厚道得多,即便不去主动总结规律,规律也会逐渐在脑海中成形。
其实,扫雷是要你坚持,而纸牌,玩到后来,我发现更多时候是放弃,当形势不妙的时候,比如调单张,我会毫不犹豫地重开一局,因为那样成功的机率太低了,而且我也的确碰到过一张牌都搬不动的局,那种情况也属于低概率事件。