连连看游戏分析设计与实现综述

上传人:最**** 文档编号:115571186 上传时间:2019-11-14 格式:DOCX 页数:42 大小:1.32MB
返回 下载 相关 举报
连连看游戏分析设计与实现综述_第1页
第1页 / 共42页
连连看游戏分析设计与实现综述_第2页
第2页 / 共42页
连连看游戏分析设计与实现综述_第3页
第3页 / 共42页
连连看游戏分析设计与实现综述_第4页
第4页 / 共42页
连连看游戏分析设计与实现综述_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《连连看游戏分析设计与实现综述》由会员分享,可在线阅读,更多相关《连连看游戏分析设计与实现综述(42页珍藏版)》请在金锄头文库上搜索。

1、连连看游戏分析设计与实现1连连看(picture matching)游戏简介连连看游戏界面上均匀分布2N个尺寸相同的图片,每张图片在游戏中都会出现偶数次,游戏玩家需要依次找到两张相同的图片,而且这两张图片之间只用横线、竖线相连(连线上不能有其他图片),并且连线的条数不超过3条,那么游戏会消除这两个图片。连连看是一款广受欢迎的小游戏,它具有玩法简单、耗时少等特征,尤其适合广大白领女性在办公室里休闲、放松。2.分析连连看连连看是一个小的、简单的游戏程序,所以不需要大量的分析。首先,我们列出用例。用例不多。有:用户开始游戏,用户进行配对图片。图1.连连看用例图下一步就是为每个用例和相关场景写一个文本

2、描述。连连看相当简单,只有一个参与者,就是游戏玩家。在使用这个程序的过程中也不会碰到出错的情况,所以场景也很短。开始游戏的场景:玩家打开应用程序,点击“开始”按钮,会生成三种不同的图片排列方式(矩阵、竖向、横向排列)。配对图片的场景:玩家对图片进行配对,配好后会消除这对图片。当在规定的时间内配对完所有图片时,弹出胜利对话框,否则弹出失败对话框。尽管只有2个简单用例,但它们确实揭示了我们所需完成的任务的重要方面。大的应用程序会有更多的用例,有些更为复杂,有些一样简单。用例导致了场景。场景通常要比这个例子中的复杂,反映了在某项特征或功能上,用户和开发者之间的更为细节化的合约。每个场景所需的细节程序

3、取决于许多方面,但将场景写下来有助于确保每个人理解系统应该完成什么任务。我们在连连看的用例和场景的呈现上不是太正规。有时,这种非正规的方式和几张纸或白板就足够了。更为正规的面向对象方法学在确定用例及相应场景方面有更正规的做法,也提供了特定的软件来创建和跟踪用例和场景。3.(分析阶段)发现对象、属性和操作通过阅读问题描述以及实际情况,我们得到以下名词清单:图片,游戏视图,图片的排列方式,服务组件。包图通过对问题的声明的名词进行分析,我们得到游戏的包图:comexamplelinkboardimplobjectviewutil 图2,连连看包图其中util包负责与图片加载有关的处理,view包负责

4、呈现界面,Object包是整个游戏的配置参数,impl是图片的排列方式,board包含了整个游戏的面板类。Link包全部的包和Link类(游戏程序的入口)。Util包中有ImageUtil类Object包中有GameConf和LinkInfo类Board包中有AbstraBoard和GameService类View包中有GameView、Piece、PieceImage类Board.impl包中有FullBoard、HorizontalBoard、VerticalBoard类Link包中有GameServiceImpl和Link类。类图由于类比较多,属性和方法更多,因此类图只画出类名称,以后再

5、详细说明类的属性和方法。图3.连连看类图1. PiececImage类图4.PieceImge类 PieceImage代表了该方块上的图片,使用它来封装:Bitmap对象和图片资源ID。其中Bitmap对象用于在游戏界面上绘制方块;而图片资源的ID则代表了该Piece对象的标识,当两个Piece所封装的图片资源的ID相等时,即可认为这两个Piece上的图片相同。2. Piece类图5.Piece类一个Piece对象代表游戏界面上的一个方块,它除了封装它在左上角在游戏界面中X,Y坐标。3. GameView类 图6.GameView类 GameView主要是根据游戏的状态数据来绘制界面上的方块,

6、GameView继承了View组件,重写了View组件上onDraw(Canvas canvas)方法,重写该方法主要就是绘制游戏里剩余的方块,除此之外,它还会负责绘制连接方法的连接线。4. GameConf图7.GameConf类GameConf类是游戏的配置类,记录方块的大小像素,图片的起始坐标,运行时间,方块的维数,游戏上下文等。5. LinkInfo类 图8.LinkInfo类LinkInfo是一个非常简单的工具类,它用于封装两个方块之间的连接信息其实就是封装一个List,List里保存了连接线需要经过的点。连连看的游戏规则约定:两个方块之间最多只能用3条线段相连,也就是说最多只能有2

