スポンサーリンク
スポンサーリンク
解答例
var gemCounter = 0
var switchCounter = 0
while gemCounter != 3 || switchCounter != 4 {
if gemCounter != 3 && isOnGem {
collectGem()
gemCounter = gemCounter + 1
} else if switchCounter != 4 && isOnClosedSwitch {
toggleSwitch()
switchCounter = switchCounter + 1
}
if isBlocked && isBlockedLeft {
turnRight()
} else if isBlocked {
turnLeft()
}
moveForward()
}
解説
今度は、2つの条件を満たさないとゴールできません。
まず、変数をvarで宣言し、初期値をどちらも0(ゼロ)とします。
前半の宝石ゾーンで3つ宝石をゲットし、後半は4つスイッチを切り替えた時点でゴールします。
『!=』を使うことにより、等しくない間はtrueとする事ができます。
『gemCounter != 3
』は、gemCounterと3が等しくない場合にtrue。
つまり、宝石が0個、1個、2個は等しくないのでtrue、3 != 3
は等しいのでfalseになります。
ややこしいですが、3つになった時点で条件が外れるので、このように上限を決める時に使いやすいですね。
それから、『論理演算子』も復習しておきましょう。
・論理AND(&&)演算子…全ての条件がtrueの時だけ実行される
・論理OR(||)演算子…いずれかの条件がtrueの時に実行される
(どちらもtrueでもtrue(実行される))
・論理NOT(!)演算子…条件が逆になる。例えば、!onGemでは宝石の上にいない時、true
あとは『キャメルケース』ですが、英語で『camel case』つまり〝ラクダのこぶ〟という意味で
大文字がラクダのこぶに見えることからの命名だそうです。
キャメルケースで書くと、『CamelCase』または『camelCase』となり、こぶができてるように…
見える??
とにかく、複合語をハイフンなどを入れずに、要素の最初を大文字で書き表すことです。
今までも、gemCounter
のように書いてきているので、なじみがありますね。
要点まとめ
・変数名にはキャメルケースを使い、後で見てわかりやすいものにしよう
スポンサーリンク