(NO.00001)iOS游戏SpeedBoy Lite成形记(四)
下面我们来实现选手从起点开始移动到终点的代码.
首先在GameScene.h接口中添加matchRun方法:
#import "CCNode.h"
@interface GameScene : CCNode
-(void)matchRun;
@end
因为GameScene中覆盖了GameInterface交互层,里面有一个run按钮.这个按钮的功能肯定不是由GameInterface类来完成,最终需要调用GameScene中的matchRun方法.
在Xcode中新建GameInterface类,继承自CCNode.在其实现文件中加入以下代码:
#import "GameInterface.h"
#import "GameScene.h"
@implementation GameInterface{
GameScene *_gameScene;
}
-(void)didLoadFromCCB{
_gameScene = (GameScene *)self.parent;
}
-(void)run{
[_gameScene matchRun];
}
@end
这样用户点击run后,就会执行GameScene中的matchRun方法.
接下来回到GameScene中,在完成该方法之前,我们还需要一些实例变量,所以先建立它们:
@implementation GameScene{
CCNode *_track;
NSMutableArray *_players;
BOOL _matching;
NSInteger _finishedCount;
NSTimeInterval _bestElapsedTime;
}
其中_track是赛场背景的引用,我们需要将玩家加入到_track而不是GameScene中,这样新加入的大头贴不会将run按钮遮挡.(参考之前初始化玩家的代码).
_players是所有玩家的数组,前面初始化中创建的玩家需要加入其中.
对于一场比赛是否完成需要有一个变量标示,否则会打断正在进行中的比赛,_matching就是这个作用.
_finishedCount是个重要的变量,用来确定每个选手最终的名次.
最后一个变量_bestElapsedTime,顾名思义是比赛中选手的最好成绩,将来可以用来记录最好成绩榜,这个以后再说,现在先不管.
在GameScene.m中实现以下方法:
-(void)matchReset{
if (!_matching) {
[self initPlayPositon];
_bestElapsedTime = 0;
}
}
在每次比赛新开始前调用,用来初始化选手在赛车上的位置以及其他与比赛相关的参数.
别忘了还要在GameScene的初始化方法中初始化其ivar:
-(instancetype)init{
self = [super init];
if (self) {
_players = [NSMutableArray array];
}
return self;
}
好了,准备工作基本就绪,可以着手实现matchRun方法了 ;)
(NO.00001)iOS游戏SpeedBoy Lite成形记(四)的更多相关文章
- (NO.00001)iOS游戏SpeedBoy Lite成形记(一)
这是本猫第一个原创iOS游戏,留此为证!看编号貌似要写9万多个,千锤百炼还是太少吧!? ;) 这是一个赛跑游戏,几位选手从起点跑到终点看谁用的时间最少.现在需要实现的功能是: 1.8位选手从起点移动至 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(三十):增加排行榜功能3
在这个例子中,我们的显示代码只需要选手的名字以及对应的成绩.根据选手名字取对应的成绩可以用前面实现的playerRecord:方法,我们只需要将按照成绩排序后的选手名字返回就可以了. 我只需要再实现一 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十一)
之前的10篇内容主要实现了选手从起点移动至终点的动作,比较随机的模拟了选手的速度变化,另外完成了选手到达终点时该做的事情. 接下来的几篇中我们进一步完善SpeedBoy Lite项目,使它真正成为一个 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十三)
游戏特效部分就先这样了,因为毕竟是Lite版本,而且是第一个App,所以咱们把主要精力放在游戏可玩逻辑上吧(虽然已经厚颜无耻的加了不少特效了). 说句题外话:游戏美工是独立开发者不可逾越的鸿沟,是无法 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十八):增加排行榜功能
游戏大体上基本也就完成了,还差一个排行榜.否则如何激励各位选手创造新纪录呢? 排行榜功能也没什么难的,不过需要一点点排序的算法上的考虑. 这里我们把排行榜记录数据和排序都放在GameState类中,在 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十七)
切换回Xcode,在GameScene.m中添加新的实例变量:_winLayer. 接下来在第一个选手到达终点时,我们可以完成选手胜利的动画特效了. 首先,在GameScene.m中添加一个新方法pl ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十四)
我们回到Xcode,打开GameScene.m,首先要添加实例变量: CCNode *_trackLine; 为了根据选中的赛道更新_trackLine的位置,我们添加一个显示方法: -(void)s ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十三)
现在还有一个视觉上的问题:玩家每次在游戏开始前选择某一赛道时,无法直观的看到所选的是哪条赛道.只能通过界面上方的gambleLabel中的文字非直观的看到.我们现在来完善它! 为了能让玩家清楚地看到, ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十二)
自己的游戏自己更需要多玩,这样才能首先发现不足的地方.所以本猫到现在已经忍一个地方很久了,就是弹出moneyLayer后每次都要输入数字才能关闭,这多少让人不爽.于是本篇我们就修正这个小小的不便. 首 ...
随机推荐
- 剑指架构师系列-ActiveMQ队列的使用
安装ActiveMQ只需要下载包后解压,然后就可以启动与关闭ActiveMQ了,如下: ./activemq start ./activemq stop 访问管理页面: http://10.10.20 ...
- 数据结构Java版之交换算法(一)
交换的本质是拷贝,其中拷贝包括两种方式.值拷贝和指针拷贝,在java中没有指针,为此,我们可以理解为地址拷贝,在我看来,指针就是地址. 1.传值方式示例: 由上述示例可得,传值,不能起到交换的作用,原 ...
- Python 制作Android开发 所需的适配不同分辨率的套图
使用Python做起工具来还真是爽,简单,方便,快捷.今天忙活了一下,制作出一个比较实用的小工具. 自动化套图制作,适配不同屏幕 尤其是对于android开发来说,要适配不同屏幕就需要多套切图,那么. ...
- linux中probe函数传递参数的寻找(下)
点击打开链接 linux中probe函数传递参数的寻找(下) 通过追寻driver的脚步,我们有了努力的方向:只有找到spi_bus_type的填充device即可,下面该从device去打通,当两个 ...
- python 反人类函数式编程模拟while和if控制流
比如下面这个简单明了的命令式程序,它不断捕捉用户输入的内容,然后对其求和.直到用户输入一个以'0'开头的字符串,停止捕捉. while 1: line = input() ': print(sum(m ...
- [django] 利用多线程增加异步任务
看到django异步大家的反应应该是celery这种消息队列组件,现在用的最多的最推荐的也是这种方式.然而我这需求就是请求来了,执行一个小程序,但是又不能确定这个小程序啥时候执行完,响应又要及时,丢给 ...
- React Native实现一个自定义模块
概述 在 前期介绍React Native 项目结构的时候,我们讲解过React的项目组成,其中说过 node_modules 文件夹,这是一个存放 node 模块的地方.我们知道React是用npm ...
- ROS_Kinetic_26 使用rosserial_windows实现windows与ROS master发送与接收消息
使用rosserial_windows实现windows与ROS master发送与接收消息(适用版本hydro,indigo,jade,kinetic) 官方wiki地址汇总请参考:http://b ...
- [ExtJS5学习笔记]第十四节 Extjs5中data数据源store和datapanel学习
本文地址:http://blog.csdn.net/sushengmiyan/article/details/39031383 sencha官方API:http://docs.sencha.com/e ...
- 应付模块的R12 TRACE 和 FND Debug 文件 / FND 日志 调试
取得R12 TRACE: 1. 导航职责: 系统管理员> 配置文件> 系统> 查找 用户: 用户提交报表 配置: 初始化 SQL 语句 - 自定义 2. 点击用户栏位-编辑区域 ...