1

我正在制作一款棋盘游戏,当一个人获胜时,我希望棋盘自行重置。如果有帮助,我正在为 iPhone 使用 cocos2d。我有一个重置方法,可以重置所有变量和数组。它会重置一次,然后在一个人获胜后的下一次它不会重置董事会。有想法该怎么解决这个吗?这是 .m 文件中的方法。//方法

-(void) resetGame {
self.isTouchEnabled = YES;

if( (self=[super init]) ) {


    self.isTouchEnabled = YES;

    turn = 2;

    pieces = [[NSMutableArray alloc] initWithObjects:
              [[Piece alloc] pieceWithType:1 player:1 row:1 col:3],    // bSphere1
              [[Piece alloc] pieceWithType:1 player:1 row:2 col:3],    // bSphere2
              [[Piece alloc] pieceWithType:2 player:1 row:1 col:2],    // bSquare1
              [[Piece alloc] pieceWithType:2 player:1 row:3 col:3],    // bSquare2
              [[Piece alloc] pieceWithType:2 player:1 row:0 col:3],    // bSquare3
              [[Piece alloc] pieceWithType:1 player:2 row:0 col:4],    // wSphere1
              [[Piece alloc] pieceWithType:1 player:2 row:2 col:4],    // wSphere2
              [[Piece alloc] pieceWithType:2 player:2 row:1 col:4],    // wSquare1
              [[Piece alloc] pieceWithType:2 player:2 row:3 col:4],    // wSquare2
              [[Piece alloc] pieceWithType:2 player:2 row:2 col:5],    // wSquare3
              nil];

    // add background before pieces
    CCSprite *bg = [CCSprite spriteWithFile:@"grid.png"];
    [bg setPosition:ccp(240, 160)];
    [self addChild:bg z:0];

    // add all the pieces
    for(Piece *piece in pieces) {
        [self addChild:piece];
    }

}

}
4

1 回答 1

0

如果您要使用该层/CCScene 超过 1 轮(它不会被另一个中间 CCScene 代替,例如菜单),那么您应该尝试在 init 函数之外添加/删除精灵

你可以做类似的事情

- (void)resetLevel: {

//remove old children
[this removeAllChildrenWithCleanup:YES];

//Add new children
pieces = [[NSMutableArray alloc] initWithObjects:
     [[Piece alloc] pieceWithType:1 player:1 row:1 col:3],    // bSphere1
     .......
     nil];

    // add background before pieces
    CCSprite *bg = [CCSprite spriteWithFile:@"grid.png"];
    [bg setPosition:ccp(240, 160)];
[self addChild:bg z:0];

    // add all the pieces
    for(Piece *piece in pieces) {
       [self addChild:piece];
    }

}

代码未经测试,您可能需要进行一些更改

您还应该避免保留 NsMutableArray 和 Piece 实例分配 (alloc),因为您必须做额外的工作才能释放它们。您的图层通过添加它们来保留它们

于 2012-08-13T21:19:48.993 回答