ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:1.25MB ,
资源ID:7275049      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7275049.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(创新实践 iphone软件开发报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

创新实践 iphone软件开发报告.docx

1、创新实践 iphone软件开发报告摘要从没有比现在更好的时机,能通过为iOS编写游戏,将我们的创意带人生活中。苹果App Store给了我们巨大的机会,让我们的游戏可以出现在数百万的客户面前,游戏的分发也从未像如今这样简单和广泛。你不仅能够拥有数百万的潜在客户还能拥有尖端的开发工具和硬件。iPhone和Pod Touch的能力已经超过了几年前的桌面电脑。它们能使你创建一些极其出色的游戏,而很少受到早期手持设备的硬件和软件限制。本设计在对ios游戏开发有初步了解的情况下,设计一个有代表性的iOS商业游戏实例,通过对商业游戏实例的学习,了解真实游戏项目的系统构架、引擎设计,了解声音、视频、图片处理

2、等相关的编程技术要点、以便在实际的游戏项目开发中借鉴和综合应用这些知识,本设计具有极高的商业价值,通过对完整的游戏源代码学习可以在这个游戏的基础上创建不同类型的ios新游戏。关键词:ios编程、iPone开发、游戏开发目 录1开发工具与环境 - 2 -2系统分析与设计 - 5 -3系统详细设计 - 9 -5结论 - 15 -6参考文献 - 16 -1开发工具与环境 为iOS开发和设计游戏,需要许多工具和框架,例如,你将使用Xcode,这是苹果公司发布 的一款免费集成开发环境(IDE),此外你还要学会在iOS中使用原生语言Objective-C;1 Objective-C介绍 Objective

3、-C语言主要用于Mac OS X操作系统和iOS平台的软件开发。Objective-C语言是C语言的超集,这使得C语言开发的代码可以不用修改就能够运行在Objective-C环境中,该语言设计为可以支持真正的面向对象编程(OOP)。Objective-C通过提供类定义、方法以及属性的语法、还有其他可以提高类的动态扩展能力的结构等,扩展了标准ANSI C语言,添加了动态类型、反射等机制,并且具有某些动态语言,如Python、Ruby所具有的特征,其类的语法和设计主要基于Smalltalk编程语言,编译以后的Objective-C代码是本地机器码,这相对运行于虚拟机的JAVA、Python和Rub

4、y具有更高的性能,又比C+有更强的动态性。Objective-C的最新版本是2.0,跟随Mac OS X一起发布。2 开发工具除了Xcode/Objective-C组合以外,你还需要一些其他工具和应用以创建游戏,下面是一些这类工具的简单概述。(工具)-下面这些工具在设计和开发iOS5游戏时是必需的。XcodeXcode是用于编写iOS应用和游戏的开发环境。最新的版本是带有iOS SDK 5.0的Xcode4.2版本。Xcode是一个整体的开发环境,在单一界面中提供编码、界面设计、编译、调试、测试和剖析等功能。iOS SimulatoriOS Simulator主要用于测试应用和游戏,使设计好的

5、游戏就像在3个不同的iOS设备上运行一样:标准iPhone320480,具有Retina屏幕的iPhone640960和iPad1024768。你可以在没有实际硬件的情况下测试这3种设备。iOS InstrumentsiOS Instruments 是应用程序用来动态跟踪和分析 Mac OS X 和 iOS 代码的实用工具。 这是一个灵活而强大的工具,它让你可以跟踪一个或多个进程,并检查收集的数据。 这样,Instruments 可以帮你更好的理解应用程序和操作系统的行为。DashcodeDashcode是苹果XCODE开发者套件中的一个工具,完全利用HTML+CSS+JAVASCRIPT技术

6、,构建适用于MAC OS X的DASHBOARD WIDGET,桌面级网页程序,以及IPHONE网页程序。(其他工具)Preview, Hiero,Audacity等,当然还有笔和纸系统构架图搭建开发环境选择iPhone模拟2系统分析与设计“为什么你在做梦的时候,玩具会从一个地方移动到另一个地方?”SweetDreams是一款玩起来非常轻松的休闲游戏,游戏使用cocos2d开发库进行开发,充分利用iPhone创新的用户界面控制方式,通过倾斜手机移动角色、控制速度和方向,单击屏幕进行跳跃,摇动手机摆动绳索,梦幻般的音乐听起来让人心情愉快,解决难题后即可获得奖金。(运行效果)SweetDreams

7、游戏界面如图所示 游戏使用经典的MVC(Model-View-Control)模式构建系统框架,并使用Box2D作为物理引擎,引擎则作为模式中的“Model”部分将游戏中的精灵(Sprite)进行对象建模,引擎包括间距链接(Distance Joint)和旋转链接(Revolute Joint),奖物体连续连接在一起接受物理作用,每个精灵都对应Box2D的一个刚体(b2Body)对象,这样在精灵类对应的视图(View)和控制器(Control)中就可以非常方便地使用Box2D提供的功能。如图所示“Model-View-Control”模式示意图。游戏物理建模类图如图BaseModelObjec

8、tBaseModelObject类包含物理模型基类的宽度、高度、密度、阻尼、摩擦、还原等属性,游戏中的云朵、花、精灵、房屋等都属于该模型对象,通过这样的物理建模,游戏就可以非常方便地使用Box2D提供的功能来进行精灵的位置更新和“碰撞检测”。3系统详细设计BaseModelObject 的类定义代码如下。/* * BaseModelObject.h * SweetDreams * * */ BaseModelObject.h#import “IModelObject.h” interface BaseModelObject :NSObject b2Body* physicalbody;floa

9、t Z;float width;float height;float linearDamping;float angularDamping;float density; float friction; float restitution; bool hasMass; bool isInWater; bool fixedRotation;-(id) initInWorld:(b2World*) mWorld withRect:(CGRect) mLocation;end 加速度传感器(Accelerometer)iOS提供了一个UIAccelerometer类来获取加速度数据,这个类属于sing

10、leton类型,全局唯一,该类从传感器硬件读取数据,总共可以检测6个方向上的加速度,X、Y、Z的取值都在-0.50.5之间,只要设置UIAccelerometer对象的delegete为你的对象,(例如UIApplication),你的对象就可以在回调借口中接收到加速度数据更新通知。使用一下代码来对加速度传感器进行测试,以便对UIAccelerometer类有一个感性的认识。UIAccelerometer *accelerometer;self. accelerometer= UIAccelerometer sharedAccelerometer;self. accelerometer.upd

11、ateInterval= .1;self. accelerometer.delegate=self;- (void)accelerometer:( UIAccelerometer *) accelerometer didAccelerate:( UIAcceleration *) acceleration labelX.text=NSString stringWithFormat:”X:%f”,acceleration.x; labelY.text=NSString stringWithFormat:”Y:%f”,acceleration.y; labelZ.text=NSString str

12、ingWithFormat:”Z:%f”,acceleration.z; self.progressX.progress=ABS(acceleration.x); self.progressY.progress=ABS(acceleration.y); self.progressZ.progress=ABS(acceleration.z);游戏在BaseGameLayer类中通过一个NSMutableArray类型的变量imputHandlers来管理Accelerometer控制,并在其didAccelerate()函数中遍历这个数组,将加速度数据通知数组中的各个CharacterContr

13、oller对象,这样各个精灵都能产生加速度作用,代码如下-(void) accelerometer: (UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration for(id inputHandler in inputHandlers) inputHandler accelerometer:accelerometer didAccelerate:acceleration; 在游戏的场景类中将CharacterController对象加入该数组,代码如下。/Cow01Scene.mm-(void) s

14、pawnChar self unschedule:selector(spawnChar); CharacterController* character = CowController alloc initCharacter:self :CGRectMake(120, 110, 15, 50) autorelease; self addChild:character z:2; self addInputHandler:character; spawnExit closeExit;在CharacterController类的didAccelerate( )方法中具体处理加速度数据,代码如下。/

15、CharacterController.mm- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration if (characterStatus = CharacterView_PrepareJump) return; /LOG(accelerometer characterStatus: %d, characterStatus); if(characterStatus = CharacterView_Swing & !model grabbedObject

16、 isKindOfClass:BallonModel class) float x = acceleration.y; float y = acceleration.x; float tVectorLength=sqrt(x*x+y*y); xTilt=-10.0f*x/tVectorLength; yTilt=10.0f*y/tVectorLength; /LOG(CharacterController:accelerometer swing xTilt: %f, yTilt %f, xTilt, yTilt); return; if (acceleration.y MOVEMENT_ACC

17、ELERATION_THRESHOLD) self controlLeft; else if (acceleration.y WakeUp();targetModel physicalBody-ApplyForce(b2Vec2(xTilt, 0),targetModel physicalBody-GetLocalCenter();在BaseModelObject基类中再通过GetPosition()、GetAngle()、GetMass()等函数获取Box2D加速度效果效应计算后的结果,代码如下。/BaseModelObject.mm- (float) xreturn self physic

18、alBody-GetPosition().x;在CharacterController类中则根据这些计算后的位置数据更新精灵的位置,代码如下。/CharacterController.mm#pragma mark Scene-(void) tick:(ccTime) delta /LOG(tick model = nil: %d characterStatus: %d, model = nil, characterStatus); if(model = nil) return; model update:delta; switch(characterStatus) case Character

19、View_Idle: self tickIdle; break; case CharacterView_Walk: self tickWalk; break; case CharacterView_PrepareJump: self tickPrepareJump; break; case CharacterView_Jump: self tickJump; break; case CharacterView_PrepareLand: self tickPrepareLand; break; case CharacterView_Land: self tickLand; break; case

20、 CharacterView_Push: self tickPush; break; case CharacterView_Pushing: break; case CharacterView_EndPush: self tickEndPush; break; case CharacterView_Swing: case CharacterView_SwingRelease: self tickSwing; break; case CharacterView_Falling: self tickFalling; break; default: self stop; LOG(tick defau

21、lt called stop); break; self updatePosition:model x :model y; 本节的完整代码以上传至XX网盘下载:4结论 通过本案例,在学习iOS编程的基础上更进一步,我们看到了如何采用Box2D物理引擎进行对象建模,如何结合Box2D物理引擎和cocos2d库进行真实的商业iOS游戏开发,使用Box2D和cocos2d库,将极大地提高游戏开发的效率,cocos2d库和Box2D的成熟性可以帮助你只编写少量的代码即可实现游戏的各种功能,并且具有强大的灵活性和可扩展型。5考文献1 虞 斌.iOS软件开发揭秘iPhone&iPad企业应用和游戏开发(第2版),2012.2 James Sugrue.ios 5游戏开发.人民邮电出版社,2012.3 Shawn Welch.iOS5 Core Frameworks.人民邮电出版社,2012.4 John Ray.iOS 5应用开发。入门经典(SAMS).人民邮电出版社(第3版),2012.5 Steven Holzner.Objective-C 2.0编程快速上手.机械工业出版社,2010

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1