我有一個26塊瓷磚的遊戲。玩家在1到12之間擲出一個數字,然後玩家移動那麼多個牌。我通過按順序擁有一個數組(索引0-25)來實現這一點。這是我穿過的瓷磚移動播放器的方式(這包含從雪碧套件,這是我所知道的是保密協議的代碼,但問題是沒有的事情),此代碼是,如果iOS while循環回覆索引回零
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++;
}
問題球員在索引23
處的瓦片上並且滾動5
,他們應該去索引3
處的瓦片,但是它不會移動,因爲它將改爲使currentTileIndex
屬性28
而不是3
。我的問題是我該如何修改這個while循環,以便即使數字必須轉到0
而不是26
,它仍然可以工作?
我一直認爲如果loop if(condition){}。我不知道這是否有所作爲 – logixologist