0

我已经实现了一个游戏,在所有生命的尽头,游戏都结束了。所以我必须在这一点暂停场景,然后我必须实现标签 Game Over (Done)、点和允许重新开始游戏的按钮。现在,当游戏结束时,我得到了游戏结束标签和新开始游戏的叠加!我想在比赛结束和得分的情况下暂停比赛。

这是我的代码:

-(void)gameOver:(int)value punteggio:(id)punti{
    if (value == 1) {
        // partita vinta
    } else if (value == 2) {
        if (life > 1) { // 1
            life = life - 1;
            for (CCSprite *spr in spriteLifeArray) {
                if (life == spr.tag) {
                    [self removeChild:spr cleanup:YES];
                }
            }
        } else { 
            //  partita persa
            Gameover = [CCLabelTTF labelWithString:@"Game Over!" fontName:@"Marker Felt" fontSize:34];
            [Gameover setColor:ccc3(255, 1, 1)];
            Gameover.position = ccp(size.width / 2, size.height / 2);
            [self addChild:Gameover];
            //blinking
            id action1 = [CCBlink actionWithDuration:0.3 blinks:5];
            [Gameover runAction: action1];
            [[CCDirector sharedDirector] pause];
        }
    }
}

我该如何解决?我怎样才能让这个按钮在暂停的场景中重新开始游戏?谢谢你

4

2 回答 2

1

你可以这样做:

使用 CCMenuItemLabel 创建一个简单的 CCMenu。

      CCMenuItemLabel *gameOver = [CCMenuItemLabel itemWithLabel:@"Game Over!" target:self selector:@selector(restart:)];
      CCMenu *menu = [CCMenu menuWithItems:gameOver, nil];
      [self addChild:menu z:(Something bigger than all others so that it shows up on top)];

然后在你的重启方法中:

    -(void) restart:(id)sender{
          menu.visible = NO;
          //code to restart your game;
    }

希望这可以帮助。

于 2013-02-13T05:24:45.360 回答
1

我已经解决了创建一个名为 GameOVer 并重新启动函数的节点。在 GameOver 实现中,我编写了一个重新启动的函数

-(void) restart {    
    [[CCDirector sharedDirector] replaceScene:[HelloWorldLayer node]];
}

我已将此函数链接到 GameOver 层中的标签:

CCMenuItemLabel *back = [CCMenuItemLabel itemWithLabel:label2  target:self selector:@selector(restart)];

最后我在主层连接,如果lives==0这段代码

[[CCDirector sharedDirector] replaceScene:[GameOver node]];

并且一切正常!:)

于 2013-02-14T12:05:11.363 回答