收藏 分销(赏)

基于IOS系统的微信飞机大战游戏手机APP的设计.docx

上传人:鼓*** 文档编号:9630485 上传时间:2025-04-01 格式:DOCX 页数:25 大小:2.07MB 下载积分:8 金币
下载 相关 举报
基于IOS系统的微信飞机大战游戏手机APP的设计.docx_第1页
第1页 / 共25页
基于IOS系统的微信飞机大战游戏手机APP的设计.docx_第2页
第2页 / 共25页


点击查看更多>>
资源描述
摘 要 在信息高速发展的社会中,手机已成为我们生活中至关重要的一部分,随着智能手机和人们之间的联系越来越紧密,对于手机应用的使用更加广泛,对手机应用的开发也更加深入。现今有越来越多的年轻人使用智能手机,除了平常的打电话、发信息、聊天等功能外,年轻人对手机的娱乐功能也越来越重视,手机上的游戏种类也变得更加丰富。与此同时,苹果手机进入了中国市场,并且在全国掀起了一股购买苹果手机的热潮,而与苹果手机相匹配的iOS技术更是逐渐的流行起来。针对苹果手机开发的手游也风靡全球,而对于开发苹果手机应用的语言Object-C,,也成为眼下最受欢迎的开发语言。以软件界面优美,操作简便等等有点,在语言热度排行榜上保持一股强劲的上升趋势。 关键词:iOS;Object-C;APP;手机游戏 Abstract In the rapid development of information society, mobile phones have become a vital part of our lives, as smart phones and contact between people more closely, for the use of mobile applications more widely on the development of mobile applications and more depth. Today there are more and more young people are using smart phones, in addition to the usual phone calls, send messages, chat and other functions, the phone's entertainment features young people more and more attention, the type of game on the phone becomes richer . At the same time, Apple's mobile phones into the Chinese market, and the country set off a craze to buy Apple phone, but not with Apple's mobile phone to match iOS technology is gradually popular. Mobile development for Apple's hand tour also swept the world, and for the development of iPhone applications language Object-C , has now become the most popular development language. Software with beautiful interface, easy operation, and so little to maintain an upward trend in strong language on heat charts. Key words:iOS; Objective-C; APP; Mobile game 基于IOS系统的微信飞机大战游戏手机APP的设计 1. 引言 1.1 论文背景 这10年来发展最迅速的应属于:信息技术(information technology)——也就是IT行业 在这个信息爆炸的时代,计算机和通信技术都在快速发展,通信技术以计算机为载体,计算机以通信技术为发展动力,二者互相渗透,相辅相成,它们的结合具有跨时代意义。以计算机为代表的IT(information technology)产业 和 以语音,数据通信代表的CT(communication technology)产业 ,在进入21世纪,这两者融合为ICT产业IT和CT产业的融合[1]。 进入21世纪以来,我们的通信工具也在不断的发展中,由原来的手机帝国诺基亚一家独大到现阶段的苹果、三星、小米等各款智能机百花齐放,百家争鸣。而智能手机和通信移动互联网的普及在很大程度上提高了人们的生活水平。对于现在的人们来说,智能手机已不是简单的打电话,发短信可以满足人们的需求。随着人们对精神需求的增长,手游成为了人们休闲娱乐消遣的最佳方式,相对的苹果手机的基于IOS系统的游戏阮籍的需求量也在不断增长。 由于移动互联网在全球范围内的广泛应用,全世界的IT公司正逐步将业务中心偏向于移动互联网,移动互联网也一跃变成IT行业利润增长最快的部分[2]。而手机作为小型互联网工具,在当今社会占有举重若轻的地位,其中年轻人对手机的消费在广大消费者中占很大的比例,因此本人决定支队年轻人设计一款手机游戏。 对于年轻人来说,手机的娱乐功能尤其重要,出QQ、微信等社交软件外,游戏是年轻人的最爱。而Apple手机一直在手机行业中占有领军地位。Apple公司的电子产品因其时尚的外表 、酷炫的应用程序,受到极其多追求时尚的年青人的青睐。目前,Apple公司推出的Iphone和Ipad两款产品深受无数人的喜爱。苹果手机作为现如今手机市场的主流,它所应用的IOS系统逐渐盛行[3]。苹果公司占据了IT行业的龙头地位,它所研究独创的IOS系统与Android在操作系统领域势均力敌。IOS系统具有非常完美的软件开发界面,操作简便,吸引了大量的专业软件团队以及个人开发者。苹果手机的应用语言object-C,也成为当前最时髦的开发语言[4]。根据目前的市场前景我决定利用这种技术来开发这款游戏软件。 Apple公司提供的APP store作为应用程序市场,赋予了缺乏市场能力的第三方开发商和草根开发者新的商业机会,研发者只需专注于应用开发,而市场和销售则交给其他人管理,此种模式下,即使是个人开发者也可以创造财富。 本人设计的这款游戏软件融合市场流行元素,多方位满足消费者的需求,并采用object-C语言开发,定能在同类产品中占据优势,赢得消费者的欢迎。 1.2 论文研究的目的 随着手机的普及以及当今社会快节奏的生活方式,手机游戏已经成为许多人舒缓生活压力的一种方式。它通过构建一个虚拟的游戏世界,帮助人们释放焦虑等负面情绪。而苹果手机又颇受年轻人的追捧,且苹果的软件页面简洁美观,易于操作。基于以上这些信息,本人决定研发一款手机游戏,这款手游采用iOS系统,适用于手机微信版本。这次的毕业设计有助于提升自己对IOS软件的使用水平,使自己在将来的社会竞争中可以占据更多优势。 2.应用分析 2.1可行性分析 (1)经济可行性分析:这款游戏是通过苹果系统的Xcode来进行的,采用IOS系统开发。自己有黑苹果系统作为软件设备,且有UI相关技术的同学提供帮助,可以顺利开发这款游戏,自己也可以利用苹果在线应用资源,操作简便,不会对人力、物力、财力形成浪费。所以这款基于IOS系统的手游APP在经济方面是可行的。 (2)社会可行性分析:开发这款游戏软件并不是基于盈利目的,也不会威胁到其他人或组织的利益需求。研发这款手游符合相关规定,不会影响社会的和谐稳定,无其他宗教、反动势力、谋取暴力等不利宣传,所以在社会方面是可以实行的。 (3)技术可行性分析:这次应用Object-C来开发这款手游,此外还会运用一些苹果系统的UI设计以及某些类库。基于对IOS的了解以及有开发经验的同学指导,相对的开发一款游戏软件是完全可以胜任的。因此在技术方面是完全可行的。 综上所述,基于iOS系统的飞机大战微信手机版APP的实现是可行的。 2.2 需求分析 需求分析是指在面对问题时,就这个问题所需要的要求、数据、预知结果等所需要提前做的全部工作。对于一款软件开发,必须提前分析客户的需要。只有在确定客户的需求后,我们才能拿出相对应的解决方案。 根据当前苹果手机在中国市场供不应求的形势,一款简单的小游戏会颇受快节奏生活压力下的年轻消费者的欢迎。所以游戏的重点是通过简单的外形和步骤以及酷炫的性能来吸引顾客。 3. 系统开发语言和工具 3.1 开发语言Objective - C Objective - C作为Mac OS X 与 iOS 应用程序的开发语言,Objective-C近年来颇为受到关注。尤其是智能手机与平板电脑掀起热潮之后,越来越多的开发者都将目光转向移动平台,并开始学习Objective-C[5]。 Objective-C是一套崭新的计算机编程语言,在C语言开发的基础上增添了面向对象的特性。 与 C++ 、Java等面向对象程序语言类似,不过很多方面还是有所差别的。因为Objective-C语言使用“消息结构(messageing structure)”而非“函数调用(function calling)”。Objective-C语言是由Smalltalk(Smalltalk:注释----20世纪70年代出现的一种面向对象语言6)。后者是消息型语言的前身。Objective-C使用动态绑定的消息结构,在接收到一条消息之后,究竟应执行何种代码,这是由运行期环境来决定的。 3.2 音频播放器的框架AVFoundation AVAudioPlayer是AVFoundation.framework里面最基本的一个音频播放器的类。它对音乐的基本操作主要是调用三个方法:开始(play),暂停(pause),音量(volume)[7]。 但是AVAudioPlayer没有队列这个功能,它只能播放一个指定路径的音频。当需要播放多个音频时,就必须创建多个AVAudioPlayer才能实现。而在AVFoundation里面,有另外一个功能强大的类AVPlayer被称为AVQueuePlayer,它是播放音乐最简单的一种方式,基本上要做音乐播放器要靠它,它与AVAudioPlayer不同的是,它可以建立一个AVPlayerItems 的队列,然后他们会被依次的播放。 获取网络数据的音频,需要开启一个网络链接,接着请求URL数据,而回调的方法将提供持续的音频数据。 AVQueuePlayer还有一个最重要的作用就是它的音频后台模式是自动化最高的一个,只需要激活它,便可以在后台调用callback方法实现后台播放。 3.3 开发工具Xcode Xcode是AppLe公司为开发iOS应用和Mac应用所提供的IDE(集成开发环境,就如同Java开发者所习惯使用的Eclipse、NetBeans等等)工具。这是一款非常优秀的iOS开发工具,它是开发者建立起一个iOS应用,一种最快捷的方式[8]。 Xcode不仅可以为iOS开发人员提供一个好的开发环境,更可以为 Java 开发人员赋予了更多的开发能力。 如果有iOS设备,便可以在iOS设备上,使用Xcode部署设计的应用程序,除此之外更可以使用iOS Simulator的仿真器进行调试。Xcode提供了友好而方便的应用程序开发环境[9]。 3.4 SQLite介绍 SQL(structured query language)是一种结构化查询语言,在本课题中,使用了SQLite这种小型的数据库。这个程序所占用的内存是非常低的,一个程序的大小也只有几百K而已。而且它处理速度比起同样是数据库管理系统的PostgreSQL和Mysql快得多[10]。 图:3-1 SQLite数据库 SQLite关系数据库的基础: 表:可以非正式的把关系数据库视为表的集合,每一个表又包含行和列。例如excel中的表。 列:数据类型是指该列能够保持的数据类型,一般包括整形,浮点型,字符串和日期等等,它所对应的是一个列名和数据类型[11]。 行:对应于相互关联的列值。文本中的特定行包括了一个特定纪录所对照的所有列值。既所有行中的值都是相互关联的。 正式术语: 表的正式术语为关系 列的正式术语为属性或数据元素 行的正式术语为元组 键:用来查询行的一列或多列的组合。 主键:能够独一无二的标示表中某一个特定行,不被允许重复,primary key,一个表只能对应一个主键。 外键:用作一种约束,而不是用来查询表中的记录的。而是引用其他表中的键,通常是主键。用作一种完整性约束。由它界说了一个表到另外一个表的引用,所以称之为完整性约束[12]。 约束: 基本约束:如非空 唯一性约束:超键,组合唯一 主键约束:简单的表明不存在完全相同的两个记录,切构成主键的所有字段为非空。 3.5 cocos2d简介 本毕业设计课题是跟游戏有关的,而在iOS中有一个框架叫做coco2d,作为一个开源的Objective-C框架,coco2d主要用于在iOS和Mac OS X系统上制作2D游戏。使用cocoa2d,开发者可以更加轻松的开发iPhone、iPod Touch、iPad、和Mac上的游戏[13]。 Cocoa2d的特点:一是开源,开发者可以自由的修改和学习。二是易于使用:cocoa2d最受游戏开发者欢迎的地方取决于它把底层的OpenGL ES代码封存的很好,大多数图形都是用简单的精灵类来显示[14]。也就是说,游戏开发者是不需要关心底层OpenGL ES代码的具体实现情况,可以直接通过精灵对象就可以完成平移,缩放,旋转等等各种动画效果,使得游戏开发者可以把关注的焦点放在游戏机制的设计本身。三是性能高效,cocoa2d使用OpenGL ES进行图像渲染,对数据结构进行了优化,从而让iOS设备的性能发挥到极致[15]。 4. 应用总体设计 4.1硬件结构规划 本此毕业设计的游戏在性能要求上主要是必须能够在苹果系统下运行Xcode,同时也要支持SQLite的安装,具体的要求可以参考下面硬件配置: 硬件运行环境: 环境 最小配置 物理内存 建议在512MB——2GB 虚拟内存 两倍大小的RAM 临时磁盘空间 200MB 硬盘空间 60GB 视频适配器 256种颜色 处理器 建议在1GHz以上 4.2游戏的功能模块概括 图:4-1 游戏功能模块 5.游戏的详细设计 5.1 加载图片 使用cocoa2d iOS模板新建一个项目,命名,然后将cocoa2d项目拖拽到工程当中,并且为cocoa2d项目的源代码添加-fno-objc-arc选择让项目支持AR模式。接下来,将所需要的资源文件,将声音文件拖拽到‘Models.bundle’组中,将图片拖拽到‘images.bundle’中。 在游戏开发过程中,通常都会使用精灵表单来优化游戏性能,在这个小游戏当中,需要使用精灵表单来提高游戏性能,即使这种性能优化在此游戏中并不会有特别的明显的效果。 接着在Models文件中创建一个继承于NSObject的类:ImageResources,使用这个类来实现对所有图片的加载,包括背景图片、玩家飞机图片、子弹图片、所有敌机图片还有敌机被击中或击毁时的图片。 由于加载图片在整个程序的运行中只需要运行一次,所以可以使用GCD线程模式中的dispatch_once方法,创建出一个单例类。 不管是normal状态下的图片还是飞机或敌机爆炸后的图片,还有正常子弹和增强子弹的图片等等,将这些图片通过封装的方法imagesWithFormat,使用一个for循环将这些图片存到各个数组中。在需要用到这些图片数组,或者是图片名字的时候,便可以通过返回一个图片数组,使图片显示到游戏界面中。 接着可以实现初始化方法initSharedImages,使得在开始游戏的时候飞机和子弹,背景,敌机等图片都可以直接显示出来。 5.2 认识游戏元素 <1>hero,就是玩家飞机了,有一个normal状态和4帧动态爆炸图 图:5-1 主角飞机 <2>enemy1,enemy2,enemy 3,一共有三种类型的敌机,分别是小型飞机,中型飞机和大型飞机。前两种型号飞机有1种normal状态和4帧的动态爆炸图,第三种型号飞机,也就是最大的飞机的normal状态是2帧,其中包括正常状态还有被子弹打中时候的状态。爆炸态是6帧的动态图。效果如图5-2、图5-3和图5-4。 图:5-2 小敌机爆炸 图:5-3 中型敌机爆炸图 图:5-4 大型敌机爆炸图 <3>ufo,也就是指从游戏屏幕上方掉下来的2个降落伞如图5-5,这两个降落伞可以玩家飞机添加两个能力:一个是全屏爆炸,一个是双排子弹。 图:5-5 道具 <4>bullet,子弹,有2种颜色,单排(棕黄色)和双排(蓝色)如图5-6。 图:5-6 两种子弹颜色 5.3 游戏框架 <1>游戏登入界面如图5-7,主要是开始游戏,关闭背景音乐,还有历史分数 图:5-7 登入页面 <2>游戏场景界面如图5-8,主要用于游戏的进行。这里主要包含我方飞机层,三类不同大小的敌机层,子弹层,ufo层和控制层。 图:5-8 游戏场景界面 <3>游戏结束界面如图5-9,主要用于游戏重新开始。 图:5-9 游戏结束界面 5.4 游戏主要功能设计 1.添加游戏菜单项功能 游戏首页的设计,创建继承于UIViewController的控制视图,并且勾选xib,拖拽UIImageView,UILabel,UIButton等控件,进行页面布局。接着分别对3个按钮绑定点击方法。3个按钮的作用分别是:跳转到游戏主页面,关闭背景音乐,获取历史分数。 <1>开始游戏按钮: 通过OC的中UIView动画来实现画面的跳转。使用找window的方式,找到游戏主页面的MainViewController.h文件,将这个文件设置为跟视图,然后进行UIView动画中的向下翻页效果。 <2>历史分数按钮: 首先创建一个视图控制器,在这个视图中使用UITableView表来展现历史分数的数据。在xib中添加一个UITableView表,设置表的实例变量,和两个协议方法UITableViewDataSource和UITableViewDelegate并且实现两个必须实现的协议方法cellForRowAtIndexPath和numberOfRowsInSection。 创建一个继承与UITableViewCell的单元格类,用来显示每个单元的画面。在这个单元格类中添加多个UILabel控件并且绑定实例变量,用这些空间来显示时间和分数。 接着拼接字符串,将字符串导入到封装的方法createTableWithSQL中,创建一个出MarkTable表,用来记录数据。 从SQLite中获取历史分数的数据,将这些数据导入到数组dataArray中。使用数组dataArray.count来获得一共有多少单元格。并且将分数赋值给单元格中的控件。 最终展示出来的历史分数页面如图5-10所示: 图:5-10 历史分数页面 <3>关闭背景音乐: 首先声明一个在MainVC中声明一个实例变量isCloseMainVC,在PlaneGameViewController.h当中也声明一个实例变量isClosePlaneVC,当点击首页中的关闭背景音乐,将首页这个关闭状态进行传值,将值传到MainVC中,当MainVC准备跳转到下一个页面PlaneGameVC,再次将这个值传入到PlaneGameVC,接着进行判断是否可以开启背景音乐. 在游戏界面中也设置一个按钮,点击打钩表示播放背景音乐,再次点击打钩消失,关闭背景音乐。 2.预加载游戏资源 任何一个游戏中都不能缺少音乐和音效,苹果公司在iOS系统中提供了两个框架用于波方法音乐,分别是AVAudioPlayer 和 OpenAL. 使用AVAudioPlayer播放音乐非常简单,但对于音乐的控制方法有限.而OpenAL是一个低级API,支持更多的特性,但是使用起来要比AVAudioPlayer要复杂的多.所以在这个项目中将使用AVAudioPlayer. 在真实的项目当中,游戏开始前,都需要预先加载游戏所需要的背景音乐、音效、音量等资源,所以我们得先创建一个SoundsToolr继承于NSObject,来预加载游戏资源。 在SoundsTool.h中使用枚举typedef NS_ENUM进行声明子弹状态,敌机状态,玩家飞机状态。并且声明开始,停止,继续,音乐的方法。 接着初始化一个方法-(id)initSharedTool ,在这个初始化方法中使用dispatch_once创建出一个单例类。设置在一进入游戏的时候,就会播放背景音乐。 要想播放一首音乐需要找到这首歌的路径,使用NSBundle类找到存储音频的地址images.bundle。接着拼接字符串地址找到音频路径之后,使用NSURL格式将路径存储起来。还需要使用AVAudioPlayer 创建出一个对象musicPlayer,使用这个musicPlayer对象来播放背景音乐。[self.musicPlayer prepareToPlay];调用准备播放的系统方法。 接着调用系统自身的方法play、pause和stop这三个方法来实现音频的播放,暂停,停止的效果。 设置子弹音效,小敌机爆炸音效,中等敌机爆炸音效,大敌机爆炸音效,还有游戏结束的音效,吃到蓝色子弹的音效。利用上述所使用的枚举和已设置的状态,使用switch方法,在这些动作有被执行到的时候调用这些音效。并且播放这些音效。 3.玩家飞机的飞行效果 首先需要添加玩家操控的飞机和游戏背景图片。在View文件夹中创建一个继承与UIView的类,在initWithFrame的初始化方法中创建两个UIImageView控件,将背景图片和过场动画logo的名字赋值到这两个控件中展示出来。 接着我们在背景图片上再次添加玩家飞机hero的图片。也是在init的方法中实现。并且需要让这个飞机处在屏幕中央的最下方。使用CGRectGetMaxX和CGRectGetMaxY这两个方法计算屏幕的最底部的中央坐标。将坐标值赋值到hero.position中,玩家飞机就显示出来。 添加完背景图片和飞机后的界面如图5-11: 图:5-11 背景和玩家飞机 玩家飞机已经显示在屏幕当中了,但是这只是一个静态效果,现在所需要的是让飞机动起来.这时候就需要使用到OC语言中的一个动画效果:帧动画效果,它可以实现连续显示出图片,效果就同于动画。这样可以使得游戏效果更加逼真.而实现这个效果也是需要在init的方法中实现它。 导入一个数组,这个数组中存入的是所有我方飞机的图片,接着讲数组赋值给animationImages,并且使用animationDuration方法,让这些图片以每1秒换一张图片的速度开始连续播放,这样就可以跟连环画一样,实现飞机动起来的效果。给玩家的感觉就是飞机已经启动完毕正在飞行。 4.玩家飞机Touch实现(玩家飞机的移动) 玩家飞机已经显示到屏幕中,接着需要完成对玩家飞机的控制移动。要使用到两个触控方法:一个是当手指触摸屏幕时调用的方法touchesBegan,一个是当手指触摸屏幕后接着进行移动的时候调用touchesMoved。 使用CGPoint声明两个实例变量beginPoint, beginCenter,主要功能是记录两个点:一个是触摸屏幕时记录下当前点,一个是玩家飞机的初始中心位置点。 首先实现touchesBegan方法。获得屏幕上触摸的一个点,根据这个点得出玩家飞机在父视图上的位置,使用beginPoint记录下这个点,并且用beginCenter记录下玩家飞机的中心坐标。 接着实现touchesMoved方法,根据所得到的beginPoint点,计算出移动的点和原坐标的点之间的差值,得到差值x和y。将这个差值配合所获得的beginCenter坐标,使用CGPointMake(_beginCenter.x+x,_beginCenter.y+y)赋值给hero的中心点。 这时候玩家点击选择飞机,然后移动鼠标,玩家飞机便会随着鼠标轨迹移动. 5.背景滚动效果 现在,玩家飞机已经可以飞行,并且可以随者鼠标移动而飞行,但是背景图片一直都没有变化,这样就无法展现出飞机前进移动的效果,所以需要让背景图片滚动起来。 使用CGRect声明几个实例变量分别是:游戏区域大小gameArea,第一张背景图片的位置bgFrame1,第二章背景图片的位置bgFrame2。 封装一个移动背景方法moveBackground,在这个方法中实现背景移动,最后可以在计时器中调用这个方法。 需要将一张背景图片贴满在主屏幕上,另一张一模一样的背景图片放在主屏幕的背景图片的正上面。 接着让背景图片以纵坐标Y轴方向,纵坐标每秒+1的方式移动, 使用CGRectOffset方法记录下初始位置,然后使用if语句进行判定,当第一张背景图的移动的坐标大于整个屏幕的大小时,接着将初始坐标topFrame重新赋值给self.bgFrame1,当第二张图片也移动了整个游戏区域的大小,就将topFrame赋值给self.bgFrame2。 到最后在计时器中调用moveBackground方法,这样就能实现重复循环的调用两张背景图,等同于实现滚动了的效果。 6.添加敌机 现在玩家飞机创建好了,接下来就是需要创建敌机并且让敌机飞行。可以添加一些不同种类的敌机:从屏幕最上方随机出现一些大量的各种类型的敌机将,并且敌机将会以变化的速度和变化的位置向下俯冲。而且为了使游戏更加有趣味性和难度,可以给敌机添加额外的生命值、敌机爆炸等特效. 首先敌机是从随机位置向下俯冲的,这就要用到随机数arc4random_uniform这个方法来使得敌机坐标随机,俯冲速度随机.对于不同型号的敌机,它们的hp(生命值)也是各不相同的小型敌机hp = 1,中型敌机hp = 5,大型敌机hp = 15.击毁敌机后的分数prize(奖励)也是不同的. 下面就是设置敌机的各种属性: 接下来需要创建敌机,从不同的位置俯冲下来.并且是在随机时间段让不同型号的飞机俯冲下来.每次运行计时器时,需要让三个型号的敌机生成一个它们代表自己的随机数,在计时器中我们设置一个实例变量static long long steps,让这个steps自增长.每当这个_steps对三个型号敌机随机出来的数字中的一个数字取余结果为0时,就让这个类型的敌机出现。 具体代码实现方式如下: 每创建好一个敌机后,需要将这个新创建的飞机加入到removeEnemySet当中,接着让这个敌机下落,这时候也是需要用到计时器来让这个敌机以加坐标(在Y轴上加1)的方式,这样就能让敌机有俯冲下来(俯冲下来的速度也是随机的).每当俯冲下来的飞机超出了屏幕的高度,我们需要就将这个超出屏幕的飞机从removeEnemySet 当中移除掉不然就会造成图片堆积,资源浪费。[removeEnemySet addObject:enemyView]。 具体代码实现方法如下: 实现后的效果如图5-12所示: 图:5-12敌机下落画面 6.玩家飞机添加子弹并射击 接下来将有大量的敌机显现,并且以不同的速度不同的角度向玩家飞机俯冲下来,所以就需要使用子弹来将这些敌机击毁。可以将子弹设计成自动发射状态,并且子弹是无限的,玩家需要的只是专心的控制飞机的飞行。 首先,需要让子弹从玩家飞机的上面将子弹发射出来.要先获得飞机的坐标,将飞机的坐标赋值给子弹,接着让子弹从当前飞机左边的上面显示出来,并且向上移动.并且在计时器中_step每增加10次时候 就发射一个子弹. 飞机射击的画面如图5-13所示: 图:5-13 飞机射击子弹画面 子弹发射出来后, 需要将子弹图片重新加入到removeBulletSet,需要回收重用,不然会造成资源的堆积和浪费。进行一个if语句判断每当子弹飞出屏幕外之后,即子弹坐标的Y值小于0时,需要将这个子弹图片从removeBulletSets集合中移除。 子弹的发射还有一种情况就是,当获得了蓝色的子弹道具时,子弹的图片就需要转化成蓝色子弹图片。并且开启双子弹功能。 7.碰撞检测 现在子弹发射出去了,需要让子弹和敌机进行一次碰撞检测,并且玩家飞机也要和敌机进行碰撞检测.我们需要用到一个方法判断两个控件的frame (位置)是否有重合,如果重合返回YES,如果不重合,返回NO. CGRectIntersectsRect(<#CGRect rect1#>, <#CGRect rect2#>) 按照逻辑,先判断子弹和敌机有没有发生碰撞.要先遍历循环子弹集合self.bulletViewSet将这个遍历出来的子弹赋值给新定义出来的Bullet对象,接着在遍历敌机集合self.enemyViewSet,也将这个遍历出来的敌机赋值给新定义的Enemy对象,接着就是最重要的判断两个视图是否碰撞if (CGRectIntersectsRect(bulletView.frame,enemyView.frame) && !enemy.toBlowup),如果发生碰撞,将敌机的生命值减去1,更新敌机的生命值(大型敌机的生命值为15)。接着再次进行判断敌机的生命值,如果敌机声明值为0的话,则播放敌机爆炸帧动画和爆炸音效。 玩家飞机爆炸效果如图5-14: 图:5-14 玩家飞机爆炸图 当敌机生命值为0的时候执行爆炸处理。 玩家飞机和敌机之间也是需要检测这两者是否相互碰撞的。首先需要用for循环遍历敌机的集合,接着进行判断,玩家飞机的坐标位置(frame)是否和敌机的坐标位置发生重合。当重合时,播放玩家飞机爆炸帧动画,并且同时播放爆炸音效.调用结束游戏的方法. 具体实现方法如下: 8.暂停功能和添加游戏积分统计 当点击暂停功能时,改变暂停按钮的背景图,并且调用pauseGameTimer方法将定时器摧毁,接着暂停播放背景音乐[[SoundsTool shareSoundsTool] pauseMusic]; 再次点击暂停按钮时将按钮的背景图片再次改变,接着重新创建一个新的定时器飞机和敌机就会重新动起来,也得将关闭的音乐再次开启[[SoundsTool shareSoundsTool] playMusic]; 每当摧毁一个敌机就会增加这个敌机所对象的分数奖励.需要将这个奖励分数传到显示分数的标签上(得分板),而且还可以添加一个新功能就是当得分/难度等级得出来的结果超过某个限定值的时候,游戏难度等级将会上升.敌机的数量将会越来越多. 9.游戏结束 当玩家飞机被撞毁时,需要停止音乐,接着让游戏界面弹出一个提示框。提示框的创建需要使用到UIAlertView,设置提示框标题“游戏结束”和提示信息获得的分数,并且有两个选项可以选择,绑定clickedButtonAtIndex提示框协的议方法。点击重新开始时重新开启一个新的定时器,并将所有控件数据归为初始化。点击回到主界面时,使用UIView动画跳转到FirstViewController页面。并且将获得分数,和当前时间存储到SQLite数据库中。 游戏结束画面如图5-15所示: 图:5-15 游戏结束画面 6.结束语 经过两个月的毕业设计学习,基于IOS系统飞机大战微信版手机APP逐渐成型。 到此为止,这个飞机大战的游戏基本已经开发完成了,包裹背景移动,飞机飞行动画,背景音乐,音效,大量敌机俯冲,玩家飞机射击,玩家飞机爆炸,敌机爆炸,玩家积分统计,和游戏设置等功能。从一开始接触IOS软件到论文的完成,更深层层次的了解到即使只是设计一款小游戏也是一件非常复杂的事,做毕设期间的每一步都是一种挑战。在开发过程中,最初对iOS软件的陌生以及思路的不成熟,导致设计出现了很大的偏差,比如代码的错误,调试的异常。 我认为游戏是没有真正意义上的完结,开发者是可以不断的完善它,赋予游戏更多更好玩的新元素和新玩法. 参考文献 [1] [美] Dave Mark,Jack Nutting,Jeff LaMarche 著 毛姝雯,杨越,孙文磊,等 译.iOS 5基础教程[M].人民邮电出版社,2012. [2] Mark Dalrymple,Scott Knaster,高朝勤,杨越.Objective-C基础教程[M].北京:人民邮电出版社,2009 [3] 毛姝雯,杨越,孙文磊,iOS5基础教程[M],人民邮电出版社,2012 [4] 曹春萍,王志民.MVC设计模式的研究及其应用[J].现代电子技术,2005. [5] Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法[M] 机械工业出版社 英:Matt Galloway 著 爱飞翔 译 [6] 李滨.基于平台无关模型到iOS平台相关模型的转换研究与实现[D].电子科 技大学;2012. [7] 李柏岚.ios平台的软件安全性分析[D].上海交通大学,2011. [8] 韩啸,顾红其.基于iOS的图像动画制作[J]. 电脑知识与技术,2013,11:2682-2688 [9] 刘辰基,周宝刚,郭淑琴. iOS中基于UITableView的大批量数据加载优化[J].杭州电子科技大学学报,2013,04:46-49. [10] 冯国平.基于ios平台的自定义手势识别研究[D].现代计算机(专业版),2012. [11] 黄碧辉,李英,李小龙..基于网络的开放式数控系统的研究[J].机械设计与制造,2010. [12] kikier.调教ios的基础设置[D].电脑迷,2012. [13] (美国)Dave Mark著,漆振 译. iPhone 4与iPad开发基础教程[M].北京:人民邮电出版社,2011. [14] 谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2005. [15] 金金.苹果计算机系统取证分析[J].信息安全与通信保密.2011. 致 谢 这两个月的毕业设计,从对iOS的一无所知,我开始查阅相关资料,独立的学习一些相关知识,并且在导师和培训IOS的同学帮助下,设计思路逐渐清晰,使得作品一步步完善直到成品的出现。虽然设计还存在一些不足,但是看到游戏模型的展现还是很开心。 通过这次毕业设计,深刻意识到完成一件事情,需要有系统的思维方法,一定要从大局出发,一步步达成既定目标,这样才能准确高效,同时对待问题要耐心。在论文撰写期间,余根坚老师渊博的知识,高深的理论实践基础使我受益匪浅,在此向老师表示诚挚的感谢! 在毕业设计这段历程中,提高了编程思想能力,对代码的熟练度,解决代码BUG的能力等等,这些都是我的收获,它们将为我在以后的工作中打下更加扎实的基础。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服