【ブロックリー】ポンドチューターの考え方と学習内容を紹介します

スポンサーリンク

何を学ぶことができるの?
難問で全然解けません!

こうした悩みを解決します。

記事の内容:
・ポンドチューターの学習内容
・レベル9の考え方

スポンサーリンク

学習内容

ポンドチューターでは、敵に大砲を投げて倒すシューティングゲームを作ります。
学習内容は戻り値のある関数と引数です。

音楽では関数を呼び出すだけでしたが、ポンドチューターでは呼んだ関数は処理を終えると結果を返すので
その返ってきた値を使って処理を切り替えます。
そしてポンドチューターは実際にプログラミングします。
ステージの名前の通りですが、ポンドチューターは後のステージ「ポンド」のためのチューター(=学習補助)です。
説明が英語で書かれているのも相まって、かなり難しいです。

戻り値のある関数

関数が処理を終えて何かしら戻り値を返すものがあります。

例えば、鳥のステージで学習したフラグや、演算結果の値が戻り値になります。
ポンドチューターではscan()関数が戻り値のある関数ですね。
scan関数は指定した角度に対して存在する敵と自身との距離を100分率で返します。

音楽のステージで設計した関数は処理のかたまりを作っただけで、
関数が処理後に何か返すことはなかったですね。ここはしっかり意識しておきたいところです。

引数

引数とは、関数を呼ぶ時に予め与える数です。

例えばscan(45)のように書くと、45°の方向に対して敵を探すという処理をしますが、
この45と指定したのが引数です。
関数を呼ぶ時の括弧内に書きますが、引数に何を入れるかは関数を宣言するときに指定されます。

レベル10の答え

レベル10は撃たれると逃げる敵を追いかけながら大砲を打ち込んで倒します。
様々な答えがあります。下図に私が作ってみたプログラムを示します。

whle(true){では、常に中の処理を実行し続けるようにしています。
if(scan(45)<=40){では、45°の方向に敵を探し、見つけた時の距離が40以下だったらstop()で停止、
もし40より大きければswim(45)で45°の方向に進みます。
そしてscan関数の処理を終えたら、cannon(45,40)で45°方向に距離40先の位置に大砲を打ち込みます。

たかだか8行のプログラムですが、今までブロックを操作していた感覚と全く違うので
相当苦戦すると思います。これは指導者無しでは厳しいかもしれません。

まとめ

・ポンドチューターでは、戻り値のある関数と引数を学習します
・レベル10は様々な答えがあります。

付録

各レベルの答え

レベル1:
 cannon(90,40)

レベル2:
 cannon(180,50)

レベル3:
 while(true){
  cannon(45,60)
 }

レベル4:
 while(true){
  cannon(270, 60);
 }

レベル5:
 whle(true){
  cannon(180,scan(180));
 }

レベル6:
 while(true){
  cannon(0, scan(0));
 }

レベル7:
 swim(315);

レベル8:
 swim(270,40);

レベル9:(※回答例の1つ)
 swim(0);
 while(true){
  if(getX()>50){
   stop();
  }
  cannon(0,0);
 }


3+

コメント