前面已经给出了游戏界面的布局文件,该布局文件需要使用一个视图控制器来负责显示。除此之外,视图控制器还需要为游戏界面的按钮事件提供事件监听器。

下面是该程序的视图控制器类的代码。

程序清单:codes/13/Link/Link/FKViewController.m

该视图控制器在viewDidLoad方法中创建了FKGameView和FKGameService对象,其中FKGameView负责绘制游戏界面,而FKGameService则负责维护游戏的状态数据和游戏的业务逻辑功能,程序将FKGameService设置为FKGameView的一个属性,这样即可让FKGameView通过该FKGameService对象来绘制程序界面。

由于FKGameView需要调用FKViewController的方法来判断输赢,因此,程序先在FKGameView中定义了一个FKGameViewDelegate协议,然后FKViewController实现该协议,并将自身设置成FKGameView的委托对象。

除此之外,该程序为了控制时间流逝,定义了一个计时器,该计时器每隔1秒触发一次,程序将会根据该触发器减少游戏的剩余时间。上面的程序中,startGame方法内的粗体字代码负责启动计时器。

——————本文节选自《疯狂ios讲义(上)》

疯狂ios讲义疯狂连载之实现游戏视图控制器相关推荐

  1. 疯狂ios讲义疯狂连载之游戏的状态数据模型

    对游戏玩家而言在游戏界面上看到的"元素"千差万别.变化多端但对游戏开发者而言游戏界面上的元素在底层都是一些数据不同的数据所绘制的图片有所不同.因此建立游戏的状态数据模型是实现游戏逻 ...

  2. 疯狂ios讲义疯狂连载之实现游戏逻辑(2)

    13.6.5 定义获取通道的工具方法 这里所谓的通道指的是一个方块上.下.左.右4个方向上的空白方块图13.10显示了一个方块四周的通道. 图13.10 方块四周的通道 下面是获取某个坐标点四周通道的 ...

  3. 疯狂ios讲义疯狂连载之显示动画

    UIImage专门用于显示各种位图该类支持表12.1所示的各种图片格式. 当系统内存紧张时UIImage会将图片数据从UIImage对象中清理出去来以节省系统内存这里的清理行为只是清理UIImage内 ...

  4. 疯狂ios讲义疯狂连载之加载界面的图片

    正如前面FKBaseBoard类的代码中所看到的,当程序需要创建N个FKPiece对象时,程序会直接调用getPlayImages()函数去获取图片,该函数将会随机从项目包下取得N张图片. 为了让ge ...

  5. 疯狂ios讲义疯狂连载之日期选择器(UIDatePicker)

    UIDatePicker是一个可以用来选择日期和时间的控件.除此之外,它也可作为倒计时控件. 日期选择器(UIDatePicker)继承了UIControl,因此UIDatePicker可以作为活动控 ...

  6. 疯狂ios讲义之疯狂连连看游戏简介

    <连连看>是一款广受玩家欢迎的小游戏,它具有玩法简单.耗时少等特征,尤其适合广大白领女性在办公室里休闲娱乐.图13.1显示了该游戏的游戏界面. 从图13.1可以看出,在<连连看> ...

  7. 疯狂iOS 讲义(上) Objective-C 2.0与iPhone/iPad应用开发基础(国内首部iOS 7相关著作,小伙伴们,学好iPhone/iPad应用开发,我们一起做土豪吧)

    疯狂iOS 讲义(上) Objective-C 2.0与iPhone/iPad应用开发基础(国内首部iOS 7相关著作,小伙伴们,学好iPhone/iPad应用开发,我们一起做土豪吧) 李刚 编 IS ...

  8. 疯狂iOS 讲义(上) Objective-C 2.0与iPhone/iPad应用开发基础

    疯狂iOS 讲义(上)Objective-C 2.0与iPhone/iPad应用开发基础(国内首部iOS 7相关著作,小伙伴们,学好iPhone/iPad应用开发,我们一起做土豪吧) 李刚编 ISBN ...

  9. 疯狂ios讲义之网页控件(UIWebView)

    通过使用UIWebView控件,可以实现一个内置的浏览器(类似于Safari),而且可以直接将这个浏览器内嵌到应用的任意位置,因此非常方便. UIWebView直接继承了UIView基类,一般不可以与 ...

最新文章

  1. 16个概念带你入门 Kubernetes
  2. Caffe实践】如何利用Caffe训练ImageNet分类网络
  3. 基础提供程序在 Open 上失败
  4. MongoDB搭建和简单操作(windows环境)
  5. 掩码 项目编码_每天进行20天的编码项目
  6. 工作323:uni-获取时间参数
  7. dba_segments和dba_tables的不同
  8. python gui 自动化_python GUI测试自动化
  9. java中为什么需要常量和变量的区别_Java中常量和最终变量之间的区别?
  10. 自己实现java I/O中的BufferedReader对象中的raedLine方法
  11. 导流阀行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  12. 使用Connector/C++操作MySQL
  13. eclipse订制快捷键
  14. 《UNIXLinux程序设计教程》一1.3 UNIX基本概念
  15. java xsd解析_java dom4j解析XSD文件
  16. 图书管理 python excel_爬取python异步社区图书并写入excel
  17. Autodesk 3DMax2023下载安装教程
  18. 个人支付方案(免签约)-支付宝当面付
  19. 二阶低通滤波器IIR的五个参数推导过程
  20. 下载eclipse linux32位软件安装包怎么那么难

热门文章

  1. springSecurity源码分析——DelegatingFilterProxy类的作用
  2. 使用 CORBA 和 Java IDL
  3. HTML中行内元素与块级元素的区别
  4. 第一节:数据库与数据仓库
  5. 用base64方法进行加密、解密:
  6. PXE+kickstart自动安装ubuntu14.04
  7. 十天精通CSS3(4)
  8. Java中的24种设计模式与7大原则
  9. brew 更换国内源(镜像)
  10. Android ListView侧滑item,仿QQ删除效果