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循环的swift文档中的第一个示例。下面详细说明了代码在文档中的作用。 上面的例子使用一种非常简单的方法来进行骰子滚动。它不是生成一个随机数,而是以diceRoll值为0开始。每次通过while循环,diceRoll都会加1,然后检查它是否变得太大。每当此返回值等于7时,骰子滚动变得太大并重置为值1.结果是一系列diceRoll值始终为1,2,3,4,5,6,1,2和等等。
掷骰子后,玩家通过diceRoll方格向前移动。掷骰子可能已经将玩家移动到25以上,在这种情况下游戏结束了。为了应对这种情况,代码检查square是否小于board数组的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.
我想知道从我强调的最后一行解释。 board[square]
为当前square
值增加值是什么?与var square
数组相关的board
是什么?详细例子在这里。 link
答案 0 :(得分:0)
square
变量代表我们在25块正方形物理板上的位置。 board
数组仅表示物理板上的特定方块是否有梯子或其上有滑块。例如。 board[3]
是+8
,它有效地说“有一个方格3的梯子向我们推进另外8个方格到方形11”。
所以
的下标成员怎么样?var square
值square
与board
使用的var square
不同/我认为Array board
<{1}}
不,它们是相同的square
。所以让我们逐行逐步完成代码。考虑:
var square = 0
这只是声明有一个名为square
的变量代表我们在物理游戏板上的位置,其值从零开始(这意味着“游戏尚未开始”)。
因此,让我们按照代码中的逻辑进行操作。您的第一个diceRoll
将是1
。因此square
增加1
,最后为1
:
square += diceRoll
因此,此时square
为1
,有效地表示您的作品已移至实体游戏板的第一个方格。
然后我们检查board
数组以查看我们是否落在蛇或梯子上,但是因为board[1]
为零,这意味着我们没有,所以在这期间不需要发生任何其他事情骰子的作用。也就是说,这一行在我们的第一次迭代中最终没有做任何事情:
square += board[square]
好的,我们完成了while
循环的第一次迭代,所以我们再次循环,这次我们现在滚动diceRoll
2
,我们将其添加到{ {1}}再次:
square
所以square += diceRoll
现在是square
,表示我们现在是实体游戏板的方块3。所以我们现在再看一下3
数组,看看我们是否落在了蛇或梯子上:
board
这一次,square += board[square]
是board[3]
(即我们在3号广场的棋子降落在梯子上),所以我们现在将我们的棋子向前移动8个方块到11号方(即+8
现在是square
)。
答案 1 :(得分:0)
好的,不确定我是否有什么让你感到困惑,但我会尽可能简单地解释一下。
11
变量是square
,代表玩家登陆的字段。
integer
数组会保留board
个值,这些值将累加到上面integer
变量的值上。
square
数组中的大多数值都是零(除了选定的少数数组),每当玩家停在一个零值的字段时,什么都不会改变。 board
值保持不变。
但是,例如,如果玩家开始游戏并且我们有以下值:
square
玩家现在在11号场上。
在上面的评论中你提到过:
用于板的var square value和square是不同的/我想 怎样才能成为Array board的var square下标成员
同样,我不完全确定我理解你,但你不将变量本身作为下标成员传递,你传递变量的值。