前回の記事ではGoogleがプログラミング教育を目的として公開している「ブロックリー・ゲーム」というサイトの「迷路」のレベル1~レベル5について解説しましたので、今回はレベル6~レベル10について解説していきます。解説を読む前にまずは自分で実際に問題を解いてみてください。
まずは以下のGoogleの「ブロックリー・ゲーム」というサイトへアクセスし「迷路」をクリックしましょう。
引用元:ブロックリー・ゲーム
レベル6解説
レベル6は以下の問題になります。

あらたに「もし左に進めるなら 実行」というブロックが追加されました。このブロックの右のプルダウンの部分をクリックすると「もしまっすぐ進めるなら」と「もし右に進めるなら」を選択できるようになっています。つまり、このブロックは条件分岐を表すブロックです。
条件分岐は基本的にループと組み合わせて使うことが多く、ここでも「「まで繰り返す」📍 実行」のブロックの中に入れて使います。
ループや条件分岐の意味がよくわからない方は以前の記事「プログラミング学習(アルゴリズムとプログラミング言語)について」をご確認ください。
レベル6:解答
最初から目的地まで「基本的にまっすぐ進み、もし左に進めるなら左を向く」という繰り返しの動きが答えになります。

レベル7解説
レベル7は以下の問題になります。

一見すると複雑そうに見えますが、慌てずに最初から目的地までの道のりをなるべくシンプルに通るにはどのルートを通れば良いか考えてみましょう。
レベル7:ヒント
以下の赤線のルートを通るプログラムを考えてみましょう。

レベル7:解答
最初から目的地まで「基本的にまっすぐ進み、もし右に進めるなら右を向く」という繰り返しの動き、つまりレベル6の解答と左右が入れ替わっただけです。

レベル8解説
レベル8は以下の問題になります。

今度はレベル6とレベル7の問題を合わせたような問題です。
この問題も出来るだけシンプルなプログラムを考えるようにしましょう。
レベル8:解答
最初から目的地まで「基本的にまっすぐ進み、もし左に進めるなら左を向く、もし右に進めるなら右を向く」という繰り返しの動きです。

レベル9解説
レベル9は以下の問題になります。

あらたに「もしまっすぐ進めるなら 実行 そうでなければ」のブロックが追加されました。
そうでなければ=まっすぐ進めない ということなので、このブロックはまっすぐ進める場合と進めない場合で条件分岐するプログラムとして使用します。
この問題も複雑そうに見えますが、これまでの問題と同様、慌てずに最初から目的地までの道のりをなるべくシンプルに通るにはどのルートを通れば良いか考えてみましょう。
レベル9:ヒント
以下の赤線のルートを通るプログラムを考えてみましょう。

レベル9:解答
最初から目的地まで「基本的にまっすぐ進み、もしまっすぐ進めないときは左を向く」という繰り返しの動きです。

レベル10解説
レベル10は以下の問題になります。

さて、最後のレベル10は今までの問題より難しいのですが、いきなり画面にヒントが書かれています。
「この難しい迷路を解けますか?左側の壁をたどってみてください。上級のプログラマー向けの迷路です!」
実はこの【壁をたどる】という考え方は迷路などの複雑な形を通る時の定番の考え方で、これを思いつくかどうかが一つのポイントなのにいきなりヒント言っちゃいましたね。
ヒントに書かれていた左の壁をたどるとは以下のような青線をたどっていくイメージです。
(ちなみにこの問題は右の壁をたどっても解けるので左右どちらでも構いません)

レベル10:ヒント(正解の動き)
青線をたどるように以下の動きをして目的地まで行きましょう。
.gif)
レベル10:解答1
最初から目的地まで「もしまっすぐ進めるならまっすぐ進んで左を向く、まっすぐ進めないなら右を向く」という繰り返しの動きです。
イメージとしては真っ暗な部屋や目隠しされた状態から脱出する時に左手で壁を触りながら道を確認して進んでいる感じですね。
このような動きはプログラミングの手法として「左手法」というので興味のある人は調べてみましょう。

レベル10:解答2
解答1の向きを左右入れ替えた場合の解答です。「右手法」と言います。

以上でGoogle Blockly Maze(ブロックリー・ゲームの迷路)は全て終了です。
最後のレベル10は少し難しかったかも知れませんが、よくある解き方なので慣れておきましょう。
今回のようなブロックをつなぎ合わせるタイプのビジュアルプログラミングとしてはScratch(スクラッチ)が有名で、Scratchはもっと色々な種類のブロックが用意されていて自作ゲームを作ったりアニメーションを作るなど出来ることももっと多いです。Scratchについてもいつかご紹介します。
それでは、お疲れさまでした。
コメント