APP下载

基于Android 平台的找茬类游戏设计与实现

2016-07-23李传科季文天

电脑知识与技术 2016年17期

李传科++季文天

摘要:该文介绍在Android应用开发平台下设计与实现手机找茬类游戏,针对传统找茬类游戏,提出两种游戏玩法的创新模式,并且使用LibGDX游戏开发框架实现图形渲染和系统的逻辑处理,具有良好的人机交互体验,对基于LibGDX的Android游戏开发具有一定的参考意义。

关键词:Android;LibGDX;找茬;设计与实现

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)17-0062-04

随着移动互联网时代的不断发展进步,智能手机成为了人们关注的热点话题。特别是搭载Android系统的智能手机拥有量成指数的增长趋势,人们对于在智能手机上的娱乐需求也越来越大,而找茬类游戏作为休闲趣味性一类游戏不仅有着广泛用户群体,更具有一定的市场空间。因为其占手机资源小和操作简单性等特点,在手机游戏中具有较强的市场竞争力。

1 游戏背景

目前的智能手机游戏主要有休闲益智、角色扮演、射击游戏、动作冒险、棋牌游戏、塔防游戏等类型游戏。而根据智库在线数据统计,休闲益智类型游戏的增长量处于第一位,角色扮演位居第二,动作冒险第三。其中休闲益智游戏最大的创意是其游戏规则,玩家需要以自己的智慧对游戏规则进行思考,判断从而通关以获得成就感。休闲益智类游戏对玩家操作要求不高,是手机中游戏中受众面最广的游戏。

找茬类的游戏是一种经典的休闲益智类游戏。使用多组参照图片作为游戏目标,在原图上加入多处微弱的不同点供玩家进行找茬,那么玩家需要在限定的时间内以最快的速度找出出两张图片中的不同处方能过关。游戏规则通俗易懂,操作方式简单明了,主要考验玩家的观察能力以及使用道具的决策能力,适合各个年龄层的玩家。

2 开发相关技术

2.1 Android

Android是基于Linux平台的开源智能手机操作系统,它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。

Android系统架构从上到下来看整个系统软件层次结构主要分成四个部分:应用程序(Application Layer),应用程序框架(Application Framework),各种库(Libraries)和Android运行环境(Android Runtime),Linux内核(Linux Kernel)。一个Android应用程序,主要由Activity、BroadcastReceiver、Service、ContentProvide这些组件部分组成,它们相互独立,又相互调用协调完成工作。对于一个应用程序来说,不一定这四个组件部分都需要,但是其中Activity、BroadcastReceiver和Service是Android最基本的三个组件。而这些组件都必须被系统全局配置控制文件AndroidManifest.xml进行声明才能使用。

2.2 LibGDX框架

LibGDX游戏开发框架一般包括Input、Audio、Files、Graphics、Math、Physics、这些主要模块,基于LigGDX实现Android游戏的开发,基本上是对框架里对这些模块类实例的引用,它们是实现游戏各种功能不可少的功能模块。其分别对应了LibGDX中的输入模块、音频模块、音频操作,文件模块,图像模块,数学计算模块、物理引擎模块,分别用于处理应用程序基本信息、图像、音视频、文件和用户输入。除此之外,LibGDX框架中还包含有2D/3D游戏组件Scenes和LibGDX内置工具类Utils。

LibGDX当前支持Desktop Applications 和Android Applications两个后端。而Application做为任意libGDX工程的主入口点,要创建基于libGDX框架的应用程序,首先要创建主类MainActivity继承于LigGDX的父类 AndroidApplication,而其中 AndroidApplication又继承自Android的基类Activity,起到了一个Activity的作用。而在LigGDX开发中实际的显示工作则是交给一个实现了ApplicationListener接口的类来完成。其作用是初始化Application。ApplicationListener接口是用来更新游戏状态,即游戏逻辑,它提供了合适的方法来访Graphics, Audio, Input and File I/O等模块。

3 《水果找茬》游戏设计

3.1 游戏模式设计

本次设计的《水果找茬》Android手机游戏以水果作为主题,在传统的找茬挑战模式基础上衍生出关卡挑战和时间挑战,即“关卡”和“竞速”两种游戏模式。同时在游戏基本功能需求设计的基础上,还为游戏设计了“放大镜”和“时间”道具的使用以及金币和分数四种游戏元素。

