我正在尝试使用swift 3与玩家和计算机进行一次tic tac toe游戏,我发现循环数组与其他语言完全不同。我试图选择等于0(可用)的位置(索引)。 gameState表示板上的空间从0到8(9个空格)作为0的数组。假设gameState看起来像游戏板位置:[1,2,1,0,0,0,0,0],那么我希望它检查下一个可用空间,即gameState [3]。
for (position,element) in gameState.enumerated() {
if gameState[element] == 0 && activeComp {
takeSpace = gameState[position] + 1
print("in gameState[element] is: ", gameState[element])
print("in place gameState[position] is: ", gameState[position], "game board positions :", gameState )
activeComp = false
}
print(position, element, gameState[element])
}
上述代码的输出类似于:
0 1 2
gameState [element]中的是:0 在位游戏状态[位置]是:2个游戏板位置:[1,2,0,0,0,0,0,0,0]
1 2 0
2 0 1
3 0 1
4 0 1
5 0 1
6 0 1
7 0 1
8 0 1
它正确地打印出位置和元素,但是一旦我想使用for循环获取gameState [element],就会打印出异类的东西。
答案 0 :(得分:0)
问题是您没有正确订阅数组。看起来你犯了一个拼写错误,并使用数组的值意外索引。所以,而不是:
for (position,element) in gameState.enumerated() {
if gameState[element] == 0 && activeComp {
你需要:
for (position,element) in gameState.enumerated() {
if gameState[position] == 0 && activeComp {
答案 1 :(得分:0)
更新:谢谢你@MartinR你是对的。我需要检查元素== 0并更新takeSpace = position + 1
我没有必要使用gameState[element]
而是我应该检查element == 0
本身是否已经gameState
已经循环。同样,当我更新我想要的可用空间时,我应该使用position + 1
而不是gameState[position] + 1