俄罗斯小游戏毕业设计Word文档格式.docx

上传人:b****5 文档编号:21142117 上传时间:2023-01-27 格式:DOCX 页数:35 大小:52.45KB
下载 相关 举报
俄罗斯小游戏毕业设计Word文档格式.docx_第1页
第1页 / 共35页
俄罗斯小游戏毕业设计Word文档格式.docx_第2页
第2页 / 共35页
俄罗斯小游戏毕业设计Word文档格式.docx_第3页
第3页 / 共35页
俄罗斯小游戏毕业设计Word文档格式.docx_第4页
第4页 / 共35页
俄罗斯小游戏毕业设计Word文档格式.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

俄罗斯小游戏毕业设计Word文档格式.docx

《俄罗斯小游戏毕业设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《俄罗斯小游戏毕业设计Word文档格式.docx(35页珍藏版)》请在冰豆网上搜索。

俄罗斯小游戏毕业设计Word文档格式.docx

与电子游戏发达的国家相比,我国在电子游戏方面还存在比较大的差距。

目前,我国游戏市场正处于发展阶段,但市场上的游戏软件主要来自日本、美国、韩国等地,但由本土游戏制作人开发创作的游戏正在高速增加,国产原创的游戏即将成为游戏的主流。

 

2可行性研究

2.1设计目的

综合运用在校期间所学理论知识和技能,设计开发俄罗斯方块,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高工程实践能力,为将来实际工作打下坚实的基础。

2.2可行性研究前提

基本需求:

系统开发的总体任务是实现游戏的可操作性、美观性、及时性。

开发过程遵循软件工程师规范,可采用结构化或面向对象分析设计方法。

主要实现windows的GUI程序开发,对游戏中的图形图像进行键盘控制。

游戏者可以通过上下左右键来对游戏进行操作。

主要开发目标:

采用结构化设计方法,开发出一个可操作性、美观性、及时性的游戏,实现windows的GUI程序开发,并通过此次软件开发过程全面提高自身的综合素质。

条件假定和限制:

由于本软件目前是我的初次版本,可能还存在一些问题。

如果该软件提高版本,本软件需要根据游戏者得要求进行一步的修改。

可行性研究所采用的方法和步骤:

通过研究分析俄罗斯方块所具备的能力及实现的方法、确定主体结构。

利用现阶段我所能达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。

评价尺度:

由于本软件是一个初级产品,对其要求不是太苛刻,所以能够达到俄罗斯游戏的一般功能即可。

2.3可行性分析

技术可行性:

开发本游戏的编程语言有多种,考虑到自身对语言的掌握程度,JAVA语言进行游戏的开发,采用JAVAGUI编程来实现界面以及事件的控制。

经济可行性:

本游戏的开发旨在完成毕业设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行相应JAVA程序的电脑便可,所以不用考虑到经济问题。

社会可行性:

本游戏的开发主要为了完成毕业设计,开发的主体是个人,不存在法律上的侵权行为,也不会为社会造成影响,这方面是完全可行的。

3需求分析

3.1游戏需求

俄罗斯方块游戏由28种不同状态的方块随机产生,方块定时下移,下落的时候玩家下、左、右控制键来控制方块的移动,由上控制键来控制方块的翻转,以便玩家可以得到合适的形状和位置落下。

如果方块落下后能完全填满一层,则这一层消去,并且给玩家加分,若是方块把所有的显示方框的窗口填满,则游戏失败。

游戏功能需求如下:

游戏界面需求:

设计良好的游戏界面可以让玩家充分感受到游戏带来的娱乐性,游戏的背景、方块用的颜色可以根据喜好来自己设定,在一定的区域内运动和变形,落下后的障碍物可以用不同颜色显示,这样看起来会有一定的美感。

游戏形状需求:

用数组作为存储方块28种状态的数据结构,即长条形、Z字形、反Z形、田字形、7字形、反7形、T字型,各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。

键盘处理事件需求:

方块下落时,可通过键盘方向键(上、下、左、右键)对该方块进行向上(变形),向下(加速)、向左、向右移动。

鼠标处理事件需求:

通过点击菜单栏中相应的菜单项,可以实现游戏的开始、结束,方块形状的变换的显示,以及游戏帮助等功能。

显示需求:

当不同的方块填满一行时可以消行,剩余方块向下移动并统计分数。

3.2接口控制

本游戏通过键盘进行操作,在Windows的操作系统下,利用键盘的上、下、左、右键对方块进行移动变形,要使用键盘的接口事件。

3.3方案论证

学校现已开设的课程有C语言、C++,java,自己本身自学了Java,通过网上以及图书馆的资料,知道可以通过C,C++,VB,Delphi,Java实现俄罗斯方块游戏的设计。

下面简单介绍下Java的优点:

