1、基于Android的三国塔防游戏程序设计与实现基于Android的三国塔防游戏程序设计与实现摘要随着智能手机与平板电脑等移动设备的不断普及与性能的不断提升,移动设备已经不再局限于通讯,而是集通讯、娱乐、办公等多功能于一身,逐渐发展成为人们可随身携带的信息处理平台。而Android系统,作为一款流行的移动设备操作系统,由于其开放性和低成本,已得到越来越多移动设备厂商的支持,成为当前使用率最高的移动操作系统之一。本项目的最终目标是让用户体验一款新型益智休闲的塔防游戏,既提供良好的游戏操作界面,又通过优美的游戏画面和高效平衡的敌我对抗模式提高游戏的可玩性,激发玩家的游戏兴趣。同时,通过在游戏中尝试推
2、送广告、设置游戏等级权限等来创造收益,实现一定的经济价值。最后,该项目的顺利实施,对于培养我们的项目开发能力,提高我们的就业竞争力都具有非常好的促进作用。关键字:Android;游戏;塔防;中国特色;三国The tower defense game of Three Kingdoms based on Android program design and implementationAbstract: With the growing popularity of continuous improvement and performance smartphones and tablet comp
3、uters and other mobile devices, mobile devices are no longer limited to communication, but the set of communication, entertainment, office and other functions in one, and gradually developed into one can carry The information processing platform. As a popular operating system for mobile devices ,the
4、 Android system, has been more and more support for mobile device manufacturers whit its openness and low cost, and become one of the highest rates of mobile operating systems.The ultimate goal of this project is to let player experience a new type of puzzle casual tower defense game, both the game
5、provides a good operating interface, but also improves the playability of the game to excite the players interest in the game by a beautiful picture of the game and the adversarial mode of friend or foe. Finally,it has very good role in training our development capabilities and improving our employm
6、ent competitiveness with the smooth implementation of the project.Keywords: Android; Game; Tower Defence; Chinese characteristics; Three Kingdoms正文目录一、绪论 (一)研究背景和意义 1、手机游戏的发展现状 2、Android 手机平台的发展现状 3、Android 手机平台游戏的市场价值 (二)国内外研究现状 1、保卫萝卜 2、燃烧的蔬菜 3、口袋战争 4、植物大战僵尸2 5、坚守阵地2 6、龙穴塔防2 二、Android基础知识 (一) 环境的搭
7、建 1、 JAVA JDK的安装 2、 eclipse和ADT 3、 Android SDK的安装 4、 创建AVD模拟器 三、游戏技术 (一)点击操作 (二) 画面绘制 1、 双缓冲技术 2、 SurfaceView (三) A*算法 四、程序设计 (一)模块分析 (二) 关键代码分析 1、 图片缩放 2、 游戏帧数的控制 3、 游戏的暂停恢复 4、 游戏的BGM和音效 5、 炮弹轨迹 6、 Enemy、Fighter和Tower 7、 AStar算法和数字地图 8、 攻击策略 五、展示 (一) 欢迎界面 (二)封面 (三)关卡选择界面 (四) 战斗界面 (五)失败与胜利界面 六、性能优化
8、(一) 资源体积的优化 (二) 代码的优化 七、总结与展望 (一)论文总结 (二)个人展望 八、致谢 参考文献 一、绪论(一)研究背景和意义1、手机游戏的发展现状手机游戏,顾名思义就是运行在手机上的游戏。随着科技的发展,现在手机的功能也越来越多,越来越强大。而手机游戏也远远不是我们印象中的什么“俄罗斯方块”捕鱼达人“贪吃蛇”之类画面简陋,规则简单的游戏,进而发展到了可以和掌上游戏机媲美,具有很强的娱乐性和交互性的复杂形态了。又由于手机的便携性,游戏可以随时随地的进行玩耍,手机游戏市场也随之迅速发展1。这些年来,手机游戏市场有了很大的发展,手机游戏已成为使用率最高的手机娱乐应用,占到各种手机娱乐
9、应用比例的78.4%。2010Q4-2012Q3中国手机网游市场规模 图1中国手机网游用户2012年第三季度达到了4120万人,增长幅度为64%。2012年第一季度环比增长8.7%,第二季度环比增长12.1%,第三季度环比增长17%。从12年开始中国手机网游用户规模呈现加速增长的态势,手机网游市场处于快速成长中。又在2013年8月28日,全球领先的移动互联网第三方数据挖掘和整合营销机构艾媒咨询(iiMedia Research) 发布了2013Q2中国手机游戏市场季度监测报告。报告显示,2013Q2我国手机游戏市场规模达到27.6亿元,同比增长63.3%,环比增长21.1%2。2、Androi
10、d 手机平台的发展现状Android一词的本义是指“机器人”,同时也是是Google于2007 年11 月5 日宣布的基于Linux平台的开源手机操作系统名称,该平台由操作系统、中间件、用户界面和用户软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。自从Google发布智能手机Android操作系统平台(2008 年9 月首款Android智能手机G1 上市)以来,Android平台一直以惊人速度挺进,并支持Android智能手机迅速进入领先行列。迄今Android是智能手机市场上最大的赢家,是销售增长最快、最成功的竞争者3。Garter数据显示,2013年Q2Android系统全
11、球市场占有率为79%,总销量为1.77亿部,2012年同期则仅为8000万部,市场份额不足60%。 2013Q1-Q3全球智能手机市场三大主流操作系统市场份额走势 图22013Q1 Android系统市场份额为74.4%,Q3则达到了81.9%,超过八成。Gartner监测数据显示,由于中国市场突飞猛进的发展,使得Android 在Q3突破了80%的市场份额4。3、Android 手机平台游戏的市场价值手机游戏作为娱乐产业中的重要组成部分,更是取得了骄人的业绩。根据Google Play Store的统计情况,Android智能手机与平板之上,游戏的下载量在全部应用中占到了37%的比例5。Go
12、ogle Play Store 2013年9月份各应用下载比例 图3游戏作为 Android 平台最主要的应用,预示着随着Android 手机用户数量的增多,基于Android 平台的手机游戏在未来将有巨大的市场潜力,虽然现阶段在国内研究开发Android 手机游戏的人数并不多,但移动互联网业界的许多人士都对Android 手机游戏未来的发展表示乐观态度,更有业界精英表示,Android 手机游戏是游戏产业的下一个阶段,也是手机游戏的未来。随着人们生活水平的提高和智能手机的普及,娱乐产业得到了快速的发展。手机游戏作为娱乐产业中的重要组成部分,更是取得了骄人的业绩。三国塔防游戏,作为具有浓郁的中
13、国本土特色的一类手机游戏,受到玩家的极力追捧,研究具有新的玩法、新的智能攻防模式的三国塔防游戏,不但能够为玩家贡献一款精美游戏,对于塔防游戏的发展也具有一定的促进作用。Android占据智能机市场份额越来越重,基于Android平台的游戏良莠不齐,且并未出现强大的游戏公司来瓜分市场;同时,Android游戏市场正在蓬勃发展并且需求量巨大,此时研究和开发Android游戏十分有助于抢占市场先机。(二)国内外研究现状 1、保卫是一款包装精美、可爱范儿的塔防游戏,极易上手、灵活多样、搞笑至极!你的任务就是保护好可爱的萝卜,别让怪物吃掉它哦!游戏中每关地图中散布着大量的道具,不同主题配有各自特点的道具
14、,比如在天际主题中,散布在地图上的云朵、彩虹、热气球等,不要因为其萌系卡通的造型,就不忍心清理,要知道清理这些道具后不但扩充可用地形,还会获得50或者更多的金币。每轮游戏清理掉所有道具,还会有更高的成绩。它以精美的画面、创意的角色设计、搞怪的音效打破了大多数玩家对国产游戏的看法,不得不说,这是一款相当有诚意的作品。特点: 冒险模式和 Boss模式 精美的画面,创意的角色设计,搞怪的音效 操作简单,采用网格式布置炮塔 丰富的各类功能炮塔图42、燃烧的蔬菜是一款极具创意的策略类休闲塔防游戏,剧情令人忍俊不禁,首创弹射类塔防玩法让你体验全新的游戏感受。游戏操作极易上手,战斗节奏明快,游戏画面精致,角
15、色造型清新可爱,个性鲜明,游戏内容丰富多样,更有大量关卡等着您挑战!蔬菜们为了抵御变异者的入侵,奋起反击。不同的蔬菜都会在战斗中展现出不同的价值和作用,加上丰富的道具,让战斗异常华丽刺激。游戏中会有多个模式,任务模式中会有几十个关卡和BOSS等着你去挑战。而生存模式,则会让你在休闲时刻体验到不一样的爽快感。特点: 玩法新颖,射击类塔防游戏 画面细腻,特效华丽无比,主角形象丰富可爱 操作手感舒适,体验非凡 游戏内容丰富,战斗乐趣无限,专业的音乐音效图53、口袋是一款休闲互动游戏!游戏中你作为军团首领,不仅需要建设经营基地,还将带领你的军团与全球玩家进行激烈的竞争与对抗!建设发展、造兵打仗;保卫阵
16、地、掠夺资源!游戏初期你可以选择世界中的原住民进行军事演练,在吸收到足够的作战技巧之后,就可以向其他玩家的要塞发起进攻了!特点: 攻守合一的塔防游戏 简单方便的游戏操作 3分钟一场的激烈战争 建设强大的军事要塞 互惠互助的军事联盟图64、植物大战这款游戏想必大家已经是无比熟悉。游戏中包含了冒险、挑战模式和无尽模式,以及成就解锁系统。植物大战僵尸2的玩法非常简单。 一群僵尸想要冲入你的房子,你所要做的就是种植各类植物来阻止僵尸的入侵。植物大战僵尸2成功地借鉴了一些战略游戏的要素采集资源并利用资源建造其它单位。甚至有一些玩家在拿星际的战略往这款游戏中套用,以阐述这款游戏需要在何时发展“经济”,何时
17、发展“兵力”。特点: 题材新颖,玩法丰富 植物种类繁多,功能不一,趣味无穷 卡通的风格,细腻的画面,丰富的游戏音效 延续了前作的故事背景,通过关卡获得新的防御植物 内购模式不仅改变了游戏的玩法,还改变了产品本身的定位图75、坚守是一款自由度和可玩性非常高的塔防类游戏,与之前Android 平台出现的机器人塔防类似,但是画面更加细腻漂亮。玩家需要 建造不同的塔进行布阵,让敌人尽可能在进军自己的基地之前挂掉,需要玩家拥有很强的战略才能顺利过关。依赖堡垒的建造位置,来使得红卫兵的行进路线加以改变,并通过这种方法使得输出最大化,用更加合理的资源达到最大的效果,通常在现实生活中我们叫做资源合理配置与优化
18、。这一点几乎奠定了这款游戏的地位。并且通过不同的堡垒的特效来达到更加优化的配置,这一点是游戏最突出,最诱人的地方,诚然,这也是最考验我们能力水平的地方,不仅仅是塔塔成群,不断升级,放个技能,继续游戏这样的节奏,使得塔防类游戏更加注重策略和思考。特点: 卡通的画面,绚丽的风格 节奏感不错的音乐,营造了刺激的氛围 游戏的操作上非常地完善,放大、缩小、点击非常精确 游戏关卡由简单到复杂,难度渐渐加大 界面上非常的空旷,如何建造,如何让敌人走更远,如何打击更大的路,耐人寻味,可玩性高图8 坚守阵地26、塔防是一款画面非常出色的塔防类型游戏,它的操作与玩法是那种较为传统的塔防游戏,都是通过在道路两旁不断
19、的建立防御塔来攻击敌人,守卫自己的家园。在遥远的古代,人类和龙在这个世界上一直和平生存,但是当人类的皇帝听说吃一颗龙蛋以后就能长生不老,所以派人去搜寻龙蛋,也因此人类和龙的战争就开始。在这款游戏中,你需要帮助正义的龙,来阻止贪婪的人类偷窃龙蛋。特点: 游戏画面精致,剧情内容丰富 龙作为炮塔,并带有各种魔法,富有魔幻色彩 图9二、Android基础知识(一) 环境的搭建1、 JAVA JDK的安装Oracle官网下载:Java SE Development Kit 8 Downloads 下载安装即可。安装完后需配置环境变量(可参考JAVA环境变量配置)配置完后检查是否正确:按WIN + R 键
20、,输入CMD,在打开的窗口中输入javac回车,可以看见类似下面的画面:2、 eclipse和ADTEclipse的选择有两种:第一种:可以去Eclipse官网下载: Eclipse IDE for Java EEDevelopers 。安装好后,在菜单中的 Help - Install New Software 点击ADD按钮,Name:ADT,Location输入http:/dl- 如下图之后按提示一步一步next就好。第二种(推荐):直接去ANDROID官网下载GOOGLE官方已经整合了ADT的eclipse,并且带有最新版Android SDK:Get the SDK ADT Bund
21、le for Windows。打开安装即可。3、 Android SDK的安装打开eclipse,点击菜单中的”Windows”-”Android SDK Manager”,勾选Android 2.3.3(API 10),然后点击”Install 5 packages”下载。4、 创建AVD模拟器在Android SDK安装完后,再打开Eclipse,点击菜单中的”Windows”-”Android Virtual Device Manager”。配置参数如下图:小技巧:开启模拟器后,按Ctrl + F11 可将屏幕切换至横屏。(二) Android生命周期Android生命周期即Androi
22、d APP整个不同状态的过程,包括创建,暂停,恢复,退出等不同的状态。在游戏开发中是一个重要的知识点,它会影响整个游戏框架的设计。下图为Activity的七个生命周期接口Android 生命周期相关的方法 protected void onCreate(Bundle savedInstanceState);在Activity被第一次加载时(即用户点击图标后),当启动程序的第一个窗口时,就会调用onCreate()方法。在Activity调用onDestroy()方法后(即完全退出后),重新进入,onCreate方法也会被重新调用。 protected void onStart();Activi
23、ty出现在屏幕上可见时调用。在调用onCreate()方法后应用会直接调用onStart()方法。或者应用被切换到后台并且已经调用了onStop()方法,当用户重新查看这个应用(界面)时,应用会从stop状态,调用onRestart()方法,并且跳过onCreate()方法,直接执行onStart()方法。因为此时应用的窗口和进程并未被销毁,只是被切换到了后台,仍然还在内存中。 protected void onRestart();在onStop()方法执行后调用。如果应用在被切换至后台,但窗口和进程违背销毁之前,用户又重新切换到了这个界面,那么onRestart()会被调用,而调用onRes
24、tart()方法后会跳过onCreate方法直接去执行onStart()方法。 protected void onResume(); Activity开始与用户有交互时调用(无论是第一次启动还是重新启动,都会调用这个方法)。在调用onStart方法后直接调用onResume()方法。或者应用被切换到后台,但未调用onStop()方法之前,用户又重新查看这个应用(界面)时,应用会跳过onCreate()和onStart()方法,直接执行onResume()方法。 protected void onPause();Activity被暂停时调用次方法,用于保护现场。当前界面被切换到后台时调用。 pr
25、otected void onStop();Activity被停止,并且不可见时被调用。在onPause()方法执行后被调用。应用被切换到后台并在一段时间内用户没有重新查看这个界面,那么onStop()方法会被调用;或者用户直接按了返回键,则这个界面在销毁之前会调用onStop()方法。 protected void onDestroy();Activity在被完全从内存中移除时调用次方法,被调用时可能是直接调用onFinish()方法退出程序或者是在资源紧缺时系统会停止一些应用并释放它们的资源。Android会在内存不足的时候根据进程的重要性,移去重要性最低的进程,重要性由高到低为:前台进程
26、 可见进程 服务进程 后台进程 空进程。Android应用生命周期图根据上述的七个生命周期方法,在四个阶段中的顺序:1 开始Activity:onCreate() - onStart() - onResume()2 Activity失去焦点:onPause() - onStop()3 Activity重新获得焦点:onRestart() - onStart() - onResume()4 关闭Activity:onPause() - onStop() - onDestroy()如果在这四个阶段的执行过程中发生了状态改变,则Android系统会按照更复杂的方式调用七个方法。三、游戏技术(一)点击
27、操作在触屏时代,用户必须通过点击、拖动、双击、长按、滑动、摇晃手机等操作与手机进行交互。在所有操作中,点击操作最为频繁,也最为基础,但也最为重要。在Android中,所有显示的内容都需要View类的支持,小到一个按钮Button、输入框TextView,大到线性布局LineLayout、表格布局GridLayout。这些类都是继承自View。而所有的操作实际上都是对View类的操作。在Android中,所有的操作都是以接口的形式提供,需要时只需继承接口即可实现功能。例如一个按钮Button,先继承View.OnClickListener接口,重写里面的onClick()方法,这个功能就像监听器
28、一样,一直在监听用户的操作。如果点击了这个按钮Button,那么这个按钮的监听器会响应这个操作,并调用里面的onClick()方法。在如此多的监听器中,View.OnTouchListener类是最为基础的监听器,在这个类之上实现OnClick(),OnLongClick()等操作的响应。究其原因,是因为OnTouchEvent是最先捕捉到点击信号的类,然后再这个点击信号传递给OnClick(),OnLongClick()。Android中,将一次手指的按下、抬起的操作称为一次完整的点击事件。在继承了View.OnTouchListener之后需要重写onTouch()的方法:参数Motion
29、Event event:是为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息,例如触摸的位置、触摸的类型以及触摸的时间等。该对象会在用户触摸手机屏幕时被创建。MotionEvent事件的传递是采用隧道方式传递(即从根元素依次往下传递直到最内层子元素或在中间某一元素中由于某一条件停止传递),而MotionEvent事件的处理方式则采用冒泡方式(即从最内层子元素依次往外传递直到根元素或在中间某一元素中由于某一条件停止传递)。返回值:该方法的返回值机理与键盘响应事件的相同,同样是当已经完整地处理了该事件且不希望其他回调方法再次处理时返回true,否则返回false。该方法并不像之前介绍过的方
30、法只处理一种事件,一般情况下以下三种情况的事件全部由onTouchEvent方法处理,只是三种情况中的动作值不同。在方法中,ACTION_DOWN,ACTION_MOVE和ACTION_UP是最为基础的,也是常常需要重写的。屏幕被按下:当屏幕被按下时,会自动调用该方法来处理事件,此时MotionEvent.getAction()的值为MotionEvent.ACTION_DOWN,如果在应用程序中需要处理屏幕被按下的事件,只需重新该回调方法,然后在方法中进行动作的判断即可。屏幕被抬起:当触控笔离开屏幕时触发的事件,该事件同样需要onTouchEvent方法来捕捉,然后在方法中进行动作判断。当M
31、otionEvent.getAction()的值为MotionEvent.ACTION_UP时,表示是屏幕被抬起的事件。在屏幕中拖动:该方法还负责处理触控笔在屏幕上滑动的事件,同样是调用MotionEvent.getAction()方法来判断动作值是否为MotionEvent.ACTION_MOVE再进行处理12。既然提到了点击事件,那就简单介绍一下触摸机制:在View类和Activity中,分别都有两个touch的方法:而在ViewGroup类中,有三个touch的方法: dispatchTouchEvent()是用来处理触摸事件分发,多数事件是从Activity的dispatchTouchEvent()方法开始响应的。调用父类方法super.dispatchTouchEvent(MotinEvent)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1