我目前正在开发一个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对另一个网格做同样的事情。
很明显,当我运行这个应用程序时,随机卡片的选择是成功的,但是右边网格中的卡片并不总是与左边的卡片相对应;即不是每张卡总是具有匹配对。
我的问题是:我怎样才能确保左边格子里的牌在右边格子里总是有一张对应的、匹配的牌呢?
1条答案
按热度按时间50few1ms1#
在做左牌的同时做右牌。
如果你不想让他们有相同的位置,你可以很容易地随机选择正确的位置。