3.3.1Java的优点

(1)安全性

Java是一种安全的网络编程语言,不支持指针类型,一切对内存的访问都必须通过对象的实例来实现。

这样能够防止他人使用欺骗手段访问对象的私有成员,也能够避免在指针操作中易产生的错误。

此外,Java的安全性体现在多个层次上:

在编译层,有语法检查;

在解释层,有字节码校验器,可进行代码段格式测试和规则检查、访问权限和类型转换合法性检查、操作数堆栈的上溢和下溢检测、代码参数类型合法性检查等;

在平台层上,通过配置策略,可设定访问资源域,无须区分本地或远程。

(2)可移植性

Java具备有很好的移植性,这主要得益于它与平台无关的特性。

同时,Java的类库中也实现了与平台无关的接口,这使得这些类库也能移植。

同时,Java编译器主要是由Java本身来实现的,Java的运行系统(解释器)由标准C语言实现,因而整个Java系统都具有可移植性。

(3)多线程机制

Java具有多线程机制,这使得应用程序能够并行地执行。

它的同步机制也保证了对共享数据的共享操作,而且线程具有优先级的机制,有助于分别使用不同线程完成特定行为,也提高了交互的实时响应能力。

Java的多线程技术使网上实时交互实现很容易,从而为解决网上大数量的客户访问提供了技术基础。

(4)跨平台

通常,在Windows下编写的程序是不能直接拿到UNIX上运行的,因为程序的执行最终必须转换成为计算机硬件的机器指令来执行,专门为某种计算机硬件和操作系统编写的程序是不能够直接放到其他类型的计算机硬件上执行的,至少要做移植工作。

要想让程序能够在不同的计算机上运行,就要求程序设计语言能够跨越各种软件和硬件平台,而Java恰恰满足了这一需求。

Java编译器能够产生一种与计算机体系结构无关的字节指令,只要安装了Java虚拟机,Java就可以在相应的处理机上执行。

3.3.2方案的选择

面向对象的程序设计吸取了结构化程序设计的先进思想,并把它们同几个支持用户用新方法进行程序设计的有力概念结合在一起。

所有面向对象的程序设计语言一般都包含三个概念:

封装、多态性和继承性。

这种方法要求语言必须具备抽象、封装、继承和多态性这几个关键要素。

面向对象的程序设计,是通过数据和代码建立分块的内存区域,以便提供对程序进行模块化的一种程序设计方法,这些模块可以被用作样板,在需要时再建立其副本。

C++和Java在面向对象这方面比VB要强,所以我排除了用VB做的可能性。

但是C++为了与C语言兼容,其是包含了些面向过程的成分;

Java除了C++中非面向过程的部分,其程序编写过程就是设计、实现类,定义其属性、行为的过程。

还有Java特有的“沙箱”机制是其安全性的保障,同时它去除了C++中易造成的错误指针,增加了自动内存管理等措施,保证了Java程序运行的可靠性。

所以经过再三比较了三种语言后,决定采用Java语言编写俄罗斯方块。

3.4软硬件需求

操作系统

Windows98/me/2000/XP/2003

内存容量

64MB

显卡要求

8M

声卡要求

支持DirectX8.0声卡

交互工具

键盘/鼠标

CPU

奔腾133以上

光驱

8倍速以上

硬盘空间

400MB

显示器

VGA以上显示器

开发及运行软件

JDK1.5以上版本

4概要设计

4.1游戏设计所要遵循的规范

一个良好的程序,在编写之前,必须要制定各种编写规范,以便组内各成员协调工作。

当然,本游戏只是一个小程序,过多的规范制定显得没有必要,但是,也必须制定一个对于变量的命名规则,这有利于设计出一个可读性高的程序。

本程序变量的命名规则为:

·

所有变量一律使用相应的英文单词命名

如果同一类中需要创建多个同一类型,功能相似的变量,变量的前缀应使用统一的英文单词,后缀为下划线“_”加数字。

比如,从JButton对象创建开始按钮,可以命名为:

startbutton。

再如,创建多个道具按钮,可以命名为toolbutton_1,toolbutton_2等等。

方法命名尽量使用能够描述本方法功能的英文单词

比如,游戏初始化可以用gameinitial。

类名字命名也应当使用能够描述本类功能的英文单词。

如方块类,可以用classblock。

4.2游戏总体设计分析

Java为纯面向对象(Object-Oriented,OO)的程序语言,它的诸多优点在此就不作论述了。

从面向对象的观念出发,本程序主要可分为以下几个模块:

1客户端GUI模块

2方块及地图数据模块

3音频文件播放模块

4道具使用模块

4.3系统流程结构设计

ShapeFactory

图形工厂

Controller

GamePanel

处理按键事件

生产

触发按键事件

Shape

定时下落

