基于android系统的手机游戏的设计与实现

基于android系统的手机游戏的设计与实现

ID:33811379

大小:232.33 KB

页数:4页

时间:2019-02-28

上传者:xinshengwencai
基于android系统的手机游戏的设计与实现_第1页
基于android系统的手机游戏的设计与实现_第2页
基于android系统的手机游戏的设计与实现_第3页
基于android系统的手机游戏的设计与实现_第4页
资源描述:

《基于android系统的手机游戏的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

2012年第5基于Android系统的手机游戏的设计与实现石坚李明江(1,2.黔南民族师范学院计算机科学系,贵州都匀558000)摘]~:Android是以Linux为核心的手机操作平台,在基于Android系统的移动智能手机平台上实现“躲子弹”飞行射击游戏的设计与开发,使用工厂开发模式,设计各种可以扩展的类,采用参数即函数的算法处理,随机产生子弹、敌人和碰撞。关键词:Android;手机游戏;飞行射击;随机中图分类号:TP311文献标识码:A文章编号:1674—2389(2012)05—0104—04OntheDesignandImplementationofanAndroid——BasedMobileGameSHIJianLIMingjiang(1.Grade2008,Dept.,ofc0rScience,QiannanNormalCollegeforNationalities;2.Dept.,ofComputerScience,QiannanNormalCollegeforNationalities,Duyun558000,China)Abstract:AndroidisamobilephoneplatformbasedonLinux.Thispaperfocusesonthedesignandexploitation0f“BulletsDodging”.akindofflightshootingganle,inanAndroid—basedsystem.Thisapplicationutilizestheexploitationpatternoffactoryanddesignsvariousofe】【tel1.sibleclassesandisprocessedwithalgorithmofparameterandcreatesrandomly.bulletandenemyandcolisions.Keywords:Android;mobilegame;mghtshotinggame;randomly随着嵌入式技术和嵌入式系统的发展,手持设备迅速发展,目前,全球手机用户数已超过了PC机用户数,其中智能手机的比例越来越高,智能手机的应用程序也随着用户群的增多而飞速发展。在智能手机平台开发移动应用程序是今后的主流发展方向。1Android平台简介Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。Android是由C,oosle开发的、应用于智能手机的操作系统,是完全开源的,不存在任何阻碍移动产业创新的专有权障碍。[1其优点是:1)Android的开放性。其开放性包括(1)Android以开源Linux系统为基础,对于开源爱好者而言,他们会觉得Android平台更能满足自己的使用需求。(2)Android对第三方软件是开放的,能促进该系统第三方软件的发展。(3)Android系统以Linux2.6为核心,其安全机制比较完善,增强了手机使用的安全性。(4)Android平台已经形成由Google牵头,OHA组织参与,系统支持商和服务供应商完善搭配的运作机制,为Android平台的快速发展提供了坚实的基础。与目前主流的苹果公司的iQs平台和诺基亚公司主推的Symbiaa操作系统形成了手机平台中的三国鼎立,2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。随着Android收稿13期:2012—07—02作者简介:1.石坚(1989一),男,贵州从江人,计算机科学系2008级学生,研究方向:JAVA程序设计;2.李明江(1975一),男,贵州思南人,副教授,研究方向:计算网络应用,计算机软件设计。·104· 2o12年第5的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Ja-va开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。2躲子弹游戏的设计与实现2.1游戏功能分析躲子弹是一款飞行射击类的小游戏,功能与其他飞行射击类游戏类似。它的最大特点是随机性很强,例如每次出现的敌人种类、敌人每次发射的子弹、敌人每次刷新的位置、玩家每次发射的子弹等都具有随机性。2.2设计思路本游戏采用工厂模式设计——即对每一需要使用的对象写一个抽象父类,需要使用的对象由继承此父类的子类产生,抽象父类不产生任何对象。只使用一个主线程,用于控制整个游戏内容,包括玩家的移动,敌机移动,发射子弹等。2.3详细设计2.3.1游戏界面Android内核提供的Activity类主要用于处理用户操作。Surface类和Game类是本游戏的两个重要Activity子类,它们继承了Activity,通过它们的setContent—View(View)方法设定需要显示的视图。Surface类用于显示和处理菜单界面,Came类用于显示和处理游戏内容。Surface.java使用的视图来自于main.xml文件,里面设定了菜单界面使用的按钮,文本等内容;Game.java使用视图GameView.java——此视图设定了游戏的图1游戏主菜单界面背景、屏幕高宽以及负责显示游戏相关内容,同时它还是一个线程(图1)。2.3.2游戏对象躲子弹游戏的游戏对象主要有敌人(Enemy)、玩家(Hero)、子弹(Bullet)。它们由三个类产生:Ene—my类,Hero类,Bullet类。这三个游戏对象都采用工厂模式设计。由于敌人和子弹的种类是多种多样的,所以他们的父类不直接产生对象,而是由继承他们的子类来产生。每一种敌人对应一个敌人的子类,每一种子弹对应一个子弹的子类(见图2)。图2子弹、敌人类的UML图2.3.3游戏机制玩家有一定的生命值;敌人种类不同,生命值不同;玩家碰到敌人发射的子弹,生命值减少;·105· 黔南民族师范学院学报2012年第5期敌人碰到玩家发射的子弹,生命值减少;玩家碰到敌人,生命值减少;反之,敌人生命值不变;玩家得分与玩家存活时间和击毙敌人数量有关(见图3)。图3游戏简单机制图2.3.4关键功能设计(1)随机功能。通过MyData类中的公共方法getEnemy(id)和getRandomId(i)可以随机获取一个敌人类对象。首先通过getRandom(i)方法获取一个不大于敌人种类数的随机数,由此随机数可以在getEnemy(id)里通过switch语句获取相应的敌人,从而达到随机选取敌人的目的,然后由GameView类将其显示在屏幕上。同理,通过使用MyData类中的getBullet(id)方法可以随机获取一种子弹,每次需要更新子弹时就会调用此方法。具体实现代码如下://获取敌人对象publicEnemygetEnemy(intid){switch(id){case0:returnnewLeft—and—Right—Enemy(view.context,view);case1:returnnewLineRouteEnemy(view.context,this.view);}returnnull;}//获取敌人子弹对象publicEnemyBulletgetEnemyBuUet(intid){switch(id){case0:returnnewLineBullet(view.context,t}lis.view);case1:returnnewSectorBullet(view.con.text,this.view);}returnnull;}//得到一个随机数publicstaticintgetRandom(intC){Randomr=newRandom();returnr.nextInt(C);}(2)玩家、敌人、子弹的移动玩家移动通过触屏控制。玩家点击屏幕或者在屏幕上做拖动的动作,游戏人物就会移动到制定的位置。这要利用Activity类的onTouchEvent(MotionEventevent)方法实现。当发生触摸屏幕事件时,An.droid系统会自动调用这个方法,可以重写此方法实现玩家的移动。敌人的移动使用的主要方法是敌人类里的公共方法EnmeyMove(),此方法可以调整敌人的坐标,让敌人每次以一定的步长移动,当然也可以重写它来实现各种移动轨迹。子弹的移动同敌人的移动类似,使用的是子弹类中的公共方法fire()。(3)碰撞检测。碰撞检测包括:玩家和敌人的碰撞、敌人和屏幕边缘的碰撞、玩家和敌人子弹的碰撞、敌人和玩家子弹的碰撞。在敌人、玩家、子弹三个类中,都有用于检测碰撞的方法,以敌人类的碰撞检测方法为例:publicvoidcheckCoUision(Herohero)//检测是否碰到玩家{if(this.X>=hero.getX()&&this.X·106· 黔南民族师范学院学报2012年第5期<=hero.get.X()+hero.getHeroBitmap().getWidth()一10&&this.Y>=hero.getY()&&this.Y<=he—ro.getY()+hero.getHeroBitmap().getHeight()/4){hero.updateLife(true);}}游戏线程启动时,将会反复调用生成在屏幕上的敌人的碰撞检测方法。当敌人的坐标与玩家控制人物模型相互重叠时,则发生碰撞,玩家的生命值将会减少。(4)计分和游戏难度。游戏的计分机制和游戏的难度有关。随着玩家生存时间的增长,所得分数就越多,不同难度下每一秒得到的分数不同;当敌人被玩家击落时,玩家会得到此种敌人所对应的分数。当游戏分数累计到一定程度时,游戏难度增加。随着难度的提升,增加难度所需求的分数也增多,这是利用MyData类里的getScoresForLevelUp(intdif)方法实现,参数dif为当前游戏难度。方法代码:publicintgetScoresForLevelUp(intdif){retumSCORES—FOR—LEVEL_UP+dif50;}游戏难度增加的同时,敌人的数量和敌人子弹的数量也会增多,利用MyData类里的intenemyCou—nts(intdif)和intbulletCounts(intdif)这两个方法可以获得当前难度下敌人和子弹的数量。(5)游戏运行。游戏运行的线程是GameView类,它继承了Android提供的SurfaceView类,是游戏运行时的主要视图,主要负责让游戏的各个部分显示在屏幕上。GameView类的主要方法如下:voidcreateEnemy()//在屏幕上创建敌人voidcreateHero()//在屏幕上创建玩家voidupdateData()//更新游戏数据并显示voidupdateEnemy()//更新敌人敌人状态voidupdateHero()//更新玩家状态voidrun()//线程运行的主要方法,也是游戏运行时的主要方法2.3.5游戏数据封装与扩展性游戏运行时需要的所有数据封装在MyData类中,此类中有多个静态内部类和大量静态数据,游戏运行时会在MyData类中读取相关参数。把数据封装起来就增加了游戏的可扩展性:当需要修改任何数据时,只需将MyData类中的某些参数修改;需要增添或者删除时,开发人员可以将不再需要的类删除,然后在MyData类中做适当修改,增添时同理。这样就可以在不影响原有数据和游戏内容的情况下修改和测试游戏。3结束语基于Android平台的程序开发设计,有很好的应用前景,学会使用工厂开发模式,采用灵活的算法处理,往往可以设计出丰富多彩的应用程序特例。针对本文的游戏,设计了各种可以扩展的类,采用参数即函数的算法处理,很好地实现了设计目标。本游戏存在的不足:当游戏难度增加时,会因为内容的增多而出现运行不流畅的情况;计分机制不够完善,没有与数据库进行结合,不能够进行分数的记忆保存;游戏背景过于单调,没有进行背景模式的选择;不能进行多用户的联机联网对抗,有待于进一步完善和改进。参考文献:[1]http://www.youtube.corn/watch?v=In_K—P_P~se.[2]GRAMLICHN.AndroidProgramming[M].(2008—02—21)[2011一o3—05].http://andbook.anddev.org.[3](美)EdBumette.Android基础教程[M].北京:人民邮电出版社.2011.[4]hello.1iu.Android游戏开发之飞行射击类游戏原理实现[OL].[2011年9月3日].http://www.apkbus.corn/android一13436—1—1.html[5]陈国君.Java2程序设计基础(第2版)[M].北京:清华大学出版社,2010.[6]聚众培训视频网.Android开发视频教程第一季[OL].2011.责任编辑李永波·107·

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