游戏关卡模式是基于每张图片创建10处细微不同点,每次游戏都会在10处不同点中随机抽取5处不同点进行分布显示。一共有25个关卡,唯一的过关条件即在规定时间内找寻5处不同点即可通关,否则当局游戏失败。胜利通关将解锁下一关继续游戏。

然而本游戏设计针对传统模式提出了创新玩法:在竞速模式中撇弃了关卡的晋级模式,基于传统的找茬游戏规则,采用时间比赛机制,玩家在相对较长的限定时间内对所有找茬图片连续进行画面的找茬,图片显示基于随机原则。竞速模式在游戏的过程中根据找茬的速度和准确率进行相应的分数累积,最终分数累积最高者为竞速模式的冠军,最高分数会一直显示直到被下一个挑战者破纪录为止。游戏模式设计如图1所示。

3.2 游戏功能设计

依据游戏模式设计,通过主页可进入“关卡”或“竞速”游戏模式,游戏界面之间主要通过LibGDX控制实现跳转。并且在游戏中可以使用“放大镜”、“时间”道具,通过游戏可以赚取一定的金币,使用金币能够购买游戏道具。其中“关卡”模式业务流程如图2所示。

(1) 关卡选择:关卡选择是进入关卡游戏的必经路径。

(2) 关卡游戏:实现关卡游戏的主功能,在该游戏界面中进行图片找茬。

(3) 暂停:可以暂停游戏,并进入游戏道具商城。

暂停进入道具商城可以进行如下行为:

①“放大镜”购买:进行“放大镜”道具的购买,每个50金币。

②“时间”购买:进行“时间”道具的购买,每个100金币。

③退出游戏:如果想退出当前游戏状态,则通过暂停界面退出游戏按钮退回到关卡选择界面或者开始界面。

④继续游戏:点击继续游戏按钮,将继续暂停之前的游戏状态。

(4) 胜利:胜利界面是关卡游戏过关的状态数据显示。

胜利模块功能用例分别如下:

①显示金币奖励:关卡过关后所得分数奖励显示。

②显示分数奖励:关卡过关后所得金币奖励显示。

③显示“生活小贴士”:关卡过关后显示的水果相关常识。

④下一关:点击“下一关”按钮,将继续下一关卡游戏。

④分享:点击“分享”按钮,将本游戏信息进行好友分享。

(5) 使用“放大镜”道具:功能为在个数不为0的情况下通过“放大镜”道具完成一次图片不同点找茬,初始为5个。

(6) 使用“时间”道具:功能为在个数不为0的情况下通过“时间”道具让时间暂停30秒,初始为5个。

3.3 游戏功能用例设计

1)游戏开始界面

游戏所有系统功能集中于开始界面,主要包括游戏模式入口、积分排行获取、背景音乐控制、关于游戏、微信连接等,以下图3是游戏开始场景的功能用例图。

2)关卡模式

关卡模式主要包含关卡选择、关卡游戏,关卡游戏中玩家可以使用“放大镜”和“时间”道具,查看当前游戏状态信息,暂停游戏等,关卡过关后会产生胜利界面。关卡模式功能用例图如图4所示。

3)竞速模式

竞速模式主要实现竞速游戏,在游戏中玩家可以使用“放大镜”和“时间”道具,查看当前游戏状态信息,暂停游戏等,竞速游戏结束后会产生记录界面显示游戏得分信息。竞速模式功能用例图如图5所示。

4 《水果找茬》游戏实现

4.1 基于LibGDX框架实现

本游戏系统是基于LibGDX游戏开发框架实现,LibGDX控制着整个游戏系统的逻辑运行。在LibGDX游戏开发框架中支持Game-Screen模式,即只有一个Game,Application作为整个Game的入口,在Application上有多个Game的场景Screen,每次总有一个场景是显示在最顶端。而每个场景相当于一个小舞台,在这舞台上有属于自己的元素集,这些元素都有自己的业务模型。而整个游戏系统架构是基于MVC的设计模式。由于MVC采用了分层模块化结构,即View、Model和Controller层,对应视图层,逻辑控制层和业务模型层。

