Small Basic > 信号機を書いてみよう(解説)
のぶ亭『プログラミングの相談窓口』 … 様々なプログラミング問題を個別対応致します |
信号機を書いてみよう(解説)
オブジェクトについては「Small Basic API リファレンス」を参照してください。
黄色を中心に、青と赤を均等に表示するにはどうしたらいいでしょう?
手書きの場合何となくだと描けますが、正確(均等)に書くためには図面が必要になります。
まず、この図面を書いてみましょう。
画像を保存して参照してください。
自分のためだけなら、手書きで十分です。きれいに書く必要はありません。
また、比率も適当に決めただけです。
方法は色々ありますが、サイズを固定にするのではなく「比率」で画く方法を考えてみます。
ウィンドウでは、サイズフリー/サイズ固定という2つの概念があります。
ここでは対応していませんが、
ウィンドウサイズが変更されるとウィンドウサイズに比例して書き直さなければならない場合があります。
そのためには、比率固定で実サイズをその都度計算して再描画する必要があります。
その際、固定サイズではなく比率が便利です。
この比率の基準は「幅」です。
実際にこの図形を画く場合、物差しとコンパスが必要ですね。
そして、手元の用紙の横幅を基準にそれぞれの比率から実際のサイズを求めます。
- 用紙の中心点を求める
- 円の半径を求める
- 青と赤の位置を求める
これは、物差しとコンパスを使って紙に描く場合の方法です。
この方法をプログラムに置き換えてもダメです。
なぜなら、円を描く命令(メソッド)は円の中心ではなくて、円が収まる矩形の左上が基準になっているからです。
それぞれの”青●”位置(X座標、Y座標)を求めて指定しなければなりません。
より実物に近いものを画く場合は、信号機そのものを調べる必要がありますよね。
プログラミングに図面はいらないと思う方へ
もし、図面を考えずにいきなりプログラムで考えようとすると、延々に終わりません。
試行錯誤のあげく、結局図面を書くことになるでしょう。
プログラミング言語は、
あなたが考えた事をコンピュータ上で実現するための
物差しやコンパスのような「道具」だと考えれば理解しやすいと思います。
そして、図面が無ければ正確に画くことができないように、プログラムにとっても必要なことなんです。