显示

处理逻辑

Ground

4.4功能模块图的设计

4.4.1模型层功能模块图设计

下落产生障碍

生产图形

图形

障碍物

4.4.2视图层功能模块图设计

游戏面板

障碍物显示

方块显示

4.4.3控制层功能模块图设计

中央控制器

Controller类

处理按

键和鼠

标事件

显示面板

显示图形

和障碍物

4.4.4俄罗斯方块流程图

开始

到达底部

销行操作

生成下一个下坠物

下一个下降单位

将新生的下坠物代替旧的“下一个下坠物”

将旧的“下一个下坠物”用作当前下坠物

游戏结束

游戏结束处理

结束

4.4.5旋转方块控制线程工作图

随机休眠一定时间

休眠时间结束

休眠一定时间

检测现有方块是否已经落下

得到新方块

游戏是否结束

方块是否已经落下

否是

旋转方块

5详细设计

5.1运用的各种类

Shape类

VoidmoveLeft();

//左移

VoidmoveRidgt();

//右移

VoidmoveDown();

//下移

Voidrotatel();

//旋转(变形)

VoiddrawMe();

//显示

Ground类

Voidaccept(Shape);

//接受图形,把图形变成障碍物

游戏显示面板

GamePanel类

Voiddisplay();

ShapeFactory类(图形工厂)

ShapegetShape();

//生产出不同形状的图形

5.2图形的产生

通过图形工厂类ShapeFactory的getShape(ShapeListenerlistener)方法随机产生方块的某种状态,这里运用了工厂设计模式,这种设计模式是为了实现高内聚低耦合而存在的,这种设计模式的通俗解释就是:

想要一个产品,需要让工厂给生产一个,要告诉工厂要生产什么产品,就把需要生产的这个产品当做参数传给工厂类的生产产品的方法,然后根据传进来的产品,而决定工厂人生产什么产品,产生出来产品后,最后要返回要的这个东西。

随机产生一个数

随机数

Z字形

一字形

反Z

7字形

倒T形

田字形

反7字

5.3方块的翻转与移动

方块的翻转与移动比较容易实现,方块移动只需要改变方块的横坐标或纵坐标,然后重新绘制方块即可。

方块翻转也只需要改变方块数据第二维turnstate的值,然后重新绘制方块即可。

但是,这里边也会出现一个问题,这何种时候,方块不能再翻转和移动。

5.3.1方块的移动

很显然,当方块移动到地图的左右边界处,或者落下去后,不能再继续移动;

另一种情况就是,当方块要移动的方向被其他方块挡住时,方块不能再移动。

确定方块移动的规则后,接下来就是如何将这种规则用算法表示的问题了。

比如,当方块移动的左边界处时,方块不能再继续往左移动了,这个时候,肯定有一个条件成立,那就是方块的横坐标必定是小于或者等于零的。

如果方块的横坐标等于0,方块就不能再移动,那么方块数组的第一列至少有一个值为1,这种情况比较简单,但是,如果方块数组的第一列全为0时,也就是说,当方块数组有1的那列碰到边界时,方块才不能移动,这个时候,首次出现1的那列的横坐标为0,而方块数组的横坐标肯定已经小于0了。

假定我们以x记录方块数组的横坐标,以j记录方块不能移动时,方块数组中首次出现1的那列,当方块不能移动时,x+j的值必定是等于0的。

同理,当方块到达右边界不能移动时,我们可以从方块数组的右边开始检测,记录下首先出现1的那列的值,这个时候,x+j一定是等于14的。

当方块落下后,方块同样不能再移动。

这又分为两种情况,一种是要坠下的地方还没有方块,这个时候,只要可以记录下方块数组中最后出现1的那一行,假定那是第i行,这样,只要y+i等于24,就可以认定方块已经落到游戏地图的底部,不能再继续下落。

当要方块下边或者左右有方块时,可以确定下边有方块的那一格在游戏地图中的纵坐标是横坐标或纵坐标是x+j+1或者y+i+1,假定那一格的纵坐标坐标或者横坐标为y或x,那么游戏地图数组中[x+j+1][y]或者[x][y+i+1]这个元素的值必定是2。

综合以上几种情况,我们可以列出方块移动条件判定表,如表5.1所示:

表5.1方块移动条件判定表

1

2

3

4

5

6

7

8

是否有阻隔

T

F

x+j=0||gamearea[y+i][x+j+1]=2

x+j=14||gamearea[y+i][x+j-1]=2

y+i=24||gamearea[y+i+1][x+j]=2

左移动

右移动

下移动

5.3.2方块的翻转

大多数的俄罗斯方块游戏的翻转判定条件都比较简单,即方块处在边界处时就不能再翻转,因为这种时候翻转会发生数组越界错误。