根据MVC结构分别实现了界面功能类,业务处理类,逻辑控制类。其中界面功能类主要实现模块是游戏UI部分,分别有LogoScreen类、StartScreen类、LevelSelectScreen类、LevelGameScreen类和TimeGameScreen类;业务处理类作为Model层封装了游戏的逻辑处理,主要包括了游戏屏幕显示及切换,游戏按钮,游戏数据管理,游戏刚体碰撞特效处理,以及对游戏音效播放处理等等;而游戏的逻辑控制主要交给LibGDX游戏开发框架提供的Screen、InputProcessor等接口实现,Screen是基于LibGDX开发框架界面显示要实现的接口方法,通过实现同一个Screen接口使得多个界面模块之间相互协同工作,同时多个Screen之间主要通过setScreen来切换;而InputProcessor接口是用于接收从键盘和触摸屏的输入事件,为此必须进行方法注册Gdx.input.setInputProcessor(InputProcessor)。

这些界面功能类,业务处理类,逻辑控制类虽然分属不同的功能层,分别负责不同的职能,但是彼此间相互依赖,相互协作共同完成系统功能。这些功能相似的类一般都被归属于同一个命名空间,也称为包。图6说明了本游戏各包中所包含的各以及包之间的关系。

4.2 实现界面

1)开始界面作为游戏功能页面,承接了Logo界面的切换,通过Screen接口中的setScreen方法实现。主要功能包括“水果找茬”背景图片和logo图片的渲染,游戏音效的开与关设置,游戏开发信息显示,调取积分排行榜,切换到微信接口,显示游戏通过的关卡数,游戏模式入口等,实现界面如图7、8所示。

2)关卡模式中总共有25个关卡,关卡的晋级是从最低的1关卡开始逐层通关解锁,已解锁的关卡可以进行重复游戏。游戏有记录当前关卡功能,方便玩家下次进入游戏直接从上次关卡点开始通关游戏,如图9所示。另外在游戏中可以借助“放大镜”和“时间”道具的帮助,如果道具用完需暂停游戏进入道具商城(如图12所示)分别使用游戏中奖励的金币进行购买,游戏每一关胜利会显示当前积分,并且在胜利界面会显示“生活小贴士”,主要目的在于在游戏过程当中提升玩家的生活常识,如图11所示。

游戏画面效果方面,游戏中加入了时间条绘制,并实现时间条倒计时,游戏在错误点找茬中加入了错误点画圈效果,声音方面加入了游戏背景音乐和找茬时正确与错误音效,对于玩家来说是一个很不错的体验,如图10所示。

3)竞速游戏模块与关卡游戏不同之处在于竞速模式是以时间赛跑模式进行游戏,游戏规定在300秒的时间内看谁能获得积分高。但是在竞速游戏模式中并不产生金币,因此在竞速模式中不能购买“放大镜”和“时间”道具,每局玩家都是同等的各5个“放大镜”和“时间”道具。在300秒时间结束之后则产生当局游戏分数,如果当局游戏得分高于之前游戏记录最高分,则记录刷新,否则挑战失败。实现效果如图13、14所示。

5 结束语

由于当前Android智能手机市场的广阔前景使得Android平台得到了手机游戏开发商的青睐。而游戏引擎是游戏开发的关键技术,在当前Android平台游戏开发引擎并不成熟的情况,能够引用好的游戏开发引擎是开发高质量游戏的关键。LibGDX游戏开发框架作为一款功能强大的游戏开发引擎,本课题结合LibGDX游戏开发引擎的研究,基于Android开发平台分析设计并实现了一款创新型找茬类休闲趣味游戏《水果找茬》,具有一定的实际意义。

参考文献:

[1] 董昆.手机游戏的发展现状及特点[J].数字技术与应用,2011(1).

[2] 韩百序. 基于Android平台的游戏开发[D].吉林大学,2015.

[3] 蒋政华.基于Libgdx的Android关卡类游戏设计与实现[D].华中科技大学,2013.

[4] 郭东恩,吴刚.基于Android平台的数独游戏设计与实现[J].计算机与数字工程,2012(3):46-48.

[5] 吴庆林. 基于libGDX的Android游戏研究与开发[D]. 华南理工大学, 2012.

[6] 朱成亮.基于Android平台游戏引擎的设计与实现[D].安徽理工大学,2011.

[7] 公磊,周聪.基于Android的移动端应用程序开发与研究[J].计算机与现代化,2008(8):85-89.

[8] 蔡长安,仇亚东.基于J2ME的手机游戏开发[J].计算机应用与软件,2008(9):188-190.

[9] 曾玲 . libGDX游戏引擎的研究与应用[D].江西:南昌大学,2013.

[10] 吴建,郑潮,汪杰. UML基础与Rose建模案例[M].北京:人民邮电出版社,2004.