Swift Playgrounds

コードを学ぼう2【7つの宝石を集める】解答例と解説

7つの宝石を集める

解答例

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ループを使う時は、初期値に気をつけよう