目 录
一.项目介绍... - 3 -
1.1 项目简介... - 3 -
1.2 游戏介绍... - 3 -
1.3 开发工具... - 4 -
1.4 软件运行环境... - 5 -
1.5 项目任务书... - 5 -
1.6 项目的目的与目标... - 5 -
1.7 术语解释…- 5 -
1.8 参考资料... - 6 -
二.项目分析... - 6 -
2.1 总体方案... - 6 -
2.2 分析规划... - 7 -
2.2.1 下坠物模块及各种变换分析... - 7 -
2.2.2 正常工作流程和中断操作流程的分析... - 7 -
2.2.3 主界面分析模块... - 8 -
2.2.4 记分和自动晋级模块... - 9 -
三.工程进度... - 10 -
一.项目介绍
1.1 项目简介
俄罗斯下坠物操作简单,很容易上手,作为家喻户晓老少皆宜的大众游戏,它是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。但是,谁知道这么优秀的娱乐工具,出自哪位神人之手呢?顾名思义,俄罗斯下坠物自然是俄罗斯人发明的。这位伟人叫做阿列克谢·帕基特诺夫(Alexey Pazhitnov)。
俄罗斯方块最早还是出现在 PC 机上,而我国的用户都是通过红白机了解、喜欢上它的。对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,作为游戏本身很有魅力。
此软件给用户提供了一个展现自己高超技艺的场所,在这里,它不仅能放松自己,还能感受到游戏中的乐趣。
1.2 游戏介绍
1.2.1详细规则、胜负判定方法
游戏区域会从顶部不断落下7种下坠物的一种,游戏区域的右侧有一方框可以提示用户下一个下坠物的形状,玩家可以移动、旋转、加速下落和一键到底自己窗口内落下的下坠物,通过用户的操作,下坠物在游戏区域以“摆积木”的形式出现。下坠物在一行或多行堆满后就可以自动消掉,消行后会得到相应的分数,如果当前下坠物堆积至窗口顶端,即游戏结束。
1.2.2 游戏操作方法
1. 按游戏界面的"开始"菜单来开始游戏;"暂停"菜单暂停游戏; "结束"菜单结束游戏;"设置"菜单对游戏进行设置,实现个性化设置。
2. 键盘操作: "←"左移一格;"→"右移一格;"↑"旋转操作;"↓"下坠物丢下(加速下落);"空格键"一键到底;
3. "计分牌"显示的内容:"得分"为本局的分数,一次消一行加100分、一
次消两行加400分、一次消三行加900分、一次消四行加1600分。
4.“设置”键:用鼠标可以选择游戏区域大小、级别、是否开启背景音乐等。
该游戏共有六个等级:入门级、初级、中级、中高级、高级、顶级。 "级数"为游戏当前等级,当分数达到当前等级的最高值,等级会提升、速度会加快。玩家可以任意选择级别,当分数到达晋级分数(当前等级与下一级的分数差)后自动晋级,分数继续累加。游戏结束时,如果得分进入前八名,英雄榜将记录你的姓名、分数,并为你排名。
1.3 开发工具
※Inter(R)Pentium(R) 4 CPU 3.00GHz ,512MB内存,160GB硬盘
※Microsoft(R) Windows(R) XP Professional
※Microsoft(R) Visual C++ 6.0
1.4 软件运行环境
※处理器无要求,32MB以上内存,硬盘1GB以上
※Microsoft(R) Windows(R) 系列所有操作系统
※800*600或以上的屏幕分辨率
1.5 项目任务书
开发小组成员及任务分工:
组长::总体设计、文档整合、程序完善与调试
组员::界面设计
:方块的存储、任意键设置、英雄榜实现
:边界判断、方块旋转
:到底判断、一键到底
:下坠物的形成与显示、部分菜单函数
1.6 项目的目的与目标
项目实现了俄罗斯下坠物的所有基本功能,同时,为了满足人们的个人需求我们加入了很多游戏个性化效果。我们加入了各种背景图片以供选择,从而实现画面的美观、简洁、有吸引力;加入了音乐、音效和Flash动画效果等,从而使游戏从感官上更加吸引玩家;加入了自主设置键盘的操作,从而使操作更加简单,更容易上手,且不易失误。并且当游戏窗口最小化时,游戏能够自动暂停,我们会力争使游戏具有可靠性,安全性,完整性,灵活性,开发出一款更加适合人们需求的俄罗斯方块游戏。
1.7 术语解释
下坠物:随机产生的一个即将下落的“积木”
旋 转:逆时针旋转90度
中 断:人为操作对游戏自主运行的影响
一键到底:指游戏中对于下坠物的操作,按某个键就会使下坠物直接落到游戏区域底部
正常工作:没有人操作时游戏下坠物的自主下落。
1.8 参考资料
[1] 孙鑫,余安萍,《VC++深入详解》电子工业出版社,2003.
[2] 张基温, 贾中宁,李伟.《Visual C++程序开发基础》高等教育出版社,2001.
[3] 尹立民, 王兴东 等.《Visual C++ 6.0 应用编程150例》电子工业出版社,2004.
[4] Frank L.Friedman,Elliot B.Koffman .《C++精解和程序设计》清华大学出版社2005.2
[5] Micrsoft公司《Visual C++ 6.0语言参考手册》 北京希望电子出版社,1999.
[6] 刘小石,郑淮 等。《精通Visual C++ 6.0》 清华大学出版社,2000.2
二.项目需求分析
2.1 总体需求分析
剖析游戏的实质,可以发现:首先,该游戏需要一个良好且可控的界面,能够接受鼠标和键盘的响应,可以供玩家选择自己想要的游戏级别、背景颜色和是否开启背景音乐,实现个性化设置;其次,由于游戏涉及到许多不同种类的下坠物,所以需要来构造这些下坠物并且设置一种旋转规则实现下坠物的各种旋转;再者,在游戏过程中,必须要处理好下坠物的一些事件,例如自动下落,消除满行,下一个下坠物的显示以及游戏的自主升级。
2.2 分析规划
2.2.1 下坠物及各种变换需求分析
本游戏需要有7种下坠物,而每种下坠物还可以进行旋转。每种下坠物每行每列最多只有4个小下坠物。这7种下坠物如下图1所示。
(1) (2) (3) (4) (5) (6) (7)
图1.
可以将它们放在一个n*m的区域内,该区域可以看作是有许多个等面积小下坠物构成的区域,而这些区域的状态只有两种,被下坠物占据或空闲,因此,对于整个游戏区域的空间是占据或空闲,可以用一位数来标识。对于7种下坠物和它们旋转后的形态我们可以用不同的标识进行标记。
对于旋转,游戏中所有下坠物都是按照逆时针旋转的规则进行的,而且在旋转过程中它们不会因为旋转而下降,总会保持在同一高度。任何下坠物经过一个旋转周期还会变回原型。
2.2.2 正常工作和中断操作的需求分析
在无人操作时,游戏开始后会随机产生一个下坠物,先显示在界面右上角的显示区域,然后转到游戏区域,右上角又随机产生一个新的下坠物,当该下坠物下落到底后,新的下坠物再次进入游戏区域,如此循环,直到游戏结束/暂停,这就是游戏的正常工作。
上述过程是在无人操作时游戏自动运行的,当用户进行一定的操作交互的时候,运行程序可以根据用户的操作指示进行当前下坠物的控制。而这些操作都是响应相关的功能键而执行的,所以这里可以把它看成一种“中断”的操作。
在中断过程中,可以通过键盘包括按某些键进行操作。为了便于用户操作,用户可以自主选择操作键,但他们的作用不变。但还是应该设置默认键来方便操作。例如:光标向上键,光标向下键,光标向左键,光标向右键,空格键。
按光标向上键
此事件产生下坠物旋转操作,下坠物并非任何情况都能旋转,如果旋转后与小方格矩阵显示的下坠物有冲突或超出边界时,均不能发生旋转。因此首先要判断是否有足够的空间进行旋转,然后选择是否旋转。
按光标向下键
此事件产生下坠物加速下落操作,如果下坠物已经到达游戏区域底部或者已经有其他方块遮挡,则下坠物停止下降。
按光标向左键
此事件产生下落下坠物左移操作。首先要判断此下坠物是否能够发生左移,当越界或被其他显示下坠物阻挡时,则不能左移。
按光标向右键
此事件产生下落下坠物右移操作。首先要判断此下坠物是否能够发生右移,当越界或被其他显示下坠物阻挡时,则不能右移。
按"空格键"
此事件产生下坠物一键到底的操作,如果下坠物已经到达游戏区域底部或者其下方已经有其他方块遮挡,则下坠物不能再下降。
2.2.3 主界面需求分析
主界面需求分析主要包括界面的显示,快捷键的使用。
首先,根据游戏本身的需要,应该在游戏界面里设置三个选项,分别为游戏、选项和帮助,在“游戏”里应该同时设置开始游戏、游戏暂停、游戏结束、游戏设置和退出系统五个选项,以便于玩家轻松的控制这个游戏。而在“选项”里应该根据玩家对这个游戏的掌握程度的不同设置不同的游戏级别,大致分为六设想分为六级,即入门级、初级、中级、中高级、高级和顶级,这样玩家就会根据自己的情况选择不同的级别。同时在这个“选项”里还有其他选项,以供用户实现个性化设置。例如玩家可根据喜好选择是否要开启背景音乐,是否在游戏中开启音效,还可以根据自己喜欢的颜色选择背景颜色等。在“帮助”的菜单项里应该有对游戏的文字描述和设计者的一些情况,这样可以极大方便从来每玩过此游戏的玩家。如果玩家对游戏规则有任何不理解,在这里可以找到相应的用户帮助。
其次,我们为了方便玩家还应该为这个游戏增加了一个放置常用功能的快捷键,以便用户可以通过鼠标点击而直接对相应的选项功能进行实现。这些常用功能选项可以分别是游戏的“开始”、“暂停”、“结束”、“设置”,这样就简化了用户的操作,为了美观,我们还应对按键添加相应的按钮图标。
最后,我们还应该会在界面的右方出现游戏的具体信息,例如当前游戏的级别、目前所得的分数和游戏区域设置。并会在界面的右上方出现下一个将要下落下坠物的形状,这样可以方便玩家更轻松的完成这个游戏。
l “开始”按钮
点击“开始”,游戏即开始运行。区域右上角随机显示下一个下落的下坠物还有级别、分数、区域大小。另外,应该把“开始”和“设置”菜单设置成灰色,“暂停”和“结束”菜单恢复显示。
l “结束”按钮
应该将当前程序中止,并将状态恢复至初始状态。
l “暂停”按钮
暂停即要停止当前下坠物的下落,将程序状态保存。同时应该使“暂停”菜单变成灰色,“开始”菜单恢复显示。
l “设置”按钮
为了方便操作,可以添加这样一个按钮,从而可以进行区域大小,游戏级别,下坠物样式,背景音乐,任意键的设置。而且它的进行必须在开始游戏之前,在游戏中不可以对其进行设置。
2.2.4 记分需求分析
计分需求主要是描述游戏中的得分规则以及英雄榜的排列规则,得分要看具体一次的消行数X,根据公式X*(X*100)来计算。消一行100分,消两行400分,消三行900分,消四行1600分。
级数可以根据玩家的初始选择和玩家的表现共同决定。游戏的级数选择可以有入门级、初级、中级、中高级、高级、顶级通过每一个级别的分卡后,游戏应该会自动为其升级,游戏会自动进入下一级。升入下一级后,速度自然加快,经过分析,速度通过设置一个触发器在根据不同的级别选择选择方块下落的间隔时间。当升到最高级后,程序不再为其升级,但分数将会继续累加。为了方便用户,游戏可以不设置通关,玩家可以畅玩到尽兴。
为了吸引玩家,在游戏过程中,我们应该为不同的游戏情况增添了有不同的音效。例如,下坠物销行时,会产生一个特别音效;下落时会产生另一个特别音效;在游戏晋级时,也会产生一个“祝贺”的音效。
我们还应设置俄罗斯方块英雄榜,它可以纪录得分最高的前八名,记分榜保存在一个文件当中。当游戏结束后,如果玩家的得分进入前八名,游戏会请玩家输入他的姓名并且显示他的得分,录入成绩后游戏会自动进行排名,记分显示在游戏界面的上方。每次在玩家开始于游戏之前,玩家可以通过菜单栏打开一个对话框来查看榜单记录情况。
三.工程进度
第一周,了解项目需求,完成项目用户需求书,熟悉编程环境
在我们学过VC++的基础上,我们首先要进一步了解MFC的编程环境,理解其中各个类间的关系,了解其架构,了解各种代码应该在哪添加。调查项目需求,在了解项目的大体框架后,明确大致流程,完成项目用户需求书。
第二周,完成各个模块的算法分析,将模块细化
经过一周的思考与交流,我们根据每个人的具体情况来明确如何分工。将我们预想的游戏四大模块的具体算法考虑成熟,并且完成概要设计文档。
第三周,编写程序,大体完成游戏,反复进行测试修改功能
上机进行操作,相互交流各个模块的具体实现,实现游戏的主界面,将各个模块联系到一起,完成游戏的基本功能,并完成详细设计文档。
第四周,进行程序调试,完善游戏,并进行测试、演示验收
所有成员交流创新想法,争取将其加入游戏,完善游戏,使游戏有更多功能,吸引更多玩家。之后,组员相互交流本次项目的个人收获。