Programming

Day52「3つの宝石と4つのスイッチ」|Swift Playgrounds 攻略と解答例

コウです、よろしくお願いします!

「ゼロからプログラミングを始める」人に役立つ情報を発信しています。

今回はDay52「3つの宝石と4つのスイッチ」です。どうぞ!!

小学生から社会人までおすすめ!!プログラミング言語『Swift』について!【今始める理由と学び方】 こうといいます、よろしくお願いします! 小学校で教師をやっていた経験を活かして、 プログラミングについて悩みをお持ちの保護...

解答例

まずは解答例を確認しましょう。

解答例

コードの解答例は次のようになります。

解答例を動画で確認する

上記のコードを実行した結果がこちらになります。

ステージ攻略「3つの宝石と4つのスイッチ」

ステージを攻略していきましょう!

ワープがあるのがわかるでしょうか。

ワープする前には宝石が、ワープした後にはスイッチが並んでいますね。

ただ、ワープがあっても結局一本道が続いているだけなので

その道を通りながら

宝石を3つ集め、スイッチを4つ切り替える

ことになります。

注意が必要なのは、

それぞれの数より多くても少なくてもいけないということです。

それから今回もワイヤーフレームさんご登場です。

宝石やスイッチの位置がランダムなので、

1マスずつ調べながら進む必要がありますね。

ワイヤーフレームについては↓こちらからどうぞ

Day26「関数をじょうずに使う」【Swift Playgrounds 攻略と解答例】 コウです、よろしくお願いします! プログラミング経験は全くない素人ですが、「ゼロからアプリ開発できるのか!?」ということで日々勉...

whileループの条件

今回もwhileループを使っていきます。

whileループの詳細は↓から

Day34「条件を決めてコードをループする」|Swift Playgrounds 攻略と解答例【ゼロから学習】 コウです、よろしくお願いします! 「ゼロからプログラミングを始める」人に役立つ情報を発信しています! 今回はDay34コー...

ループの条件は、

宝石の数が3個より少ないもしくはスイッチの数が4個より少ない

とします。

つまりクリア条件を満たすまでということですね。

条件をコードで書くと以下のようになります。

gemCounter < 3 || switchCounter < 4

もしくはを表すのは論理or演算子||』でした。

覚えていましたか?

論理or演算子について詳しくは↓から

Day32「一方でも正しければ合格」|Swift Playgrounds 攻略と解答例【ゼロから学習】 コウです、よろしくお願いします! 「ゼロからプログラミングを始める」人に役立つ情報を発信しています! 今回はDay32コー...

whileループの中身

クリア条件を満たすまで

どのような動きをすればよいか考えていきましょう。

解答例をもう一度表示します。

whileループの中には

①〜⑤の項目が書かれています。

順番に確認していきましょう。

①1マス進む

moveForward()

まずはmoveForward()ですね。

ワイヤーフレームにより

宝石やスイッチの場所はどこに出現するかわからないので、

1マスずつ調べていく必要があるからです。

②宝石を取って数を数える

if isOnGem && gemCounter < 3 {

        collectGem()

        gemCounter = gemCounter + 1

    }

宝石に関する項目です。

まずはif文で

宝石の上にいて宝石の数が3個より少ない時

に動けるようにします。

そしてその条件に合う場合には

宝石を取って、宝石の数を+1

します。

③スイッチを入れて数を数える

if isOnClosedSwitch && switchCounter < 4 {

        toggleSwitch()

        switchCounter = switchCounter + 1

    }

スイッチに関する項目です。

やっていることは②と一緒で、宝石がスイッチになっただけです。

スイッチは4つ切り替える必要があるので『<4』ですね。

④右を向く

if isBlocked && isBlockedLeft {

        turnRight()

    }

ステージはまっすぐ続いていません。

途中で曲がっていますよね。

もう一度ルートを確認してください。

右に曲がらなくてはならない箇所(赤で囲ったところ)が6箇所あります。

その全ての場所に共通していることがあります。

それは、

前と左が行き止まり

であることです。

これを利用して、『前と左が行き止まりの時には右を向く』としました。

⑤左を向く

if isBlocked && isBlockedRight {

        turnLeft()        

    }

④とほぼ同じです。

ステージには左に曲がらなければならない箇所が1つだけあります。

ここは

『前と右が行き止まり』

になっていますね。

そこで、『前と右が行き止まりの時には左を向く』としました。

まとめ:3つの宝石と4つのスイッチ

解答例を漠然と見ると難しそうですが、

小分けにすると一つ一つはそんなに難しくなかったですね。

今回のポイントを振り返りましょう。

ポイント
  • 一見難しそうに見えても、小分けにすれば大丈夫
  • 『||』は『もしくは』の意味

次回はDay53「値が等しいかどうかを調べる」でお会いしましょう!それでは!!

小学生から社会人までおすすめ!!プログラミング言語『Swift』について!【今始める理由と学び方】 こうといいます、よろしくお願いします! 小学校で教師をやっていた経験を活かして、 プログラミングについて悩みをお持ちの保護...