基于Android平台的游戏设计太空保卫战

上传人:沈*** 文档编号:132056582 上传时间:2022-08-07 格式:DOC 页数:34 大小:1,018KB
收藏 版权申诉 举报 下载
基于Android平台的游戏设计太空保卫战_第1页
第1页 / 共34页
基于Android平台的游戏设计太空保卫战_第2页
第2页 / 共34页
基于Android平台的游戏设计太空保卫战_第3页
第3页 / 共34页
资源描述:

《基于Android平台的游戏设计太空保卫战》由会员分享,可在线阅读,更多相关《基于Android平台的游戏设计太空保卫战(34页珍藏版)》请在装配图网上搜索。

1、石家庄科技信息职业学院毕 业 论 文题 目: 基 于 Android 平 台 的 游 戏设 计太 空 保 卫 战 学 号: 0 9 0 1 2 4 0 1 6 姓 名: 宋少伟 专业班级: 游戏开发 指引教师: 刘永伟 完毕日期: 12月 16 日 太 空 保 卫 战摘要:Android是Google公司为首的OHA研发的一种开源智能手机平台。随着互联网和物联网的广泛应用,得到了学术界和产业界的支持,越来越多的创意应用到Android应用程序中,席卷了整个手机产业。近来随着手机的迅速发展,多种各样的手机游戏层出不穷,使得我们能有更多的娱乐项目,而射击类游戏是节奏比较快,规定玩家通过迅速的反映与

2、游戏进行交互,从而考验玩家的敏捷度以及放松玩家大脑,是玩家身心休闲娱乐太空保卫战便是运营在Android上的一种滚屏动作类游戏,其中融入了诸多动作类游戏特有的技术,且画面流畅、声音震撼。核心词: Android应用程序 J2ME Plane类 EnemyPlane类 Bullet类Too empty and defend warAbstract:Android is Google company headed by OHA research and development of an open source platform of intelligent mobile phone. With

3、the advent of the Internet and networking applications, obtained the academic and industry support, more and more creative application to the Android application, swept the whole of mobile phone industry.Recently with the rapid development of mobile phone, all kinds of mobile phone game emerge in an

4、 endless stream, so that we can have more entertainment projects, while shooting game is relatively fast pace, for game player through rapid response and games to interact, so as to test the sensitivity of game player and relaxed game player brain, mental and physical recreation is game playerSpace

5、war is run in the Android on a scrolling action games, which incorporates many action games unique technology, and smooth picture, sound rock.Key words: Android application J2ME class Plane class EnemyPlane class Bullet目 录一、引言 3(一)课题背景 3(二)本课题研究的意义 3(三) 本课题的研究措施 3二、课题有关基本 4 (一) 游戏情节 4(二)功能简介 4(三) 目的

6、平台 7三、设计方案 8 (一)游戏的架构jagou 8(二)游戏的框架简介图 9(三)游戏界面基本框架及简介 10(四) 游戏总流程图 11si(五)游戏实体有关类的实现 11 1、飞机Plane类的实现 11. 2、敌机EnemyPlane类的实现19 3、子弹Bullet类的实现24 四i2棋盘和棋子、结论 27 参照文献 28正 文一、引言 (一)课题背景Android是Google公司为首的OHA研发的一种开源智能手机平台。随着互联网和物联网的广泛应用,得到了学术界和产业界的支持,越来越多的创意应用到Android应用程序中,席卷了整个手机产业。随着Android游戏的普及,Andr

7、oid应用的需求势必会越来越大。并且Android相对于其她的手机操作系统具有开放、平等、无界线、以便以及硬件丰富性等的特性。这将是一种潜力巨大的市场会吸引无数软件开发商和开发者投身其中。太空保卫战便是运营在Android上的一种滚屏动作类游戏,其中融入了诸多动作类游戏特有的技术,且画面流畅、声音震撼。(二)本课题研究的意义近来随着手机的迅速发展,多种各样的手机游戏层出不穷,使得我们能有更多的娱乐项目,而射击类游戏是节奏比较快,规定玩家通过迅速的反映与游戏进行交互,从而考验玩家的敏捷度以及放松玩家大脑,是玩家身心休闲娱乐。当今市面上流行的手机游戏类型繁多,不同类型的游戏自然有其独特的设计方式以

