如何为不同的游戏模式设置计时器?

时间:2015-03-04 11:37:51

标签: ios timer xcode6

我正在为类开发游戏,当按下按钮时会运行计时器。

-(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秒钟,我想创建一个“困难”模式,在主屏幕上,用户点击“困难”按钮,游戏的计时器在2秒运行。现在,我正在考虑复制我的故事板和查看控制器,并采用这种方式,我只是使计时器不同的间隔。通过困难模式的代码是否可以采用更短的方式?

1 个答案:

答案 0 :(得分:0)

只需为此声明一个全局变量。使用保存模式的类(可能是单例)并使用-(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];