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

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

 

二、While Loops - While循环

while循环在条件变为false前执行一组语句,这类循环最好用在第一个迭代开始前并不知道迭代器的数字的时候。Swift提供了两种while循环:

1.while 在每次通过循环的开头计算条件
2.do-while 在每次通过循环的结尾计算条件

while循环

一个while循环开始于计算单个的条件,如果条件为true,一组语句将重复直到条件变为false。

这是常见的while形式:

复制代码
while <condition> {
    <statements>
}

 

比如,玩这个叫Snakes and Ladders的游戏(或Chutes and Ladders):

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

游戏的规则是这样的:

1.板子上有25个矩形,然后目标是到达或超越25号方块。
2.每一轮,你先摇六面骰子,然后按照水平方向的虚线箭头移动到对应数字的方块上。
3.如果走完落在梯子的底部,你可以爬上梯子。
4.如果走完落在蛇的头部,你可以走到那条蛇的尾部。

这个游戏板由一个Int型数组展示出来。它的大小基于finalSquare常量,该常量用来初始化数组并在之后检查胜利条件。游戏板初始化为26个值为0的Int型数据,不是25个(分别位于0至25的索引):

复制代码
let finalSquare = 25
var board = Int
一些方块给蛇与梯子设有具体的值。游戏板里,你能在有方块有梯子脚的地方向上移动正数,而有蛇头的地方你只能向下移动负数:
复制代码
board[03] = +08; board[06] = +11; board[09] = +09; board[10] = +02
board[14] = -10; board[19] = -11; board[22] = -02; board[24] = -08
方块3有梯子脚,所以你可以移动到方块11。为了表述这个动作,board[03]等于+08,等同于一个整型数值8(即3和11的差)。一元运算符加运算符(+i)与一元减运算符(-i)相平衡,如果数值小于10就用0替代,这样所板上的定义就对齐了。(风格调整不是必须的,但代码简洁很有必要)