8、及独到的吸引玩家的地方,射击类游戏(Shooting Game)是一种比较古老的游戏类型手机游戏中的射击游戏也很流行,目前市面上的射击类游戏最多的是飞行射击游戏。太空保卫战就是属于飞行射击类游戏,是滚屏动作类游戏的一种。而滚屏动作类游戏是最老式的游戏类型之一,初期动作游戏的画面一般比较简朴,没有复杂的游戏特效,重要是通过纯熟操作技巧来进行游戏,一般是为了通关。而目前的动作类游戏则融入了诸多新的元素,诸多典型的关卡以及诸多画面的特效,使其逐渐成为所有游戏类型里面款式最多,发展最快的一种。(三) 本课题的研究措施 相对于其她相似类型的游戏进行,提取其精髓技术,并且融入较多新的元素。运用平台Andr

9、oid2.1、Eclipse开发软件,使用Java进行语言开发,并且采用2D的呈现技术,是玩家玩得更加刺激震撼。并且游戏的添加上成绩排行功能,并将玩家的最佳成绩保存下来,会大大提高游戏的可玩性。二、课题有关基本 (一) 游戏情节:本游戏是一款滚屏动作游戏,没有过多的情景设计。因此重要的工作是主战飞机生命的设计(血值或生命值)、道具的设计(换枪的道具及补血的道具)、关卡的设计等。此游戏还融入了诸多动作类游戏特有的技术,使得画面流畅、声音震撼。游戏操作简朴,易于上手,且火爆的游戏场面,迅速、剧烈、紧张的游戏节奏会使玩家产生浓厚爱好。(二)功能简介太空保卫战游戏重要涉及欢迎界面、协助界面以及游戏界面

10、。下面对该游戏的部分界面及运营效果进行简朴的简介:1、运营该游戏,通过Ctrl+F12组合键将模拟器调成横屏,进入加载界面。图1 游戏的加载界面2、之后将进入欢迎动画界面。图2 游戏的欢迎动画1图3 游戏的欢迎动画2图3 游戏的欢迎界面33、欢迎动画播放完毕将进入选择界面,菜单界面涉及“开始游戏”、“协助”、“关闭声音”及“退出”按钮。图4 选择界面4、单击“协助”按钮将进入“协助”界面。图5 协助界面5、单击开始游戏“按钮将进入游戏界面,在游戏界面中,玩家可通过上下左右键控制飞机移动,然后A键发射子弹打击敌人。图6 游戏界面8、如果玩家飞机坚持足够的时间没有爆炸的话,将看到关底。7、当顺利过

11、关时,会浮现恭喜过关界面;当游戏失败时,则会浮现失败界面。图7 游戏失败界面(三)目的平台:目的平台为Android2.1 。开发语言:Java开发软件:Eclipse三、设计方案 (一)游戏的架构该项目中的类提成了4部分进行简介1 共有类 Activitv的实现类PlaneActivity:该类是通过扩展基类Activity实现的,是整个游戏程序的入口。 键盘监听线程KeyThread:该类为手机键盘的监听线程,没隔一段时间读取一次键盘的状态值,并根据目前键盘状态做出相应的操作。 常量类ConstantUtil:将游戏中用到的所有常量所有封装到该类中,便于管理与维护。2 辅助界面有关类 欢迎

12、界面WelcomeView:该类为游戏欢迎界面的实现类,重要负责欢迎界面的绘制工作。欢迎界面的动画实现类WelcomeViewThread:该类是为WelcomeView服务的线程类,重要负责欢迎界面中动画的生成。协助界面HelpView:该类非常简朴,重要负责绘制协助界面的有关图片。加载界面ProcessView:为了使游戏更加人性化,给玩家更好的体验,在长时间加载某些资源时,需要给出加载界面以提示玩家后台加载进度。胜利界面WinView:该类为玩家顺利谷关后的恭喜过关界面。失败界面FailView:该类为主战飞机死亡后显示的失败界面,在该界面中玩家可以选着重新游戏或退住游戏。 3 游戏界面

13、有关类 游戏主界面类GameView:该类为游戏菜单界面的实现类,负责界面绘制工作。 背景滚动线程类GameViewBackGroundThread:该类重要负责背景滚动、敌机以及多种道具的浮现。 地图信息类Maps:该类涉及着地图的有关信息,例如敌机所有的移动路线、各个关卡中补血道具、换枪道具等。 物体移动线程类MoveThread:该线程负责除了我方主站飞机外所有可移动物的移动 4 情景有关类 主战飞机Plane:该类为主战飞机的封装类,可有玩家控制其芳香以及移动状态。 敌机EnenyPlane:该类为敌机的封装类。 子弹类Bullet:子弹的封装类,游戏中所有的子弹都为该类的对象。 爆炸

