俄罗斯方块设计报告书.docx
- 文档编号:7079772
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:13
- 大小:216.13KB
俄罗斯方块设计报告书.docx
《俄罗斯方块设计报告书.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块设计报告书.docx(13页珍藏版)》请在冰豆网上搜索。
俄罗斯方块设计报告书
海南师范大学
软件设计模式课程报告
(2013--2014年度第一学期)
课程名称:
软件设计模式
题目:
俄罗斯方块
院系:
信息科学技术学院
班级:
任课教师:
成员:
成绩评定
分数
一、任务分配
任务
负责人
完成详细内容
PPT演示、需求分析、序列图
制作PPT演示文稿;对游戏进行需求分析;以及画出流程图与开始游戏序列图
用例图、设计模式与原则、代码
对游戏进行功能模块分析与用例分析、选择设计模式并画出类图;及部分代码
二、指导教师评语
摘要
设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式根据其目的可分为三种类型:
创建型模式、结构型模式和行为型模式,共有23种。
本文将结合其中的几个设计模式阐述俄罗斯方块游戏的基本设计思想。
俄罗斯方块(Tetris,俄文:
Тетрис)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。
俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。
由于上手简单、老少皆宜,从而家喻户晓,风靡世界。
一、绪论
1.1俄罗斯方块游戏简介
原本是前苏联科学家阿列克谢·帕基特诺夫所开发的教育用软件,之后开始提供授权给各个游戏公司,造成各平台上软件大量发行的现象。
GameBoy版的俄罗斯方块在日本卖出424万套,是GameBoy史上卖最好的游戏。
海湾战争时,也是前线美军最常拿消磨时间的游戏之一。
由于俄罗斯方块具有的数学性、动态性与知名度,也经常拿来作为游戏程序设计的练习题材。
俄罗斯方块曾经造成的轰动与带来的经济价值,可以说是世界游戏史上的一个奇迹。
它看似简单却又变化无穷,令人上瘾。
相信大多数用户都还记得为它痴迷得“茶不思饭不想”的那个俄罗斯方块时代。
俄罗斯方块上手极其简单,但是要熟练地掌握其中的操作与摆放技巧,难度却不低。
作为家喻户晓老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。
1.2俄罗斯方块游戏规则
1.游戏主画面在一个用于摆放方块的面板上
2.
(1)一组由4个小型正方形组成的规则图形(即方块)共有7种形状,分别为一字形、田字形、7字形、反7形、Z形、反Z形、T形。
(2)一字形:
一次最多消除四层
田字形:
消除一至二层
7字形:
最多消除三层,或消除二层
反7形:
最多消除三层,或消除二层
Z形:
最多二层,容易造成孔洞
反Z形:
最多二层,容易造成孔洞
T形:
最多二层
3.方块从区域上方开始下落,玩者可以按指定按钮左右移动方块、逆时针旋转方块,以及让方块加速落下。
4.方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始落下。
5.当区域中某一行横向格子全部由方块填满,则该列会消失,玩家得分。
6.当固定的方块累积堆到一定层数(设计游戏时设置)时,游戏结束。
7.游戏分为初级、中级、高级三关。
8.游戏会提示下一个要落下的方块形状,并随着游戏的进行而加速提高难度。
二、需求分析与游戏设计
2.2需求分析
2.2.1游戏界面需求
良好的用户界面设计。
本游戏主要有三个界面,一是主游戏区的面板,显示变化和下落的方块;二是用于放置按钮以及显现游戏信息的面板,三是双人对战时用以显示对方游戏信息的面板。
2.2.2方块控制需求
方块下落时,可通过特定按钮对该方块进行翻转、加速,以及向左、向右移动等操作。
2.2.3图形显示需求
随机给出不同的形状(一字形、田字形、7字形、反7形、Z形、反Z形、T形),下落填充给定的区域,填满一行则消掉记分,当达到一定的分数时过关,共设置三关——初级、中级、高级,每关方块下落的速度不同,方块累积到一定层数无法再消去行时游戏结束。
2.3游戏设计
2.3.1游戏流程图
很多俄罗斯方块游戏都是在方块到达顶部时游戏结束,于是我们设想,在方块到达顶部时,增加一个“复活”的步骤。
所谓“复活”,是指当方块堆积到顶部时,原本游戏是要结束的,但玩家可以用自己的积分或金币来换取满行方块的消除,从而有机会继续玩下去,即为“复活”,每复活一次,就要扣掉一定的积分或金币,并且规定游戏中的“复活”次数不超过三次。
2.3.2功能模块图
1.游戏模式选择功能模块:
分为单人游戏模式与双人对战模式;
2.游戏操作模块:
(1)显示模块:
a.由图形工厂产生7种不同图形并随机显示在游戏主画面上;
b.显示玩家信息;
(2)控制模块:
控制方块下落、移动、翻转等;
(3)设置模块:
设置游戏难度、游戏背景等。
2.3.3用例模型
(1)玩家:
玩家可以选择游戏模式(分为单人游戏模式与双人对战模式),之后进入游戏,可以控制游戏(如控制方块运动与翻转)和设置游戏(如设置游戏难度、游戏背景等)。
(2)计算机:
在游戏开始后,计算机随机产生方块,控制方块下落并响应玩家操作,方块下落到底部后,能自动消除满行方块并更新分数,当方块累积到顶部时,报告游戏结束。
2.3.4开始游戏序列图
三、设计模式的选择和设计原则的体现
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式使得设计方案更加灵活,且易于修改。
很多设计模式中广泛使用了开闭原则、依赖倒转原则、迪米特法则等面向对象设计原则,使得系统具有较好的可维护性,真正实现可维护性的复用。
设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。
在本游戏设计中,主要可以使用创建型模式中的工厂模式,行为型模式中的命令模式,还有可能会用到观察者模式和策略模式。
在软件开发中使用面向对象设计原则可以提高软件的可维护性和可复用性,每一种设计模式都符合某一种或多种面向对象设计原则。
本游戏设计中,主要体现了单一职责原则、开闭原则和依赖倒转原则。
3.1工厂模式
工厂模式又称为工厂方法模式,也叫多态工厂模式或虚拟构造器模式,它属于类创建型模式,满足“开闭原则”。
在俄罗斯方块的设计中,使用图形工厂产生7种不同的方块并在游戏中随机出现。
图形工厂接口:
packagetest1;
publicinterfaceShapeFactory{
publicBlockproduceBlock();
}
方块接口:
packagetest1;
publicinterfaceBlock{
publicvoidchange();
publicvoidmoveleft();
publicvoidmoveright();
publicvoidfall();
}
7个具体的图形工厂实现图形工厂接口,实现produceBlock()方法,随机产生7种不同的方块显示在游戏界面上,7种具体的方块实现方块接口,实现change()、moveleft()、moveright()、fall()三种方法。
3.2命令模式
命令模式是指将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。
命令模式是一种对象行为型模式,其别名为动作模式或事务模式。
新的命令容易加到系统中,满足“开闭原则”。
在俄罗斯方块游戏设计中,玩家可对方块进行控制,即玩家向图形类发出请求,在此,便要用到命令模式,将玩家对图形类的请求封装为对象,然后放在类中。
命令接口Command中定义了抽象方法execute():
packagetest1;
publicinterfaceCommand{
publicvoidexecute();
}
4个具体命令类BlockChangeCommand、BlockMoveleftCommand、BlockMoverightCommand、BlockFallCommand实现命令接口,实现方法execute()。
4个按钮为调用者,分别是moveleft、moveright、change、fall,它们各自调用具体命令中的方法execute()
方块类为请求的接收者。
方块类实现具体的业务操作,如change()、moveleft()、moveright()、fall()等方法。
比如,Block1类实现Block接口:
packagetest1;
publicclassBlock1implementsBlock{
publicvoidchange(){
}
publicvoidmoveleft(){
}
publicvoidmoveright(){
}
publicvoidfall(){
}
}
BlockChangeCommand类实现Command接口:
packagetest1;
publicclassBlockChangeCommandimplementsCommand{
privateBlock1block1;
publicBlockChangeCommand()
{
block1=newBlock1();
}
publicvoidexecute()
{
block1.change();
}
}
调用者类Button(按钮类):
packagetest1;
publicclassButton{
privateCommandchangeCommand,moveleftCommand,moverightCommand,fallCommand;
publicButton(CommandchangeCommand,CommandmoveleftCommand,CommandmoverightCommand,CommandfallCommand)
{
this.changeCommand=changeCommand;
this.moveCommand=moveleftCommand;
this.moveCommand=moverightCommand;
this.fallCommand=fallCommand;
}
publicvoidchange()
{
changeCommand.execute();
}
publicvoidmoveleft()
{
moveCommand.execute();
}
publicvoidmoveright()
{
moveCommand.execute();
}
publicvoidfall()
{
fallCommand.execute();
}
}
3.3其他可能用到的设计模式
3.3.1观察者模式
观察者模式是指定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。
观察者模式又叫做发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式。
观察者模式是一种对象行为型模式。
它符合“开闭原则”的要求。
在本游戏中,很多地方都可以用到观察者模式,比如下面列出的几点:
(1)玩家点击控制按钮时,方块就要得到通知并响应玩家的操作,翻转或移动或加速下落。
(2)玩家修改游戏信息时,系统收到通知,及时处理玩家操作,更新信息。
(3)当方块下落到底部时,系统应得到通知自动消除满行方块并更新分数;当方块累积堆在顶部时,系统收到通知,报告游戏结束。
3.3.2策略模式
策略模式是指定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。
策略模式让算法独立于使用它的客户而变化,也称为政策模式。
它是一种对象行为型模式。
只要某一问题涉及有多种解决方案时都可以使用策略模式。
它符合开闭原则、单一职责原则和依赖倒转原则。
四、结论
这段时间对设计模式的学习以及俄罗斯方块游戏的设计,让我们了解了软件设计中常用的设计模式以及游戏设计的基本流程。
本游戏设计中,先进行了游戏需求分析和游戏整体设计,画出了游戏的流程图、功能模块图、用例图以及序列图;然后分析了游戏设计中所用到的几种设计模式。
由于所学知识有限,因此还有很多不足之处,希望谅解。
五、参考文献
1.《设计模式》刘伟主编清华大学出版社
2.《数据库原理及应用》雷景生叶文珺李永斌主编清华大学出版社
3.《Java面向对象程序设计》董小园编著清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 俄罗斯方块 设计 报告书