软件编程论文12730.doc_第1页
软件编程论文12730.doc_第2页
软件编程论文12730.doc_第3页
软件编程论文12730.doc_第4页
软件编程论文12730.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件编程(delphi)忍者突袭(android游戏)摘 要 该程序采用eclipse、jdk1.6、sdk2.2等工具一起使用实现。忍者突袭游戏(android手机)采用多点触控的技术,改善了手机游戏操控,使游戏玩家体会到触屏手机的快乐。忍者突袭游戏(android版)取代了以往手机游戏操控基本靠键盘的现状,由于以往手机按键小而且紧凑,给好多玩家带来了不变。所以android系统的游戏势必会取代其他平台手游的地位。该游戏具有五大特色:加载速度快,运行画面流畅,人物多种状态,合理的怪物排列,占用系统内存小。关键词 :mediaplayer activity surfaceview abstractthe program using eclipse, jdk1.6, sdk2.2 and other tools used together to achieve.ninja assault game (android mobile phone) using the multi-touch technology, improves the mobile phone game operation , the game player to experience touch screen mobile phone.ninja assault game (android) replaced the previous mobile phone game manipulation on the basic keyboard status, due to the previous mobile phone keys small and compact, give a lot of game player brings change.so the android system will replace the other platform games mobile games status.the game has five characteristics: the loading speed, running smooth picture, character of multiple states, reasonable arrangement of the monster, occupying little memory system.目 录概要 2第一章 31.1概要设计31.2系统开发软硬件环境4第二章 4 2.1系统设计5 2.2系统总体逻辑流程图6第三章 7 3.1游戏背景加载模块 7 3.2游戏菜单加载模块 8 3.3游戏中的加载模块 113.4游戏暂停加载模块 243.5游戏结束加载模块 253.6游戏的成就、开发者、记录分数模块 26第四章31 4.1总结 314.2 鸣谢 31参考文献 32一、 概述随着网络的发展,科技的腾飞,手机越来越跟我们的日常生活工作学习变的密不可分,手机也变得不仅仅是接打电话、发短信,而是集上网,游戏等于一体的一个小型的智能终端,现在家庭,娱乐,工作,学习,每个角落都有手机的需要。手机也像电脑一样,有着自己的操作系统,没有操作系统的手机就是一块废铁,目前只能手机的操作系统主要有 symbian、 linux 、palm、 blackberry、 windowsmobile 、android ios由于android的开源性,android手机势必会在手机领域掀起一番腥风血雨。忍者突袭游戏是一款基于android系统平台的一款射击类游戏,忍者是日本自江户时代开始出现的一种特殊职业身份。忍者们接受忍术的训练,主要从事间谍活动。本游戏也是基于忍者这一理念而开发的一款游戏。主要游戏流程,忍者在特定的木桩上行走,或者奔跑,随着路况的不同,忍者行走或者奔跑的状态也不同,时而跳起,时而拉住锁链,不管是来自空中,还是地上的对手一律斩杀,体现挡我者死的精神。经过分析,该程序使用 java编程语言eclipse开发工具,并安装jdk1.6、sdk2.2,以及使用模拟器来测试程序。因为本人能力有限,加上时间紧迫,所以设计出来的本游戏可能比较简单,这些都有待于我在以后的工作学习中进一步改进。第一章1.1概要设计:21世纪是个信息化的时代,现代计算机技术的发展,已为各行各业的发展揭开了崭新的一页。而手机的发展速度提高显著,由于手机用户的飞快增长。n 系统需求概述:本系统是针对android2.2以上手机设计的一款游戏。在android2.2系统上运行流畅。由于android系统版本是向后兼容,所以在android2.2以前系统运行不佳。n 项目开发目的:由于经济的飞速发展,生活压力加大,人们在紧张的日常生活之余,总要缓解一下生活带来的压力,移动设备的更新换代,已经由原来接打电话,发展到如今上网炒股,卫星定位,俨然成为了一个名副其实的掌上电脑。而一块简单的游戏,成为了大多数人缓解压力的不错选择,基于这种情况,我开发了这款简单的射击游戏(忍者突袭)。n 同类项目的优缺点或前一个项目的优缺点:同类手机游戏只是实现了人物简单跑动,上下跳动没有动感,敌人死亡后的效果不真实,地图比较简单。本游戏弥补了其他类游戏的不足。n 本次开发项目要达到的目标:实现忍者的跑动,跳跃,仍锁链,发飞镖,吃食物,和敌人的碰撞,地图的变化,暂停,继续,对记录的保存与排行,对相应达到的成就进行解锁。使游戏画面运行流畅,各种音效的加载。占用内存小,分布加载资源。1.2系统的开发软、硬件环境n 本系统开发环境windowxp eclipse jdk1.6 sdk2.2n 在运行模拟器之前,必须确认计算机的软硬件配置是否符合如下最低要求。microsoft windows 98/2000/nt 4.0/xp 主频为90mhz或者更高的处理器。128mb以上的内存。cd-rom驱动器。vga或者高分辨率的显示器。硬盘容量要求:标准版120mb硬盘控件,专业版185mb硬盘控件。还要再留70mb的剩余控件。第二章2.1系统设计:n 简述开发的程序结构基本结构为顺序结构,当开启游戏时进入game menu界面,点击开始,系统加载游戏中所需要的资源,进入游戏中界面,用户点击发镖区域,主角发出飞镖,点击暂停界面,游戏暂停,并进入暂停界面。当用户点击这两个区域以外的屏幕时,主角跳起,向前滑动屏幕,主角加速跑,向后滑动屏幕,主角恢复正常状态,主角3滴血,当与敌人body、敌人子弹、刀子等碰撞时,主角掉血,当主角吃到三个飞镖食物,进入无敌状态。当主角血量为零时或者调到坑里时,主角死亡,进入game over界面。在game over界面时,点击退出,返回game menu 界面,点击提交分数,则开启记录分数系统,点击再试一次,游戏重新开始,点击成就系统,进入成就界面。1) 当开启游戏的时候首先要进入游戏选择界面如图(2.1)game menu退出成就开始developer(图2.1)2) 当点击开始时,的逻辑结构,以及界面设计(图2.2):开始加速跑跳起暂停发飞镖(图2.2)3)暂停的逻辑图(图2.3): 暂停退出继续声音开关(图2.3)3)主角死亡后逻辑结构以及界面设计截图(图2.4):game over再试一次提交分数退出成就系统(图2.4)2.2系统总体逻辑流程:第三章3.1游戏背景加载模块:n loading界面是有j2me低级ui界面中利用paint(画笔)在canvas(画布)上简单绘制一张loading图。n 界面截图:n 部分实现loading界面代码:private bitmap bmploading_bg;private int x,y,textx,texty;private rect rect;private string load=loding . ,loding. .,loding. . .,loding. . . .,loding. . . . .,loding. . . . . .;public loading(bitmap bitmap)this.bmploading_bg=bitmap;x=0;y=0;textx=ninjarushsurfaceview.screenw/2-60;texty=ninjarushsurfaceview.screenh/2-40;rect=new rect(0, 0, ninjarushsurfaceview.screenw, ninjarushsurfaceview.screenh);public void draw(canvas canvas,paint paint)/画背景图loadingcanvas.drawbitmap(bmploading_bg, null, rect=new rect(0, 0, ninjarushsurfaceview.screenw, ninjarushsurfaceview.screenh), paint);3.2游戏菜单加载模块:n game menu界面是多种图片组合的结果,在按钮没按下时,在canvas上画的是没按下的图片,当按钮按下时,在canvas上画的是按下时的图片。这样就有了按钮的效果n 游戏画面截图:n 部分代码:1)主背景的代码实现:public void draw(canvas canvas,paint paint)/绘制背景图片canvas.drawbitmap(bmpinitbg, null, new rect(0, 0, ninjarushsurfaceview.screenw,ninjarushsurfaceview.screenh), paint);/绘制 更多图片canvas.drawbitmap(more, null, new rect(0, 0,ninjarushsurfaceview.screenw/4,ninjarushsurfaceview.screenh/3), paint);/绘制开始图片canvas.drawbitmap(play, null, new rect(ninjarushsurfaceview.screenw*60/100, ninjarushsurfaceview.screenh*38/100, ninjarushsurfaceview.screenw*90/100, ninjarushsurfaceview.screenh*58/100), paint);/绘制 成就 图片canvas.drawbitmap(achi, null, new rect(ninjarushsurfaceview.screenw*60/100, ninjarushsurfaceview.screenh*55/100, ninjarushsurfaceview.screenw*90/100, ninjarushsurfaceview.screenh*75/100), paint);/绘制 退出 图片canvas.drawbitmap(open, null, new rect(ninjarushsurfaceview.screenw*60/100, ninjarushsurfaceview.screenh*75/100, ninjarushsurfaceview.screenw*90/100, ninjarushsurfaceview.screenh*95/100), paint);/逻辑方法public void logic()if(isplay_down)play = bmpplay_down;elseplay = bmpplay_up;if(isachi_down)achi = bmpachi_down;elseachi = bmpachi_up;if(isopen_down)open = bmpopen_down;elseopen = bmpopen_up;if(ismore_down)more = bmpmore2;elsemore = bmpmore1;3.3 游戏的游戏模块:n 游戏模块的设计主要就是处理好地图,和各个监听的处理。地图采用了三张不同背景图,组合到屏幕上,人物的跑动主要是由背景图的x坐标不断变化的结果,背景桥,另外提出一个类来实现不同桥,不同状态的绘制,玩家操控游戏主角,上下跳跃来躲避飞来的乌鸦或者蚂蚁。主角可以发射飞镖,可以扔出锁链。吃到3个飞镖食物进入无敌状态,无敌一段时间恢复到正常状态。n 游戏截图:1) 正常速度2)向前滑动屏幕进入加速状态截图3)无敌状态界面:4)跳起截图:5)仍锁链截图:n 部分实现代码:public class gameing_bg /背景1的矩形private rect rectbg1;private bitmap bmpbg1,bmpbg2,bmpbg3;/白云private bitmap bmpcloud_0,bmpcloud_1,bmpcloud_2,bmpcloud_3;/背景的起始坐标private int bg1x,bg1y,bg2x,bg22x,bg2y,bg3x,bg33x,bg3y;/白云的起始坐标private int bc0x,bc0y,bc1x,bc1y,bc2x,bc2y,bc3x,bc3y;/米数坐标private int textx,texty;/背景以及白云的运动速度private int bgspeed,bcspeed;private int meter;/是否启动加速private int x,y,x1,y1;public static boolean islogic;/private int metertime;private int count;/屏幕下移y速度private int yy;/屏幕下移距离private int yy_d;/获得屏幕移动的状态private boolean ischange;public gameing_bg(bitmap bmpbg1,bitmap bmpbg2,bitmap bmpbg3,bitmap bmpcloud_0,bitmap bmpcloud_1,bitmap bmpcloud_2,bitmap bmpcloud_3)this.bmpbg1=bmpbg1;this.bmpbg2=bmpbg2;this.bmpbg3=bmpbg3;this.bmpcloud_0=bmpcloud_0;this.bmpcloud_1=bmpcloud_1;this.bmpcloud_2=bmpcloud_2;this.bmpcloud_3=bmpcloud_3;ischange=false;/初始化背景坐标bg1x=0;bg1y=ninjarushsurfaceview.screenh-bmpbg1.getheight();bg2x=0;bg22x=bg2x+bmpbg2.getwidth();bg2y=ninjarushsurfaceview.screenh-bmpbg2.getheight();bg3x=0;bg33x=bg3x+bmpbg3.getwidth();bg3y=ninjarushsurfaceview.screenh-bmpbg3.getheight();/初始化白云坐标bc0x=ninjarushsurfaceview.screenw+bmpcloud_0.getwidth();bc0y=(int)(math.random()*ninjarushsurfaceview.screenh/3);bc1x=bc0x+ninjarushsurfaceview.screenw-bmpcloud_1.getwidth();bc1y=(int)(math.random()*ninjarushsurfaceview.screenh/3);bc2x=bc0x+ninjarushsurfaceview.screenw-bmpcloud_2.getwidth()+40;bc2y=(int)(math.random()*ninjarushsurfaceview.screenh/3);bc3x=bc0x+ninjarushsurfaceview.screenw-bmpcloud_3.getwidth()+20;bc3y=(int)(math.random()*ninjarushsurfaceview.screenh/3);/米数坐标textx=ninjarushsurfaceview.screenw/100;texty=ninjarushsurfaceview.screenh/6;/初始化背景速度bgspeed=2;/背景bcspeed=1;/白云islogic=true;metertime=2;meter=1;/实例化背景1的矩形 rectbg1=new rect(bg1x, bg1y, ninjarushsurfaceview.screenw, ninjarushsurfaceview.screenh);public void draw(canvas canvas,paint paint) /背景1canvas.drawbitmap(bmpbg1, null,rectbg1, paint);/背景2canvas.drawbitmap(bmpbg2, bg2x, bg2y, paint);canvas.drawbitmap(bmpbg2, bg22x, bg2y, paint);/背景3canvas.drawbitmap(bmpbg3, bg3x, bg3y, paint);canvas.drawbitmap(bmpbg3, bg33x, bg3y, paint);/画白云canvas.drawbitmap(bmpcloud_0, bc0x, bc0y, paint);canvas.drawbitmap(bmpcloud_1, bc1x, bc1y, paint);canvas.drawbitmap(bmpcloud_2, bc2x, bc2y, paint);canvas.drawbitmap(bmpcloud_3, bc3x, bc3y, paint);/显示米数paint.setcolor(color.white);paint.settextsize(25);canvas.drawtext(meter+米, textx, texty, paint);public void logic()if(islogic)count+;/每刷两次屏米数加一,到加速时,每刷一次屏就让米数加一if(count%metertime=0)meter+;if(meter=500)userachieve.userachieve0=1;if(meter=1000)userachieve.userachieve1=1;if(meter=2000)userachieve.userachieve2=1;if(meter=4000)userachieve.userachieve3=1;/背景2的速度为基准速度bg2x-=bgspeed;bg22x-=bgspeed;/背景3为主角等一系列需要的速度-基准速度*3bg3x-=3*bgspeed;bg33x-=3*bgspeed;bc0x-=bcspeed;bc1x-=bcspeed;bc2x-=bcspeed;bc3x-=bcspeed;/背景2的逻辑if(bg2x=-bmpbg2.getwidth()-10)bg2x=bg22x+bmpbg2.getwidth();if(bg22x=ninjarushsurfaceview.screenh-bmpbg1.getheight()+ninjarushsurfaceview.screenh/8)yy=-ninjarushsurfaceview.screenh/40;else if(bg1y=ninjarushsurfaceview.screenh-bmpbg1.getheight()yy=0;ischange=false;/背景3的逻辑if(bg3x=-bmpbg3.getwidth()-10)bg3x=bg33x+bmpbg3.getwidth();else if(bg33x=-bmpbg3.getwidth()-10)bg33x=bg3x+bmpbg3.getwidth();/白云的逻辑if(bc0x=-bmpcloud_0.getwidth()-10)bc0x=ninjarushsurfaceview.screenw+bmpcloud_0.getwidth();bc0y=(int)(math.random()*110);else if(bc1x=-bmpcloud_1.getwidth()-10)bc1x=bc0x+ninjarushsurfaceview.screenw-bmpcloud_1.getwidth();bc1y=(int)(math.random()*110);else if(bc2x=-bmpcloud_2.getwidth()-10)bc2x=bc0x+ninjarushsurfaceview.screenw-bmpcloud_2.getwidth()+(int)(math.random()*60)+10;bc2y=(int)(math.random()*110);else if(bc3x=-bmpcloud_3.getwidth()-10)bc3x=bc0x+ninjarushsurfaceview.screenw-bmpcloud_3.getwidth()+(int)(math.random()*30)+10;bc3y=(int)(math.random()*110);public int getmeter() return meter;public void setmeter(int meter) this.meter = meter;public void ontouchevent(motionevent event,int playercurrenty)if(event.getaction()=motionevent.action_down) x=(int)event.getx(); y=(int)event.gety();else if(event.getaction()=motionevent.action_up)x1=(int)event.getx(); y1=(int)event.gety();/触屏起跳时的判断4月9日4点 新添功能 if(x1=x&y1=y&playercurrentyx)/tools.sound_wind = gamemusic.playsound(r.raw.wind, -1);bgspeed=tools.prebgspeed;bcspeed=2;x=y=0;x1=y1=0;metertime=1;else if(x1x-ninjarushsurfaceview.screenw/20)/gamemusic.stopsound(tools.sound_wind);bgspeed=tools.laterbgspeed;bcspeed=1;x=y=0;x1=y1=0;metertime=2;else if(event.getaction()=motionevent.action_move) 3.4 游戏的暂停模块:n 暂停模块主要是实现线程的暂停,对当前地图的存储n 游戏界面截图n 部分实现代码: canvas.save();canvas.cliprect(voicex, voicey, voicex+voicew, voicey+voiceh);canvas.drawbitmap(voice, voicex-voiceindex*voicew, voicey, paint);canvas.restore();canvas.save();canvas.cliprect(resumex, resumey,resumex+resumew, resumey+resumeh);canvas.drawbitmap(resume,resumex-resumeindex*resumew , resumey, paint);canvas.restore();canvas.save();canvas.cliprect(quitx, quity,quitx+quitw, quity+quith);canvas.drawbitmap(quit,quitx-quitindex*quitw , quity, paint);canvas.restore();3.5 游戏的结束模块:n 主角死亡后跳转到游戏结束界面n 游戏截图:n 部分实现代码:canvas.save();paint.settextsize(30);paint.setstrokewidth(3);paint.setcolor(color.black);canvas.drawtext(你总共跑了 +latestmeter+ 米,ninjarushsurfaceview.screenw/5, ninjarushsurfaceview.screenh*5/9, paint);canvas.restore();3.6 游戏的成就、开发者、记录分数模块:n 成就系统是一个activity界面,利用了listview来显示所有成就。当玩家在游戏中达到某个成就时,成就图片会自动亮起。开发者系统主要记录了本游戏的开发人员以及分工的情况。记录分数系统记录下玩家的米数,实现一个排行功能。n 游戏界面截图:1) 成就系统 2)开发者系统: 3)积分系统n 部分实现代码:public class developeractivity extends activity /用于显示开发成员的listviewprivate listview lv;private textview tv;/listview中条目的布局private textview tv_name,tv_mission;/开发者姓名集合private string name=刘亚存,幺骏,许春龙,郝伟,刘孟野,刘建亚,付伟谦;/开发者任务,负责的区域集合private string mission=gamemenu界面,背景音乐,各种音效,主角的一系列东东,以及成就界面,怪物类,子弹类,各种碰撞各种效果,暂停界面,以及各种图各种p,boss类,各种boss各种来,gameing界面,gameover界面,loading界面,developer接面,背景桥,各种桥各种出;overrideprotected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate);setcontentview(r.layout.developer);tv=(textview)findviewbyid(r.id.developer_tv);lv=(listview)findviewbyid(r.id.deceloper_xml_listview);tv_name=(textview)findviewbyid(r.id.developer_items_name);tv_mission=(textview)findviewbyid(r.id.developer_items_mission);lv.setadapter(new myadapter();class myadapter extends baseadapterpublic int getcount() return name.length;public object getitem(int position) / todo auto-generated method stubreturn position;public long getitemid(int position) / todo auto-generated method stubreturn position;public view getview(int position, view convertview, viewgroup parent) view view = layoutinflater.from(developeractivity.this).inflate(r.layout.developer_items, null);tv_name=(textview) view.findviewbyid(r.id.developer_items_name);tv_mis

温馨提示

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

最新文档

评论

0/150

提交评论