基于Android的俄罗斯方块的设计与实现(4)

2020-02-21 18:35

武汉理工大学论文

四 游戏总体设计分析

4.1 总体设计思想

俄罗斯方块游戏设计主要从9个方面进行构思。 (1)游戏主界面的设计。 (2)方块的设计。 (3)方块的旋转。

(4)方块的运动情况(包括向左、向右、下坠)。 (5)方块的自动消行功能。 (6)游戏速度的调节。 (7)游戏积分的计算。 (8)游戏开始菜单的设计。 (9)游戏结束界面的设计。

首先,是定义方块的数据结构,这是游戏的一大难点,本设计用一个三维数组来表示方块的数据模型;游戏区域的状态,用一个二维数组来表示。

其次,分析按键的含义,并做出响应。响应模块:“左移”、“右移”、“下坠”和“旋转”几个模块,负责改变当前方块的状态数据;绘制方块模块:位置移动后,删除原来的方块,把方块绘制到新的位置上;检查模块:在每次改变状态之前,对方块企图占用的区域进行检查,如果不能容下新的方块,则此次移动失败,不执行移动。

如果方块下落到游戏区域底端了,则应该固定在当前位置,每次当方块到底的时候,都需要检查一下是否有新的行被排满了,如果有,则应消行。如果方块触顶了,则游戏结束。

俄罗斯方块是一个看似简单但比较有趣并且耐玩的游戏,游戏中共有7种类型的方块,每种方块由4个方格组成,如图4-1所示。

12

武汉理工大学论文

0字型方块 1字型方块 S字型方块 Z字型方块

J字型方块 L字型方块 T字型方块

图4-1 游戏中的7种方块

4.2 游戏的类设计

根据游戏的功能,俄罗斯方块设计了8个类。这8个类分别是:ActGameover,ActivityGame,ActivityHelp,contro,showPage,StarSurfaceView,Store,TTetris,每个类实现的功能各不相同,而彼此之间又存在着交叉。

TTetris类的设计:TTetris开始菜单类,这个类继承了Activity类,作为游戏的第一个界面,总共定义了三个按钮,一个可以开始游戏,一个进入帮助说明界面,还有一个是退出游戏。

ActivityGame类的设计:ActivityGame启动游戏类,该类继承了Activity类,用来启动游戏,进入游戏画面。

ActivityHelp类的设计:ActivityHelp游戏帮助类,显示帮助界面,用来介绍游戏的基本操作规则,该界面从开始菜单选择进入,该界面设有一个按钮,用来返回开始菜单。

ActGameover类的设计:ActGameover游戏结束类,该类继承了Activity类,是游戏的结束画面,每当游戏失败时就会自动跳转到该界面,从该界面可以选择返回开始菜单。

Store类的设计:Store方块类,该类设计了方块的数据结构,用一个三维数组来表示一共28种方块模型,该类定义了方法Sttore(int)用来随机生成一个方块,用random()方法实现随机数的产生,产生的方块用两个一维数组ai,aj记录下来。

表4-1 Store类的属性

13

武汉理工大学论文

属性名 kind color ai aj store 数据类型 int int int[] int[] int[][][][] 说明 记录产生何种类型的方块 记录方块的颜色 记录方格的行 记录方格的列 方块的数据结构

表4-2 Store类的方法

方法名 Store() Sttore(int)

返回值类型 无 void 说明 类的构造方法 产生方块,并且用ai,aj记录下来 showPage类的设计:showPage方块类,该类定义了游戏界面的框架,用一个二维数组array来构建游戏的基本框架。该类主要定义了一系列的方法,用来实现方块的一些操作。方法putS(Store)把下一个将要产生的方块存入数组,存入数组的是一个数值为1~7的整型整数,用来表示7种不同颜色的方块。delS(Store)把用来存储一个将要产生的方块的数组置零,从而用来实现删除下一个方块区域的方块。putStore(Store,int,int)把要在屏幕相应位置上产生的方块存入数组array,用1~7来赋值,达到显示不同颜色的方块的效果。delStore(Store,int,int)把数组array相应位置清零,达到删除屏幕上相应位置的方块的效果。

leftM(Store,int,int)和rightM(Store,int,int)用来判断方块是否可以左右移动,如果可以则返回true,不可以返回false。fit(Store,int,int)用来判断方块是否碰壁,碰壁了返回false,没有返回true。outM(Store,int,int)判断方块是否碰到游戏区域顶端,用来判断游戏是否结束。flood(Srore,int,int)检测是否可以消行,如果一行被填满,则消除该行,并记录消除的行数,用来计分。remove(int)消除某一行,消除的行上面的方块整体下移一行。

表4-3 showPage类的主要属性

14

武汉理工大学论文

属性名 co brray array

数据类型 int[] int[][] int[][] 简要说明 用该数组按位存储游戏分数 记录下一个区域的方块 记录游戏区域的方块 表4-4 showPage类的主要方法

方法名 putS(Store) delS(Store) putStore(Store,int,int) delStore(Store,int,int) leftM(Store,int,int) rightM(Store,int,int) 返回值类型 void void void 简要说明

把下一个方块存入数组braay 把数组braay置0,即删除方块 把游戏区域的方块存入数组array void 删除游戏区域的方块 boolean 判断方块是否可以左移 boolean 判断方块是否可以右移 判断方块是否碰到边界或者碰到别方块 判断方块是否超出屏幕顶端 fit(Store,int,int) boolean outM(Store,int,int) flood(Store,int,int) remove(int)

boolean int void 判断是否可以消行,如果可以进行消行 消行 contro类的设计:contro分数统计和速度控制类,用来统计游戏的分数,并通过分数来调节方块下坠的速度以提高游戏难度,增加游戏趣味性和挑战性。该类定义了方法tscore(int)用来统计游戏分数并把该分数按位存入一维数组,passWar()通过分数控制方块下坠的速度,实现一个简单的游戏关卡控制。

表4-5 contro类的主要属性

15

武汉理工大学论文

属性名 score speed sco

数据类型 int int int[] 简要说明 记录游戏分数 调节游戏速度 按位存储游戏分数 表4-6 contro类的主要方法

方法名 tscore(int) passWar()

StarSurfaceView类的设计:StarSurfaceView游戏的框架类,该类继承了SurfaceView类,实现了Runnable,SurfaceHolder.Callback,View.OnKeyListener接口。该类用来绘制游戏的运行界面,用draw()来实现视图的绘制,游戏的背景绘制,方块的绘制,分数的绘制等。run()来循环绘图,从而使游戏持续运行下去,该方法实现了游戏的逻辑功能,对方块的操作,方块的摆放都是在这个方法内实现,调用了draw()实现循环绘制,游戏的运行都是靠该方法实现的。

表4-7 StarSurfaceView类的主要方法

方法名 run() draw() onKeyup(int,KeyEvent)

返回值类型 void void void 简要说明 游戏运行方法 绘制游戏图片 监听按键 返回值类型 void void 简要说明 记录游戏分数并按位存入数组sco 通过分数改变速度控制变量speed

16


基于Android的俄罗斯方块的设计与实现(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国人民银行济南分行关于印发《中国人民银行济南分行金融稳定重

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: