我有一个带有 26 块棋盘的游戏。玩家掷出 1 到 12 之间的数字,然后玩家移动那么多的牌。我通过按顺序排列一个瓷砖数组(索引 0-25)来做到这一点。这是我在瓷砖上移动玩家的方式(这包含来自 Sprite Kit 的代码,我知道它在 NDA 下,但问题不在于那个)
NSInteger rolled_number = arc4random() % 12;
while (rolled_number == 0)
rolled_number = arc4random() % 12;
NSLog(@"%d", rolled_number);
NSInteger new_index = self.player1.currentTileIndex + rolled_number;
if (!(new_index <= 25))
new_index = new_index - 26;
NSMutableArray *actions = [NSMutableArray array];
while (self.player1.currentTileIndex < new_index) {
SKSpriteNode *node = [_tiles objectAtIndex:self.player1.currentTileIndex];
SKAction *move = [SKAction moveTo:node.position duration:1];
[actions addObject:move];
NSLog(@"currentTileIndex: %d", self.player1.currentTileIndex);
if (self.player1.currentTileIndex + 1 > 25)
self.player1.currentTileIndex -= 26;
else
self.player1.currentTileIndex++;
}
这段代码的问题是,如果玩家在 index 处的瓷砖上23
并滚动 a 5
,他们应该前往 index 处的瓷砖3
,但它不会移动,因为它将改为生成currentTileIndex
属性28
而不是3
. 我的问题是如何修改这个while循环,以便即使数字必须转到0
而不是它仍然可以工作26
?