1 / 33

iPhone 系统 应用与开发

iPhone 系统 应用与开发. -- 制作 iPhone 游戏菜单. 李云玮. 回顾. -- 如何使用 UIView ? -- 如何理解 Objective-C 语言的内存机制?. 教学分析. 上节课我们学习了 objective-C 语言及它的内存机制,学习了 UIView 的使用方法,同时还建立了类文件。这节课我们在建立的类文件的基础上建立游戏的各个角色类。 学生分小组讨论并回答. 新任务介绍. 制作游戏角色基类 制作游戏主角类 制作游戏其他角色类. 任务目标. 知识准备. 如何建立角色基类? 以小组形式收集信息学习讨论. 任务实施.

Download Presentation

iPhone 系统 应用与开发

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. iPhone系统 应用与开发 -- 制作iPhone游戏菜单 李云玮

  2. 回顾 --如何使用UIView? --如何理解Objective-C语言的内存机制?

  3. 教学分析 上节课我们学习了objective-C语言及它的内存机制,学习了UIView的使用方法,同时还建立了类文件。这节课我们在建立的类文件的基础上建立游戏的各个角色类。 学生分小组讨论并回答

  4. 新任务介绍 制作游戏角色基类 制作游戏主角类 制作游戏其他角色类

  5. 任务目标

  6. 知识准备 如何建立角色基类? 以小组形式收集信息学习讨论

  7. 任务实施 -- 制作iPhone游戏菜单

  8. 单元二 搭建游戏所必须的各个页的类

  9. 制作游戏主角类

  10. HeroView类介绍 实现了游戏主角的移动: 根据自身的x_speed,y_speed进行移动。 - (void)move { float newX=self.center.x; float newY=self.center.y; self.center=CGPointMake(newX,newY); }

  11. HeroView类介绍 并实现了死亡后的动画效果,原地变小。使用函数 CGAffineTransformScale(CGAffineTransformMakeRotation(0),1/1000.0,1/1000.0); 来使得自身变为原始大小的千分之一。

  12. HeroView类介绍 并通过[UIView setAnimationDidStopSelector: @selector(doAfterHideAndBecomeSmall)]; 设置动画效果结束后调用的函数doAfterHideAndBecomeSmall。 这样主角消失后,就会运行doAfterHeroHide函数。

  13. 建立HeroView类 1.建立文件,命名为HeroView,修改父类为BasicRoleView 2.分析小球运动行为:开始游戏后,小球开始移动(move),碰到砖块小球回退(moveback),碰到黑洞(敌人)小球变小消失(hideAndBecomeSmall),小球消失后判断如果命数小于1,执行游戏结束的操作,如果命数不小于1,重置小球的大小位置透明度等变量(resetSizePositionAndAlpha)重新开始游戏。 3.声明此4个方法

  14. 建立HeroView类 3.同时,小球消失后,需运行doAfterHideAndBecomeSmall函数来执行小球消失后的动作。我们可以把该函数设置为代理函数。

  15. 建立宏定义文件 1.建立Group,命名BasicSupport; 2.建立文件,继承自NSObject,命名为CONSTANT.m,保留CONSTANT.h,删除CONSTANT.m,建立游戏中的宏定义。 3.建立文件,继承自NSObject,命名为BasicFunctions.m,建立游戏中保存和计算的类函数。

  16. 宏定义 #define WidthAndHeighOfRect 20 //砖块的长宽,游戏中每一格的大小 #define SCREEN_WIDTH 320 //屏幕宽 #define SCREEN_HEIGHT 480 //屏幕高 #define AnimationHeroHideAndBecomeSmallTime 2.0 //小球变小并消失的动画持续时间

  17. 小球运动函数的实现 使用UIImage作为参数,进行初始化 根据当前速度进行移动 回退 小球隐藏并且变小 重置小球的大小位置透明度等变量 隐藏并且变小的动画结束时的回调函数

  18. 定义协议 小球(游戏主角)的协议,包含了doAfterHeroHide函数。 @protocol HeroViewDelegate //小球消失后的回调函数 - (void)doAfterHeroHide; @end

  19. 定义代理对象 @interface HeroView : BasicRoleView { //定义代理对象,可以理解位id<协议名称>是代理对象的固有写法 id<HeroViewDelegate> delegate; } //将代理对象设置为属性 @property(nonatomic,assign) id<HeroViewDelegate> delegate;

  20. 执行协议 在GameViewController.h中: #import “HeroView.h” @Interface GameViewController:UIViewController <HeroViewDelegate>{} 在GameViewController.m中实现HeroViewDelegate协议的方法doAfterHeroHide: -(void)doAfterHeroHide{ 具体请参见代码 }

  21. 制作游戏其他角色类

  22. RectView类介绍 游戏中的砖块。实现了判断与主角相撞的函数。

  23. 建立砖块类RectView 1.建立文件,继承自UIView,命名为RectView,修改父类为BasicRoleView。 2.分析一下砖块在游戏过程中有哪些操作:游戏中砖块是静止不动的,而且它的子类终点和黑洞也是静止不动的,但小球是运动的,需要获取小球的位置判断是否与砖块、终点、黑洞等相撞,以做出相撞后的反应。首先通过自身的self.delegate,即GameViewController类中的getHeroPosition函数,获取主角的坐标。然后根据自身位置,判断是否与主角相撞,将结果返回。

  24. 实现砖块类函数 • 使用UIImage作为参数,进行初始化

  25. 定义协议 砖块的协议,包含了获取小球坐标getHeroPosition的函数。 @protocol RectViewDelegate -(CGPoint)getHeroPosition; @end

  26. 定义代理对象 @interface HeroView : BasicRoleView { //定义代理对象,可以理解位id<协议名称>是代理对象的固有写法 id<RectViewDelegate> delegate; } //将代理对象设置为属性 @property(nonatomic,assign) id<RectViewDelegate> delegate;

  27. 执行协议 在GameViewController.h中: #import “HeroView.h” @Interface GameViewController:UIViewController <HeroViewDelegate ,RectViewDelegate>{} 在GameViewController.m中实现RectViewDelegate协议的方法getHeroPosition: -(CGPoint)getHeroPosition{ //待完成 }

  28. 终点类介绍 • GoalView类:继承自RectView,用于实例化终点对象。

  29. 建立终点类 1.建立文件,继承自UIView,命名为GoalView,修改父类为RectView。 2.使用UIImage作为参数,进行初始化

  30. 黑洞类介绍 EnemyView类:继承自RectView,用于实例化黑洞对象。

  31. 建立黑洞类 1.建立文件,继承自UIView,命名为EnemyView,修改父类为RectView。 2.使用UIImage作为参数,进行初始化

  32. 拓展任务 仿照学过的内容,独立设计一款游戏,建立出游戏中所需的各种角色类

More Related