14、效果类Explode:该类为爆炸效果的渲染类,负责在指定位置绘制爆炸效果。 爆炸换帧线程ExplodeThread:该类是为爆炸效果服务的。当爆炸存在时,定期为每个爆炸效果换帧。 补血道具类life:该类是补血道具类,当主战飞机与该类的对象碰撞时,会为主站飞机增长一格血。 换枪道具类ChangeBullet:该类为换枪道具类,当主战飞机与该类的对象碰撞时,会增长主战飞机所携带武器。(二)游戏的框架简介图图1 太空保卫战游戏类框架图1、启动游戏,在PlaneActivity中会先进入家在界面ProcessView,然后后台加载欢迎界面WelcomeView,当加载完毕后将屏幕切换到欢迎界面,并启

15、动WelcomeViewThread线程生成欢迎界面的动画效果。2、当欢迎动画播放完毕后屏幕会停留在选择状态等待玩家操作。3、当玩家点击“协助”按钮时,将初始化协助界面HelpView并将其显示出来。4、当玩家单击“开始游戏”按钮时,屏幕将显示加载界面。后台将初始化游戏界面GameView,在地图信息类Maps中初始化此关卡中所有敌机、变枪的道具、补血的道具等。5、初始化游戏界面的同步启动GameViewBackGroundThread线程,以滚动游戏界面的背景图片。6、当玩家发射炮弹或敌机发射炮弹时会创立炮弹类Bullet的对象,并将其添加到已知的容器中。7、当游戏过程中如果需要显示爆炸效果

16、,会创立爆炸效果类Explode以及ExplodeThread类来渲染爆炸效果。8、游戏中所有类中使用的常量所有封装到常量类ConstantUtil类中。(三)游戏界面基本框架及简介图2 游戏界面基本框架1、GameView在初始化时会从Maps读取目前关卡的地图信息,涉及敌机、补血道具、换枪道具等。2、在界面初始化的同步,还需要启动MoveThread线程、GameViewBackGroundThread线程、KeyThread线程及ExplodeThread线程。3、GameView会在合适的时候从Plane类读取主战飞机的信息进行绘制。4、当主战飞机发射子弹时,会创立Buller对象并添

17、加到指定容器中,此时MoveThread同样需要定期变化子弹对象的位置。5、在以上过程中,所有需要PlaneActivity的管理与ConstantUtil的参与。(四)游戏总流程图(五)游戏实体有关类的实现1、飞机Plane类的实现,其代码如下:package wyf.ytl;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.os.Message;publ

18、ic class Plane private int x;/飞机的坐标private int y;int life;/生命private int dir;/飞机的方向,0静止,1上,2右上,3右,4右下,5下,6左下,7左,8左上private int type;/飞机的类型Bitmap bitmap1;/目前向下飞机的图片Bitmap bitmap2;/目前向上飞机的图片Bitmap bitmap3;/目前飞机的图片GameView gameView;/GameView的引用private int span = 10;/飞机走一步的像素int bulletType = 1; public P

19、lane(int x, int y, int type, int dir,int life, GameView gameView)this.gameView = gameView;this.x = x;this.y = y; this.type = type;this.dir = dir;this.life = life;initBitmap();public void initBitmap()if(type = 1)/当类型为1时bitmap1 = BitmapFactory.decodeResource(gameView.getResources(), R.drawable.plane1)

