コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています!
Day8の今回からは「関数」のユニットに入っていきます。
関数ユニットには7ステージありその中のひとつ目「新しい挙動を作る」の解説になります。

解答例と解説
まずは解答例と解説から!
解答例

解説
上記のコードを実行した結果がこちらです。
turnLeft()を使って右を向くことができましたか?
実はというか、気づく人もいるかもしれませんが、
turnRight()「右を向く」はコマンドとして用意されています(笑)
それを使わなくても、
別の切り口で解決することができるんだよ
ということに気づかせてくれようとしているのですね。
この辺りが論理的思考力につながります!
ちなみにturnRight()を簡単に使わせてくれるようになるのはまだ先になります笑
今回のポイント
コンポジションとは
説明文の中にコンポジションという言葉が出てきました。
こちらググってみたところ、「組み立てること、構成」と出てきました。
説明文には「すでにあるコマンドを組み合わせて新しい挙動を作る」とあります。
今回は組み立てることが目的のようですね!
すでにあるコマンドだけで右に曲がる方法を考える
では説明文を詳しく確認してみましょう。

目標は「コンポジションを使って右に曲がる」ことのようです。
コンポジションとは、先述したように組み合わせることですね。
すでにあるコマンドだけで右に曲がる方法を考えます。
これまでに使ったコマンドでキャラクターの向きを変えるものは、
turnLeft()「左を向く」があります。

turnLeft()が初めて出てきたのはこちら↑
turnLeft()は、左に90°回ります。
もう一回やると180°。
更にもう一回で270°。
ここまでやると右に90°回ったのと同じ結果が得られますね!!
やり方はどうあれ同じ結果をどうにか生み出すことがコンポジションということですね!
※ただし、できるだけ少ないコマンドが好ましいです。
試しにturnLeft()を3回実行してみました。
過程を見ると左に回転していますが、
動画の始めと終わりだけを見ればByteは右を向いていますよね!
コードはユーザーには見えない部分なので、
一見遠回りのようでも得られる結果は同じになります。
もう少し詳しく解説するとユーザーには、
実際のアプリケーション上ではこの動画のような左回り3回の過程は見えず、
動画の始めと終わりだけが見えるということになります!
これで右に曲がることができるようになりました!!
ステージ攻略「新しい挙動を作る」
攻略
あらためて、ステージの確認をしていきましょう!

今回は宝石を1つ取ることができればクリアのようです。
ただし、そのためには右に曲がる必要があります。
ここで先ほど解説した右に曲がる方法の出番です!
「3マス進んで右に曲がり、3マス進んで宝石を取る」ことができればクリアできそうです。
まとめ
なんだか遠回りをしているような気もしましたが、
turnLeft()を3回使って右を向くことができました。
「コマンドがないから無理じゃん」と諦めることなく、
しっかり考えようということです!!
- すでにあるコマンドだけを組み合わせて、新たな挙動を作ることをコンポジションという
- turnLeft()を3回使えば右を向くことができる
- コンポジションは論理的思考力に繋がる
次回はDay9「新しい関数を作る」でお会いしましょう!ではまた!!
