如何为不同的游戏模式设置计时器?
How can I set a timer for different game modes?
我正在为 class 开发一款游戏,按下按钮时计时器为 运行。
-(void)setTimer{
self->mTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(buttonNotPushed) userInfo: nil repeats:NO];
}
-(void)resetTimer{
[self->mTimer invalidate];
self->mTimer = nil;
这里是定时器代码使用的片段。
- (IBAction)yellowDot1:(id)sender {
if ([_labelColor.text isEqualToString:@"Yellow"]) {
[ self Scoring];
[self label];
[self resetTimer];
[self setTimer];
}
else ([self GameOver]);
}
- (IBAction)redDot1:(id)sender {
if ([_labelColor.text isEqualToString:@"Red"]) {
[ self Scoring];
[self label];
[self resetTimer];
[self setTimer];
}
else ([self GameOver]);
}
游戏会显示一个播放按钮,该按钮会切换到下一个屏幕。目前在 5 秒,我想创建一个 "difficult" 模式,在主屏幕上,用户单击 "difficult" 按钮,游戏计时器改为在 2 秒运行。现在,我正在考虑复制我的情节提要和视图控制器,并按照这种方式将计时器设置为不同的时间间隔。困难模式的代码是否有更短的方法?
只需为此声明一个全局变量。使用保存模式的 class(可能是单例)并使用 -(float) getGameDuration;
方法
假设...
// GameHandler.h
static GameHandler *sharedInstance = nil;
@interface GameHandler : NSObject
{
GameMode *mode;
}
typedef enum{
GAMEMODE_EASY = 0,
GAMEMODE_NORMAL,
GAMEMODE_HARD
} GameMode;
-(float) getGameDuration;
实施
// GameHandler.m
+ (GameHandler *)sharedInstance // implement singleton
{};
-(float) getGameDuration
{
switch(mode)
{
case GAMEMODE_EASY:
return 10.f;
case GAMEMODE_NORMAL:
return 5.f;
case GAMEMODE_HARD:
return 2.f;
}
return 5.f;
}
// your other classes
float gameDurration = [[GameHandler sharedInstance] getGameDuration];
self->mTimer = [NSTimer scheduledTimerWithTimeInterval:gameDurration
target:self
selector:@selector(buttonNotPushed)
userInfo:nil
repeats:NO];
我正在为 class 开发一款游戏,按下按钮时计时器为 运行。
-(void)setTimer{
self->mTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(buttonNotPushed) userInfo: nil repeats:NO];
}
-(void)resetTimer{
[self->mTimer invalidate];
self->mTimer = nil;
这里是定时器代码使用的片段。
- (IBAction)yellowDot1:(id)sender {
if ([_labelColor.text isEqualToString:@"Yellow"]) {
[ self Scoring];
[self label];
[self resetTimer];
[self setTimer];
}
else ([self GameOver]);
}
- (IBAction)redDot1:(id)sender {
if ([_labelColor.text isEqualToString:@"Red"]) {
[ self Scoring];
[self label];
[self resetTimer];
[self setTimer];
}
else ([self GameOver]);
}
游戏会显示一个播放按钮,该按钮会切换到下一个屏幕。目前在 5 秒,我想创建一个 "difficult" 模式,在主屏幕上,用户单击 "difficult" 按钮,游戏计时器改为在 2 秒运行。现在,我正在考虑复制我的情节提要和视图控制器,并按照这种方式将计时器设置为不同的时间间隔。困难模式的代码是否有更短的方法?
只需为此声明一个全局变量。使用保存模式的 class(可能是单例)并使用 -(float) getGameDuration;
方法
假设...
// GameHandler.h
static GameHandler *sharedInstance = nil;
@interface GameHandler : NSObject
{
GameMode *mode;
}
typedef enum{
GAMEMODE_EASY = 0,
GAMEMODE_NORMAL,
GAMEMODE_HARD
} GameMode;
-(float) getGameDuration;
实施
// GameHandler.m
+ (GameHandler *)sharedInstance // implement singleton
{};
-(float) getGameDuration
{
switch(mode)
{
case GAMEMODE_EASY:
return 10.f;
case GAMEMODE_NORMAL:
return 5.f;
case GAMEMODE_HARD:
return 2.f;
}
return 5.f;
}
// your other classes
float gameDurration = [[GameHandler sharedInstance] getGameDuration];
self->mTimer = [NSTimer scheduledTimerWithTimeInterval:gameDurration
target:self
selector:@selector(buttonNotPushed)
userInfo:nil
repeats:NO];