let finalSquare = 25
var board = [Int](repeating: 0, count: finalSquare + 1)
board[03] = +08; board[06] = +11; board[09] = +09; board[10] = +02
board[14] = -10; board[19] = -11; board[22] = -02; board[24] = -08
var square = 0
var diceRoll = 0
while square < finalSquare {
// roll the dice
diceRoll += 1
if diceRoll == 7 { diceRoll = 1 }
// move by the rolled amount
square += diceRoll
if square < board.count {
// if we're still on the board, move up or down for a snake or a
ladder
square += board[square]
}
}
print("Game over!")
これは、whileループの迅速なドキュメントの最初の例です。以下に、ドキュメンテーションのようにコードが何をしているかを説明します。 上記の例では、ダイスローリングに非常に簡単な方法を使用しています。乱数を生成するのではなく、diceRollの値が0で始まります。whileループを繰り返すたびに、diceRollが1だけインクリメントされ、それが大きくなりすぎたかどうかが確認されます。この戻り値が7に等しいときはいつでも、ダイスロールは大きすぎて1の値にリセットされます。結果は、常に1,2,3,4,5,6,1,2,3のdiceRoll値のシーケンスです。そうです。Whileループの例Swiftのマニュアル
ダイスを転がした後、プレーヤーはdiceRollスクエアで前方に移動します。サイコロがプレイヤーを正方形25を超えて移動させた可能性があります。その場合、ゲームは終了します。このシナリオに対処するために、コードはsquareがボード配列のcountプロパティより小さいことを確認します。 If square is valid, the value stored in board[square] is added to the current square value to move the player up or down any ladders or snakes.
私が強調している最後の行の説明からそれを知りたい。現在square
の値に値を追加しているのはboard[square]
なのですか? board
に関連するvar square
はありますか?詳細な例はこちら。 link
'square'は、' board'配列から特定の要素を取り出すためのインデックスです。 –
@DávidPásztor 'board 'に使われている' var square 'の値と' square'は違う/ 'Array board 'の' var square' – Tanzz