试想一下,当方块移动到边界处,甚至还没有到边界处时,就不能再翻转了,无疑会给操作带来大大地不方便性。

方块翻转的另一个问题就是,当方块下落过程中,左右两边都有方块,周围的空间不能再容许它翻转,往往很多游戏没有注意到这一点,这就导致,方块翻转之后把原来存在的方块给挤掉了,这个问题本质上也是翻转越界。

为了解决以上问题,游戏设计中应该增加一个对于方块能否翻转的判定以及翻转越界纠正功能。

1.方块翻转判定

如上所述,在两种情况下一种是方块落下去固定住以后,第二种是周围的空间不允许它进行翻转。

第一种情况好办,只要参考方块落下去后不能够再移动的判定即可。

对于第二种情况,在每次方块翻转前,必须首先计算出方块周围的空间,如果空间允许则翻转,否则,不能翻转。

这里面又出现一个棘手的问题,因为七种方块是不规则的,每种方块要求的翻转空间都是不一样的,甚至是在它的不同翻转状态下,所要求的翻转空间也是不一样的,首先想到的自然就是为每一种方块,方块的每一种状态都写一个判定条件,然后根据当前的blocktype和turnstate值,选择哪种判定条件进行判定,但是这样做未免过于麻烦。

根据观察,不难发现,七种形态的方块,长条形的方块如果以横条的形态下落,则只有能够下落,就能翻转,如果以竖条的形态下落,那么它翻转后所处的位置必须要有4x1个格子的空间才能够翻转;

对于田字形的方块,只有能够继续下坠,就一定能够翻转,所以田子型的方块只要没有落下,就一直能够翻转;

而其它五种形态的方块,又有一个共同点,就是它们都有两种翻转状态横向占三个格子的空间,竖直方向占两个空间,另外两种翻转状态横向占两个格子的空间,竖直方向占三个格子空间,如果他们是以横向占三个格子的状态下落,那么只要能下落,就一定能够翻转,如果是以横向两个格子的状态下落,那么在翻转后,周围必须要有3x2个格子的空间。

所以,方块翻转的判定,要分三种情况。

第一种情况是方块落下去后不能翻转;

第二种情况是对竖直状态出现的长条形的方块进行翻转判定;

第三种情况是对除长条形和田字形之外的其它五种以横向占两个格子的状态出现的方块进行翻转判定。

何种情况下方块能够翻转的问题解决了,接下来,我们就应该解决方块翻转后所处的位置的问题了,因为只有事先知道方块翻转后所处的位置,才能够对那个位置的空间范围进行判定,判定它是否能够容纳方块。

可以确定的是,无论方块怎么翻转,都处在方块数组中,也就是说方块必定是在游戏地图中某一4x4个格子的空间范围内。

方块数组在游戏地图中的坐标是确定的,不确定的是方块翻转后到底处在方块数组的哪个位置,为了解决这个问题,我们可以限定方块在方块数组中的存储原则是靠左、靠上,这样,无论翻转怎么翻转,方块数组中第一行和第一列都是有方块的,这样也就确定了方块在方块数组中的位置,也就可以得知方块翻转后在游戏地图中的位置了。

假定方块数组的横纵坐标是x和y,那么,这个位置就是,长条形的方块翻转后所处的那一行是游戏地图的第y行,所占的列是第x到x+3列,长条形和田字形以外的五种方块翻转后的所占的行数是游戏地图的第y和第y+1行,所占的列是第x到x+2列。

所以,如果以上空间有空格子,方块就能够翻转。

据此,我们可以列出方块翻转的条件判定表,如图:

落下

田字形方块

长条形方块

1x4形态

4x1形态

其它五种

方块

2x3形态

3x2形态

第y行,x、x+3列空

第y、y+1行x、x+2列空

所有

动作

翻转

不能翻转

2.翻转越界纠正

由上述判定表可以看出,只要方块翻转后所处的空间足够,方块就能够翻转,但是,如果方块翻转后所处的空间不足够,而在它的另一边却有足够的空间。

比如,一个方块在它左边正好差一个格子的空间才能够翻转,但是它的右边恰好有一个格子的空间,这种情况,如果方块不能够翻转,就不方便用户操作,如果能够翻转,就会发生越界,将已经存在的方块挤占掉。

要想实现翻转又不发生越界,那么,就应该在方块翻转后把它往右边移动一个格子,然后再绘制方块,这样,方块就不会挤占掉其它已经固定住的方块了。

同样,方块在边界处时,翻转后不仅可能翻出地图外,还可能发生数组越界,当然,只需要将地图数组定义得大一些,就能够避免数组越界错误,对于方块越界,如果在它的另一边有足够空间,那么,就应该把方块往另一个方向移动适当的单位,纠正方块越界错误。

另一边有足够空间

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1