解答例
var gemCounter = 0
while gemCounter < 7 {
if isOnGem {
collectGem()
gemCounter = gemCounter + 1
}
if isBlocked {
turnRight()
turnRight()
}
moveForward()
}
解説
『比較演算子』が出てきました。
以下の説明があります。
2つの値を比較するための記号(==、!=、<、>、<=、>=など)。if文やwhileループの条件として、比較の結果がブール値のtrue(真)であるかどうかを調べるためによく使われます。たとえば、6 > 8 では、6と8が比較されて、false(偽)が返されます。
上記の演算子を使って、値を比較し、大小または同じかどうかなどを確かめます。
それが合っていれば、true。違っていればfalseという風にブール値で判断されます。
ステージをクリアするには、7個の宝石を全て集めた後false(偽)を返すブール条件つきのwhileループを使う必要があります。
つまり、7個集めるまではtrue、8個目の作業に移る前にストップしなければなりません。
0 < 7 trueなので実行→1個目ゲット
1 < 7 trueなので実行→2個目ゲット
2 < 7 trueなので実行→3個目ゲット
3 < 7 trueなので実行→4個目ゲット
4 < 7 trueなので実行→5個目ゲット
5 < 7 trueなので実行→6個目ゲット
6 < 7 trueなので実行→7個目ゲット
7 < 7 falseなのでストップ
初期値はゼロなので、0と7を比較するところから始めるのがポイントとなります。
また、以前も出てきましたが、変数を代入する時、『=』を使いますね。
これは右辺と左辺(=の右側と左側)が同等という意味ではありません。
例えば、gemCounter = gemCounter + 1
の場合は
右側のgemCounterに1を代入した数を、左側のgemCounterに返す、という形になります。
算数の『=(イコール)』とは使い方が違うので、注意してください。
・比較演算子でwhileループを使う時は、初期値に気をつけよう