26 タイルのボードでゲームをしています。プレーヤーは 1 から 12 までの数字をロールし、その数のタイルを移動します。これは、タイルの配列 (インデックス 0 ~ 25) を順番に持つことで行います。これは、プレイヤーをタイル間で移動させる私の方法です (これにはスプライト キットのコードが含まれており、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
をロールした5
場合、 index のタイルに移動する必要がありますが、代わりにプロパティ3
を作成するため、移動しません。私の質問は、この while ループをどのように変更すれば、数値をの代わりに移動する必要がある場合でも機能するようにするにはどうすればよいかということです。currentTileIndex
28
3
0
26