2019年8月20日(火)リタイヤ生活825日目

今日は朝から天気が悪く、雨は降っていなかったものの地面が濡れていた。

当然、洗濯物は洋室乾燥に。

それでも午前中は薄日が差した時もあったが、午後からはまた天気が崩れ、

夕方には滝のような雨も降った。

 

今日も特に予定がなかったので、先日から再開したScratchをもう少し調べることにした。

Scratchもビジュアルプログラミング言語という少し変わったものではあるものの、

コンピュータ言語の1つであり、ここまでくると、幾つか実際に動くプログラムを作ってみないと

コンピュータ言語の理解は進まない、これが一般的に当たらしコンピュータ言語を理解する上での一般則のようだ。

 

一般に何かをコンピュータで実現したいときに、コンピュータ言語に依存せずに機能仕様を作成することは、

(本来は出来るはずだが)なかなか難しい。

しかもScratchのような言語は、出来ることが限られているため、

目的にあった課題を選定しないと、実現できないことになってしまう。

そこでまず、何を作るかを考えてみた。

 

一番簡単な例題として思いついたのが、ブロック崩し

Scratchのチュートリアルにも似たようなものはあるが、少しひねって考えてみた。

 

ボールと、それを打つパドル、これは余り考えることはない。

でもそのままではつまらないので、パドルが当たる毎にボールの色が変わるようにした。

ブロックに関しては、1つ定義しておいて、後はクローンで並べていった。

更に単に並べておくのではつまらないので、すべてのブロックが左から右に動くようにした。

今回は、8個×3行の形24個のブロックを作ったが、それらが左から右に動いているところに

ボールを当てる必要がある。

 

実際にブロック崩しが動くステージ、8個×3行のブロック、ボール、そしてパドルと

要素は決まって、後はそれぞれのオブジェクトに該当するコードをはめ込んで行くだけ。

Scratchの場合には、左側に表示されたブロックから該当するコマンドをコードエリアに

ドラッグ&ドロップして組み立てていくので、テキストベースのプログラム作成に比べて

マウスの操作量が多く、かなりまどろっこしい感じがする。

背景やスプライトの描画の際に、実際のステージでの座標との関係が掴めないので極めて作りにくい。

これは、何かの操作で対応できている筈だと思うのだが、まだその操作法を見つけていない。

 

また、制御構造がネストしていくと、どのレベルの処理か見にくくなってバグを作り込んでしまうことがある。

今日も、一カ所、原因不明の動作をして悩んでしまうところがあったが、

原因は、制御構造のネストの中で、一部のブロックを間違って移動させてしまったのが

原因だったようだ。

マウス操作をしていると、何かの拍子にブロックをつかんでしまうことがあり、

そのままうっかりブロック領域の持って行くとすべて消えてしまうこともあり、十分注意が必要だ。

 

このような形で、実際のScratchの操作感を理解しながら、

とりあえず簡単なブロック崩しは完成させることができた。

今日はアマゾンで、Scratchで制御できるマイコンmicro:bitを注文しておいた。

明日には到着する予定なので、次は実際のマイコンをScratchから制御してみたい。

また、LEGOのMindstormやDJI TELLOも制御できるとのことなので、

それらにも順次チャレンジしてみたい。