Swift流程控制之循环语句和判断语句详解

2020-01-08 22:46:07王振洲

    default:
        // this is a valid move, so find out its effect
        square += diceRoll
        square += board[square]
    }
}
println("Game over!")

 

骰子在每个循环的最开始摇动。然后玩家立即移动,switch语句用来判断移动的结果,算出是否允许移动:

如果骰子带玩家抵达最后的方块,游戏结束。break gameLoop语句将控制流带到游戏结束的地方,即while循环外的第一行。
如果骰子超过了最后的方块,则移动无效,玩家需要再次投骰。break gameLoop会终止本次迭代,开始下次迭代。
在其他的情况下,骰子有效。玩家向前移动方块并根据游戏逻辑检查蛇或梯子。循环结束,控制流返回到while条件判断处,决定是否需要再次迭代。

NOTE 如果上面的break语句不使用gameLoop标签,将会中断switch语句,而不是while语句。使用gameLoop标签可以更加明确的让控制流终止。

同样要注意,当调用continue gameLoop来跳到下一个迭代循环中不是必须使用gameLoop标签。因为这里只有一个循环体,不会受到其他循环体的影响。然而,用了gameLoop标签也没什么不好。这样做保持与break旁边的标签统一,有助于让游戏逻辑能更加清晰阅读和理解。



注:相关教程知识阅读请移步到swift教程频道。