NOTの次に登場する論理演算子がAND演算子です。trueかfalseのどちらかの結果いなる条件(ブール条件)を2つあわせて、その両方ともがtrueかどうかを判定します。書き方は、
1 |
(条件A) && (条件B) |
のように、2つの間に「&&」を入れます。AND演算子という名前ですがSwiftではANDを2つ書くところに注意しましょう。
条件AとBの両方がtrueにならないといけないので、条件A/BとAND演算結果の関係を整理すると以下のようになります。
条件Aの結果 | 条件Bの結果 | (条件A && 条件B)の結果 |
true | true | true |
true | false | false |
false | true | false |
false | false | false |
狭き門ですね。
ステージの法則性としては、真っ直ぐ行き当たりまで進む中で、「宝石があってかつ左が行き止まりな時は右に脇道があって閉スイッチがある」というもののようです。左が行き止まりかどうかは新しい条件isBlockedLeftで確認できます。左が行き止まりならtrue、行き止まりでなければfalseが返ります。
つまり、
- 宝石がありかつ左が行き止まりならば、右へ進んで閉スイッチを切換に行きます。もちろん宝石もとります。
- 宝石だけならそれをとるだけです。
- 宝石すらない場合はなにもせずただ進みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
for i in 1 ... 7 { //いずれにせよ1歩進む moveForward() //宝石があり、かつ左が行き止まりか調べる if isOnGem && isBlockedLeft { //1. if文がtrueになる時、つまりisOnGemがtrueでかつisBlockedLedtもtrueならここを実行 collectGem() turnRight() moveForward() moveForward() toggleSwitch() turnLeft() turnLeft() moveForward() moveForward() turnRight() } else if isOnGem { //2.そうではなくisOnGemがtrueな時に実行 collectGem() } } |