20、;bitmap2 = BitmapFactory.decodeResource(gameView.getResources(), R.drawable.plane2);bitmap3 = BitmapFactory.decodeResource(gameView.getResources(), R.drawable.plane3);public void draw(Canvas canvas)if(dir = ConstantUtil.DIR_UP)/向上canvas.drawBitmap(bitmap2, x, y,new Paint();else if(dir = ConstantUtil

21、.DIR_DOWN)/向下canvas.drawBitmap(bitmap1, x, y,new Paint();else/其她状况使用的图片canvas.drawBitmap(bitmap3, x, y,new Paint();public void fire()/打子弹的措施if(bulletType = 1)Bullet b = new Bullet(this.x+75, this.y+8, 1, ConstantUtil.DIR_RIGHT,gameView);gameView.goodBollets.add(b);else if(bulletType = 2)Bullet b = n

22、ew Bullet(this.x+75, this.y+4, 3, ConstantUtil.DIR_RIGHT,gameView);gameView.goodBollets.add(b);else Bullet b = new Bullet(this.x+75, this.y+4, 3, ConstantUtil.DIR_RIGHT,gameView);gameView.goodBollets.add(b);Bullet b2 = new Bullet(this.x+55, this.y-4, 4, ConstantUtil.DIR_RIGHT_UP,gameView);gameView.g

23、oodBollets.add(b2);Bullet b3 = new Bullet(this.x+55, this.y+12, 5, ConstantUtil.DIR_RIGHT_DOWN,gameView);gameView.goodBollets.add(b3);if(gameView.activity.isSound)gameView.playSound(1,0);/播放音乐public boolean contain(Bullet b)if(isContain(b.x, b.y, b.bitmap.getWidth(), b.bitmap.getHeight()/检测成功this.li

24、fe-;/自己的生命减1if(this.life0)/当生命不不小于0时gameView.status = 2;if(gameView.mMediaPlayer.isPlaying()gameView.mMediaPlayer.stop();if(gameView.activity.isSound)gameView.playSound(3,0);Message msg1 = gameView.activity.myHandler.obtainMessage(1);gameView.activity.myHandler.sendMessage(msg1);/向主activity发送Handler

25、消息return true;return false;public boolean contain(ChangeBullet cb)if(isContain(cb.x, cb.y, cb.bitmap.getWidth(), cb.bitmap.getHeight()/检测成功this.bulletType += 1;return true;return false;public boolean contain(EnemyPlane ep)if(isContain(ep.x, ep.y, ep.bitmap.getWidth(), ep.bitmap.getHeight()/检测成功this.

26、life-;/自己的生命减1if(this.life0)/当生命不不小于0时gameView.status = 2;if(gameView.mMediaPlayer.isPlaying()gameView.mMediaPlayer.stop();if(gameView.activity.isSound)gameView.playSound(3,0);gameView.activity.myHandler.sendEmptyMessage(1);/向主activity发送Handler消息return true;return false;public boolean contain(Life l

27、)/检测玩家飞机与否撞血块if(isContain(l.x, l.y, l.bitmap.getWidth(), l.bitmap.getHeight()/检测成功if(this.life= otherX)xd = this.x;xx = otherX;xFlag = false;elsexd = otherX;xx = this.x;xFlag = true;if(this.y = otherY)yd = this.y;yx = otherY;yFlag = false;elseyd = otherY;yx = this.y;yFlag = true;if(xFlag = true)widt

28、h = this.bitmap1.getWidth();else width = otherWidth;if(yFlag = true)height = this.bitmap1.getHeight();elseheight = otherHeight;if(xd=xx&xd=yx&yd=0.20)/重叠面积超20%则鉴定为碰撞return true;return false;public void setDir(int dir) this.dir = dir;public int getSpan()return span;public int getX() return x;public v

29、oid setX(int x) this.x = x;public int getY() return y;public void setY(int y) this.y = y;if(this.y ConstantUtil.screenHeight)this.y = ConstantUtil.screenHeight;2、敌机EnemyPlane类的实现,其代码如下:package wyf.ytl;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import

30、android.os.Message;public class EnemyPlane int x = ConstantUtil.screenWidth;/飞机的坐标int y;boolean status;/飞机的状态long touchPoint;/触发点int type;/飞机的类型int life;/生命int spanX = 10;/飞机移动的X像素int spanY = 5;/飞机移动的X像素Bitmap bitmap;int start;/目前出发点int target;/目前目的点int step;/目前处在目前程径片段中第几步int path; public EnemyPlan

31、e(int start,int target,int step,int path, boolean status,long touchPoint, int type, int life)this.start=start;this.target=target;this.step=step;this.path=path;this.status = status;this.touchPoint = touchPoint;this.type = type;this.life = life;this.x=path0start;this.y=path1start;public void draw(Canv

32、as canvas)canvas.drawBitmap(bitmap, x, y, new Paint();public void move()if(step=path2start)/一段途径走完,到下一段途径开始step=0;start=(start+1)%(path0.length);target=(target+1)%(path0.length);this.x=path0start;this.y=path1start;else/一段途径没有走完,继续走int xSpan=(path0target-path0start)/path2start;int ySpan=(path1target-

33、path1start)/path2start;this.x=this.x+xSpan;this.y=this.y+ySpan;step+;public void fire(GameView gameView)/打子弹的措施if(type = 3 & Math.random()ConstantUtil.BooletSpan2)Bullet b1 = new Bullet(x, y, 2, ConstantUtil.DIR_LEFT,gameView);Bullet b2 = new Bullet(x, y, 2, ConstantUtil.DIR_LEFT_DOWN,gameView);Bull

34、et b3 = new Bullet(x, y, 2, ConstantUtil.DIR_LEFT_UP,gameView);gameView.badBollets.add(b1);gameView.badBollets.add(b2);gameView.badBollets.add(b3);else if(Math.random()= otherX)xd = this.x;xx = otherX;xFlag = false;elsexd = otherX;xx = this.x;xFlag = true;if(this.y = otherY)yd = this.y;yx = otherY;y

35、Flag = false;elseyd = otherY;yx = this.y;yFlag = true;if(xFlag = true)width = this.bitmap.getWidth();elsewidth = otherWidth;if(yFlag = true)height = this.bitmap.getHeight();elseheight = otherHeight;if(xd=xx&xd=yx&yd=0.20)/重叠面积超20%则鉴定为碰撞return true;return false;public boolean contain(Bullet b,GameVie

36、w gameView)/判断子弹与否打中敌机if(isContain(b.x, b.y, b.bitmap.getWidth(), b.bitmap.getHeight()this.life-;/自己的生命减1if(this.life=0)/当生命不不小于0时if(gameView.activity.isSound)gameView.playSound(2,0);this.status = false;/使自己不可见if(this.type = 3)/是关口时gameView.status = 3;/状态换成胜利状态if(gameView.mMediaPlayer.isPlaying()gam

37、eView.mMediaPlayer.stop();/将游戏背景音乐停止Message msg1 = gameView.activity.myHandler.obtainMessage(5);gameView.activity.myHandler.sendMessage(msg1);/向主activity发送Handler消息return true;return false;public int getX() return x;public void setX(int x) this.x = x;public int getY() return y;public void setY(int y

38、) this.y = y;3、子弹Bullet类的实现,其代码如下:package wyf.ytl;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;/* * * 该类为子弹的封装类 * 记录了子弹自身的有关参数 * 外界通过调用move措施移动子弹 * */public class Bullet int x;/子弹的坐标int y;int dir;/子弹的方向,0静止,1上,2右上,3

39、右,4右下,5下,6左下,7左,8左上int type;/子弹的类型Bitmap bitmap;/目前子弹的图片GameView gameView;/gameView的引用private int moveSpan = 10;/移动的像素public Bullet(int x, int y, int type, int dir,GameView gameView)this.gameView = gameView;this.x = x;this.y = y;this.type = type;this.dir = dir;this.initBitmap();public void initBitma

40、p()if(type = 1)/当类型为1时bitmap = BitmapFactory.decodeResource(gameView.getResources(), R.drawable.bullet1);else if(type = 2)/类型为2时bitmap = BitmapFactory.decodeResource(gameView.getResources(), R.drawable.bullet2);else if(type = 3)/类型为3时bitmap = BitmapFactory.decodeResource(gameView.getResources(), R.d

41、rawable.bullet3);else if(type = 4)/类型为4时bitmap = BitmapFactory.decodeResource(gameView.getResources(), R.drawable.bullet4);else if(type = 5)/类型为5时bitmap = BitmapFactory.decodeResource(gameView.getResources(), R.drawable.bullet5);public void draw(Canvas canvas)/绘制的措施canvas.drawBitmap(bitmap, x, y,new

42、 Paint();public void move()/移动的措施if(dir = ConstantUtil.DIR_RIGHT)/向右移动this.x = this.x + moveSpan;else if(dir = ConstantUtil.DIR_LEFT)/向左移动this.x = this.x - moveSpan;else if(dir = ConstantUtil.DIR_LEFT_DOWN)/向左下移动this.x = this.x - moveSpan;this.y = this.y + moveSpan;else if(dir = ConstantUtil.DIR_LEF

43、T_UP)/向左上移动this.x = this.x - moveSpan;this.y = this.y - moveSpan;else if(dir = ConstantUtil.DIR_RIGHT_UP)/右上移动this.x = this.x + moveSpan;this.y = this.y - moveSpan;else if(dir = ConstantUtil.DIR_RIGHT_DOWN)/右下移动this.x = this.x + moveSpan;this.y = this.y + moveSpan;四i2棋盘和棋子、结论 本文以基于J2ME平台的手机游戏的功能开发为先

44、搜索,进行了有关理论研究,实验和项目开发。通过度析J2ME平台的体系构造和特性,研究了多种类的实现和多线程操控的技术,手机应用程序开发流程。设计实现了一款手机滚屏动作类游戏-“太空保卫战”参 考 文 献:【1】 吴亚峰等,Android2.0游戏开发实战宝典【M】,人民邮电出版社。7月。【2】 余志龙,陈昱勋、郑名杰、陈小凤等Android SDK开发范例大全,人民邮电出版社。7月【3】 靳岩,姚尚朗,Google Android开发入门与实战,人民邮电出版社。7月【4】 Android开发入门指南,人民邮电出版社【5】 熊刚,基于Android的智能手机的设计与实现D,武汉:武汉理工大学,【6】 严蔚敏,吴伟民,数据构造(C语言版)M,北京,清华大学出版社,1997:P109-243【7】 马越,Android的构架与应用D,北京,中国地质大学,hen

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!