张小琴,王露露
基于Android平台的打地鼠游戏设计与实现
张小琴,王露露
(南京航空航天大学金城学院 信息工程学院,江苏 南京 210000)
随着智能移动终端的普及,手机游戏逐渐成为游戏行业的主力军,成为人们休闲娱乐、打发时间的利器。因为Android操作系统的开源性等特点,基于Android平台的手机游戏占据了手游市场巨大的份额。为了突破大部分手游仅针对年轻用户的局限,本文基于Android平台设计了一款老少皆宜的打地鼠游戏。文中详细叙述了打地鼠游戏页面布局、UI组件设计、各组成模块功能的实现过程。经测试,所设计的打地鼠游戏界面友好、功能齐全、操作方便。该游戏拓宽了游戏人群,不仅年轻人可以娱乐,小孩、老人也可以很方便地使用这款游戏平台,且在娱乐休闲的同时可以锻炼反应能力、手眼协调能力。
Android;手机游戏;打地鼠游戏;UI组件
手机游戏是指消费者利用智能移动终端随时随地都可以进行的游戏,手机游戏软件在移动终端应用软件中占有重要的地位[1]。随着智能手机的普及,各种智能手机操作系统陆续而出,而市面上大部分移动终端都是基于Android操作系统的,因此基于Android平台的手机游戏软件拥有庞大的用户人群[2,3]。
随着手游市场的发展,亟需开发具有创新性的手游产品,此创新包含两个方面:一是让游戏老少皆宜,二是让游戏能够不断延续[4,5]。从统计数据看目前手机游戏玩家中,18-24岁的年轻用户占据了70%以上[6],因此开发一款老少皆宜的手游更具发展潜力。
打地鼠游戏是生活中常见的一款老少皆宜的休闲娱乐小游戏,玩法简单,考验反应能力,同时锻炼手眼的协调能力。目前市面上除了传统的机械款的打地鼠游戏设备,还有基于单片机、基于PLD、基于Authorware等开发的打地鼠游戏平台[7,8,9]。这些游戏设备或者平台能够拥有打地鼠的游戏功能,但是不利于大规模传播和扩展。
在手游发展迅速的背景下,结合Android移动终端的普遍性以及打地鼠游戏适用人群广泛的特点,本文基于Android平台开发了一款打地鼠游戏,该游戏模拟机械打地鼠游戏设备,在固定区域内随机出现地鼠,用锤子打击地鼠,击中得分。该游戏平台界面美观、功能简单、操作方便,非常适合小孩、老人等初步接触手游的人群休闲娱乐。
Android是由Google公司推出的一种以Linux为基础的开放源码的操作系统,主要适用于移动设备中,例如手机、平板电脑等终端设备[10,11,12]。对于Android系统来说,最大的特点就是其开放的源码。这一点使得更多的软件供应商和开发商能分享共同利益,同时它和互联网紧密相联,这使得开发人员移植互联网应用变得更加容易。
Android系统架构分为四层,包括:Linux核心层、系统运行库层、应用程序架构层、应用程序 层[10,11,12]。Linux核心层实现安全性、内存管理、进程管理和驱动模型等功能;系统运行库层提供各种程序库给Android系统中不同的组件使用;应用程序架构层主要提供API接口供上层调用;应用程序层是面对用户的,提供各种应用程序,如Email客户端、日历等。
开源的代码、完整的架构,使得Android系统得到了飞速的发展和应用[13,14,15]。Android平台是开放性的平台。Android联盟欢迎任何产商的加入。这可以让Android拥有更多的开发者,从而带动更多的消费者。
在进行程序设计之前首先要分析游戏需要达到的功能,该游戏主要功能为在规定区域内会随机冒出地鼠,在规定时间内点击地鼠,击中计分。其它还需要包含规则说明、背景音乐播放与暂停、计分统计与显示等功能。对功能进行模块划分,打地鼠游戏主要功能结构如图1所示。
在进行程序设计的时候,根据功能模块的划分,结合Android平台程序的设计过程与特点,整个设计分为以下几个部分:页面布局、UI组件设计;主页面模块设计;游戏说明页面模块设计;游戏背景音乐模块设计;锤子模块设计;地鼠随机位置模块设计;打中地鼠计分模块设计;游戏结束页面模块设计等。
图1 打地鼠游戏主要功能结构
在进行具体功能程序设计之前先进行页面布局,首先在Android集成开发工具Android studio下创建一个新项目,将这个游戏项目中用到的背景、开始、退出、暂停、地鼠、锤子等图片资源放到源文件目录下后缀名为.ldpi的文件夹中[16,17,18,19,20]。文件目录界面如图2所示。
图2 图片资源文件目录
Android Studio中的实时布局功能允许在无需将应用程序运行在设备中的前提下,直接预览应用的用户界面。Android studio中采用非常方便简单的XML文件来进行页面布局,在XML布局文件中定义布局管理器,然后按照设计需求以及设计风格安排背景图片、操作按钮、信息显示模块在整个界面中的位置等,这种方法可以将逻辑控制的Java代码和布局界面分离开,这样让整个结构更加明了清晰。具体布局页面如图3所示,在Activity中显示XML文件布局内容;在Preview面板中显示布局预览 图[16,17,18,19,20]。
UI组件模块设计是整个程序设计中非常重要的一部分,用户通过UI组件进行人机交互。常见的UI组件有文本类组件、按钮类组件、进度条组件、图像类组件以及列表类组件等。本游戏设计中主要使用的是按钮类组件,主要包括单选按钮、复选按钮、普通按钮和图片按钮等。其中使用Button类表示普通按钮,一般用于触发一个指定事件;使用ImageButton类来表示触发的一个指定事件,将用图片表示这个按钮;RadioButton类表示单选按钮;CheckBox类来表示复选按钮。按钮类组件继承关系如图4所示。
在3.1节进行界面布局之后,游戏主界面上有三个按钮,这三个按钮为新游戏、游戏说明、以及退出按钮,都设计为普通按钮,具体代码如下。
图3 布局页面
图4 按钮类组件继承关系
@OnClick({R.id.btn_start, R.id.btn_help,R. id.btn_quit})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.btn_start:
//开始按钮
startActivity(new Intent(this, GameActivity.class));
finish();
break;
case R.id.btn_help:
//帮助按钮(游戏说明按钮)
startActivity(new Intent(this, HelpActivity.class));
break;
case R.id.btn_quit:
//退出按钮
quitGame();
break;
default:
break;
在科学施用有机肥的基础上,农户还应根据花生的生长特性以及种植地区的土壤性质进行其他肥料的配方使用。例如花生的根瘤菌可以起到固定氮素的作用,因此对于氮肥的使用应该适量减少,并增加磷钾肥的施用。在此基础上还需要对中微肥以及生物肥进行相应的补充,这样才可以保证花生更好的生长。在普通花生地块中,可以采用每亩施用尿素16kg、过磷酸钙50kg以及硫酸钾12kg的施肥量进行施肥。对于高产花生田可以将其中一半的化肥用量转化成控释肥,从而更好的保证花生生长的后期不会出现脱肥的现象。对于中微肥的使用应按照其使用说明严格进行,防治因为用量过大引起的出苗困难。
}
}
地鼠出现位置,这个模块的设计,是整个游戏中非常重要的环节,是游戏开展的前提,地鼠的出现位置是随机事件。首先创建一个二维数组来保存每个洞穴的位置坐标,然后创建一个线程对象来控制地鼠随机出现的位置。
具体代码如下:
private void initPostion() {
for (int i = 0; i < molePostionArr.length; i++) {
postionX = postionXArr[(molePostionArr.length - i) % 3];
postionY = postionYArr[i % 4];
molePostionArr[i][0] = postionX + 90;
molePostionArr[i][1] = postionY - 50;
ImageView burrowView = new ImageView(this);
burrowView.setImageDrawable(getDrawable(R.drawable.burrow));
burrowView.setX(postionX);
burrowView.setY(postionY);
burrowView.setZ(0.0f);
mGameLayout.addView(burrowView);
}
}
@Override
protected void onStart() {
super.onStart();
initVoice();
mMoleRunnable = new Runnable() {
@Override
public void run() {
mMessage = mHandler.obtainMessage(MOLE);
mMessage.arg1 = new Random().nextInt(8);
mHandler.sendMessage(mMessage);
mHandler.postDelayed(this, moleTime);
}
};
mHandler.post(mMoleRunnable);
}
击中地鼠的个数计数计分是在布局管理器中通过添加ImageView组件,并为该组件添加触摸监听器,在重写的onTouch()方法中,首先设置地鼠不显示,然后成功打中地鼠后,将计数值加1,再通过消息提示框提示打中了几个地鼠。代码如下:
mMole.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mMole.setSelected(true);
mSoundPool.play(mSoundId, 1, 1, 0, 0, 1);
mHandler.sendEmptyMessage(HIT_COUNT);
return false;
}
});
}
@SuppressLint("ClickableViewAccessibility")
在本游戏设计中是通过创建触摸监听器,来监听玩家锤子的地点。在每局游戏开始前要进行初始化锤子的操作,然后再重绘图片来显示当前玩家的锤子位置。具体代码如下:
@SuppressLint("ClickableViewAccessibility")
private void initHammer() {
//初始化MoveView
mMoveView = new MoveView(this);
mMoveView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mMoveView.currentX = event.getX();
mMoveView.currentY = event.getY();
//重绘图片
mMoveView.invalidate();
return false;
}
});
mMoveView.setZ(2.0f);
mGameLayout.addView(mMoveView);
}
在游戏设计中还有游戏说明模块、背景音乐模块、游戏结束模块等。
在设计游戏说明界面时,需要将游戏规则和注意事项表达清楚,且需要在游戏说明界面添加一个返回按钮,让用户可以返回游戏主界面。
背景音乐设计时,要考虑开始游戏时的音乐、暂停游戏时的音乐、打中老鼠时的特殊音效以及游戏过程中是否播放音乐等设计,这些功能需要对应不同的设置。游戏的背景音乐是循环播放的,暂停游戏时,背景音乐随之暂停。
游戏结束页面在一个游戏设计中是不可或缺的。本游戏的设计中,在时间倒计时返回“-1”时游戏结束,系统会给出提示框,显示游戏结束,并且告诉玩家一共打中多少只地鼠。此时会给玩家两个选项,“退出”和“返回主菜单”,玩家可以根据自己的情况去选择。若玩家选择退出游戏,系统会销毁页面并结束进程。
篇幅原因,此类模块具体代码省略。
点开打地鼠游戏的APP会出现一个欢乐打地鼠的游戏名称的主界面。在游戏名称的下方显示这本游戏中最重要的几个按钮,分别是“新游戏”,“游戏说明”以及“退出”按钮。游戏主界面如图5所示。点击新游戏会开启新一轮打地鼠的游戏界面。点击游戏说明会出现有关本游戏规则的详细说明,浏览完毕可以点击相应的返回按钮回到主界面。如果此时不想玩游戏就可以直接点击退出按钮即可。
图5 打地鼠游戏主界面
点击新游戏之后就进入了打地鼠的游戏操作界面,游戏操作界面如图6所示。在游戏界面的特定区域内随机出现地鼠,用手点击地鼠锤子就移动到地鼠对应地点进行击打操作,对应页面顶部的计分器会累计打击地鼠的分数,击中一次计一分。游戏过程中,除了显示得分,还需要显示游戏的剩余时间,这样可以让玩家一目了然的知道自己在本轮游戏中的情况,且在玩家连续打中20个地鼠时会增加游戏时间作为奖励。
玩家在游戏的过程中,可以通过背景音乐来知道自己游戏的状态。在游戏中本身会有背景音乐,在打中地鼠之后也会有不同于背景音乐的提示音。游戏中玩家也可以自己选择是否需要背景音乐和游戏提示音乐。关闭和开启音乐的按钮为游戏页面右上角的扬声器按钮。
游戏中存在玩家要暂停游戏的情况,游戏界面右上角有一个“开始/暂停”的按钮,点击这个按钮时,可以达到开始或暂停游戏的目的。且当点击这个按钮暂停时,地鼠会隐藏起来,等再次点击该按钮继续游戏时,地鼠会再次出现。
图6 打地鼠游戏操作界面
游戏结束之后,会弹出一个提示框,该提示框会告诉玩家:游戏结束,您一共打了多少只地鼠。玩家可以选择是“退出游戏”还是“返回主菜单”。这是的时间倒计时会显示“-1s”。结束界面如图7所示。
图7 打地鼠游戏结束界面
随着智能移动终端的发展,手机游戏越来越普及,为了突破大部分手游针对年轻玩家的局限,本文基于Android操作系统开发了一款老少皆宜的打地鼠游戏平台。该游戏界面友好,操作简单,功能齐全,是一款适用于各个年龄段的娱乐休闲类游戏。
该游戏平台功能可以进一步完善,地洞中冒出的动物可以由单一的地鼠变为多种动物,对应击中得分也做相应的调整,不同的动物得分不一样,连续击打获得的奖励机制不一样,丰富游戏内容,使得游戏更具有趣味性。在后期,还可以借助流行的微信等第三方平台进行绑定推广,完善程序接口,达到无需独立安装APP,使用小程序等将单机手游推向网络手游[3,4]。
[1] 唐仪, 许璐, 朱瑜. 手游行业的发展现状及未来预期[J]. 纳税, 2018(18):153-154.
[2] 陈羽修.基于Android贪吃蛇游戏的设计与实现[J]. 科技视界, 2016(1): 220-221.
[3] 丁群, 姚振浩, 蔡松江, 陈岩相.手机游戏市场分析[J].信息技术, 2015(32): 80-81.
[4] 许璐. 手游, 移动战争的演练场[J]. 广告大观(综合版), 2014(1): 41-43.
[5] 许红敬. 手游市场高成长的背后亟需创新与专注[J]. 消费电子, 2014(3): 44-46.
[6] 寇汉. 我国目前手机游戏产业存在的问题研究[J]. 中国市场, 2017(29): 118-119.
[7] 覃丽姗, 李宁, 王恬灏.基于单片机的打地鼠游戏设计[J].山东工业技术, 2018(16): 130.
[8] 李倩.基于PLD的打地鼠游戏的设计与实现[J]. 中国现代教育装备, 2015(7): 121-123.
[9] 毋玉芝, 段向东. 基于Authorware的打地鼠游戏设计[J]. 科技信息, 2008(4): 79-80.
[10] 盖索林编. Google Android开发入门指南(第2版)[M]. 北京: 人民邮电出版社, 2009: 2-6.
[11] 李佐彬. Android开发入门与实战体验[M]. 北京: 机械工业出版社, 2011: 5-45.
[12] 李刚. 疯狂Android讲义(第3版)[M]. 北京: 电子工业出版社, 2017:1-29.
[13] 邹光临.Android与iOS对比分析即竞争优缺点[J]. 科技与创新, 2017(10): 65.
[14] 腾讯科技.Android在华市场份额增至78.8%, iOS份额萎缩[J]. 电子技术与软件工程, 2016(14): 5.
[15] 赵益泽. 浅析安卓系统, iOS, Windows Phone系统的差异性[J]. 数字通信视界, 2017(11): 147-148.
[16] 欧阳燊. Android Studio开发实战: 从零基础到App上线[M]. 北京: 清华大学出版社, 2017: 23-299.
[17] 郭霖. 第一行代码 Android 第2版[M]. 北京: 人民邮电出版社, 2016: 76-169.
[18] 王辰龙. 高级Android开发强化实战[M]. 北京: 电子工业出版社, 2018: 1-107.
[19] 明日学院. Android开发从入门到精通[M]. 北京: 水利水电出版社, 2017: 45-160.
[20] 毕小朋. 精通Android Studio[M]. 北京: 清华大学出版社, 2017: 61-99.
The Design and Implementation of Whack-A-Mole Based on Android
ZHANG Xiao-qin, WANG Lu-lu
(Nanjing University of Aeronautics and Astronautics Jincheng College College of Information Engineering, Nanjing Jiangsu 210000)
With the popularity of intelligent mobile terminals, mobile games have become the main force in the game industry and an effective way for recreation. Because of open-source about Android operating system, mobile phone games based on Android platform occupy a huge share of the market. Because almost all the mobile games are designed for young users, in order to break the limitation, a Whack-A-Mole based on Android platform which can be played by all the people is designed. The layout of the game, the design of UI components, and the realization process of each module are described in details. The game is designed with a friendly interface and complete functions, and it can be operated conveniently. The age of the game users is widened, this mobile game is not only for young people to play, children and old people can also easily use this game platform. The response ability and hand eye coordination of users can be exercised when playing this game.
Android; Mobile games; Whack-A-Mole; UI components
TP311.52
A
10.3969/j.issn.1003-6970.2018.09.034
张小琴(1984-),女,硕士,南京航空航天大学金城学院,讲师,研究方向:信号与信息处理;王露露(1994-),女,学士,南京航空航天大学金城学院,本科生,研究方向:信息工程。
本文著录格式:张小琴,王露露. 基于Android平台的打地鼠游戏设计与实现[J]. 软件,2018,39(9):170-175