ios 如何让随机选择的SKSpriteNodes的两个单独网格在另一个网格中始终有一个匹配的精灵节点?

qvk1mo1f  于 2023-06-07  发布在  iOS
关注(0)|答案(1)|浏览(100)

我目前正在开发一个Sprite Kit中的匹配纸牌游戏,我正在创建一个3x 3网格,左边是一组随机选择的纸牌,右边是一组随机选择的纸牌。
我们的想法是,左边网格上的每一张牌都应该在右边网格上有一张匹配的牌。注意右边的一组卡片,虽然匹配实际上是不同的精灵节点;左边的卡片显示图像,右边的卡片显示相应的字母。
我创建了一个像这样的网格(请原谅变量名,它是一个音乐相关的游戏):
创建一个卡片网格:

for (j = 0; j < 3; j++)
{
    for (i = 0; i < 3; i ++)
    {
        int randomCard = arc4random_uniform(8);
        switch (randomCard)
        {
            case CardC:
                staveCard = [SKSpriteNode spriteNodeWithImageNamed:@"Card_C"];
                staveCard.name = @"0";
                break;
            case CardD:
                staveCard = [SKSpriteNode spriteNodeWithImageNamed:@"Card_D"];
                staveCard.name = @"1";
                break;
            case CardE:
                staveCard = [SKSpriteNode spriteNodeWithImageNamed:@"Card_E"];
                staveCard.name= @"2";
                break;
            case CardF:
                staveCard = [SKSpriteNode spriteNodeWithImageNamed:@"Card_F"];
                staveCard.name = @"3";
                break;
            case CardG:
                staveCard = [SKSpriteNode spriteNodeWithImageNamed:@"Card_G"];
                staveCard.name = @"4";
                break;
            case CardA:
                staveCard = [SKSpriteNode spriteNodeWithImageNamed:@"Card_A"];
                staveCard.name = @"5";
                break;
            case CardB:
                staveCard = [SKSpriteNode spriteNodeWithImageNamed:@"Card_B"];
                staveCard.name = @"6";
                break;
            case CardC2:
                staveCard = [SKSpriteNode spriteNodeWithImageNamed:@"Card_C2"];
                staveCard.name = @"7";
                break;
        }

        grid[j*3+i] = randomCard; // store the stave cards in the grid

        staveCard.xScale = 0.5;
        staveCard.yScale = 0.5;

        staveCard.position = CGPointMake(((i*xGridSize)+120),((j*yGridSize)+120));
        [self addChild:staveCard];
    }

我用另一组SKSpriteNodes对另一个网格做同样的事情。
很明显,当我运行这个应用程序时,随机卡片的选择是成功的,但是右边网格中的卡片并不总是与左边的卡片相对应;即不是每张卡总是具有匹配对。
我的问题是:我怎样才能确保左边格子里的牌在右边格子里总是有一张对应的、匹配的牌呢?

50few1ms

50few1ms1#

在做左牌的同时做右牌。
如果你不想让他们有相同的位置,你可以很容易地随机选择正确的位置。

相关问题