7、个“拐点”,加上两个方块的中心,方块的连接信息最多只需要4个连接点。6. 连连看的状态数据模型实际上连连看的游戏界面是一个N*M的风格,每个网格上显示一张图片。这个网格只需要用一个二维数据来定义即可,而每个网格上所显示的图片对于底层的数据模型来说,不同的图片对应于不同的数值即可。图9显示所了数据模型的示意。012113 图9 连连看的数据模型对于图9所示的数据模型,只要让数值为0的网络上不绘制图片,其他数值的网络则绘制相应的图片,就可显示出连连看的游戏界面了。本程序实际上并不是直接使用int数组来保存游戏的状态数据,而是采用Piece来保存游戏的状态模型因为Piece对象封装的信息更多,不仅包

8、含了该方块的左上角的X、Y坐标,而且还包含了该Piece所显示的图片、图片ID这个图片ID就可作为该Piece的数据。为了初始化游戏状态,程序需要创建一个Piece数组,为此程序定义一个AbstractBoard抽象类。 图10.AbstractBoard类上面有一个createPieces(config,pieces)抽象方法来创建一个List集合,该抽象方法将会交给其子类去实现。由于连连看游戏的初始状态可能有很多种比如横向分布、竖向分布的方块、矩阵排列的方块、随机分布的方块等,该程序为了考虑以后的扩展性,此处只是采用了模板模式:定义AbstractBoard抽象基类来完成通用的代码,而暂时

9、无法确定、需要子类实现的方法定义成createPieces(GameConf config,Piecepieces)抽象方法。矩阵排列的方块 图11.FullBoard类竖向排列的方块 图12.VerticalBoard横向排列的方块 图13.HorizontalBoard类ImageUtil工具类(静态类),它的作用是自动搜寻/res/drawable-mdpi目录下的图片,并根据需要随机读取该目录下的图片 图14.ImageUtil类7. 实现游戏Activity 图15.Link类Link类是游戏的入口,通过它来负责显示,Activity还需要为游戏界面的按钮、GameView组件的事件

10、提供事件监听器。对于GameView组件,程序需要监听用户的触碰动作,当用户触碰屏幕时,程序需要获取用户触碰的是哪个方块,并判断是否需要“消除”该方块。为了判断能否消除该方块,程序需要进行如下判断: 如果程序之前已经选中了某个方块,就判断当前触碰的方块是否能与之前的方块“相连”,如果可相连,则消除两个方块;如果两个方块不可以相连,则把当前方块设置为选中方块。 如果程序之前没有选中方块,直接将当前方块设置为选中方块。Link Activity用的两个类如下: GameConf:负责管理游戏的初始化设置信息 GameService:负责游戏的逻辑实现。8. 实现游戏逻辑GameSerive组件是整

11、个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类,它与游戏实现平台无关,既可在Java Swing程序中使用,也可在Android游戏中使用。 图16.GameServie接口 图17.实现了GameService接口的GameServiceImpl类时序图游戏玩家开始游戏时序图 图18.开始游戏时序图游戏玩家单击“开始”按钮,触发OnClick事件,调用startGame()函数,它启动计时器,记录游戏剩余的时间,同时向GameService发送消息,启动游戏,而GameService则调用AbstractBoard负责生成界面。玩家玩游戏时序图当游戏方块界面生成好

12、后,玩家就可开始玩游戏了。当玩家接触屏幕时,触发触碰事件绑定监听器,Link类调用gameViewTouchDown(e)函数,GameService调用findPiece(touchX,touchy)将玩家刚才选中的图片进行标记,然后调用Links(this.selected,currentPiece)进行配对。如果能的话,则返回消息给Link,Link调用handleSuccessLink(linkInfo,selected,currentPiece,pieces)进行成功连接后的处理。当玩家手指离开屏幕时,调用gameViewTouchUp(MotionEvent e),使GameVie

13、w调用postInvalidate(),对屏幕进行重绘,然后返回给Link。 “连连看”实现虽然本程序比较小,但是代码还是比较多的。这里就不再列出所有的代码了。只列出Link类和GameServiceImpl类的代码,因为这两个类是本程序最重要的。Link类package com.example.link;import java.util.Timer;import java.util.TimerTask;import com.example.link.board.GameService;import com.example.link.object.GameConf;import com.exa

14、mple.link.object.LinkInfo;import com.example.link.view.GameView;import com.example.link.view.Piece;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.os.Vibrator;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号