![]() |
Top > 授業 > Delphi プログラミング >Lesson 8b Lesson 8b(2004/10/07) |
![]() |
![]() |
![]() |
![]() 1.このLesson 8b では Lesson 8a の P802 の2つの練習問題の解答例を示します。 2.以下のサンプルプログラムはダウンロードしてください(クリック)。ダウンロードしたファイル(lesson8b.exe)はDelphi7\Source に置いてクリックして解凍してください。なお、プログラムの実行には、同じフォルダ(Source)に画像ファイル(red1.bmp〜red6.bmp、など)があることが前提です。 |
![]() a.このプログラムはPaintBox の「水槽」で1匹の魚が泳ぐアニメを表示します。 ・特に正解がある訳ではありません。私のP803 では次のような処理をしています。 ・まず、魚データを格納する変数 fish のレコード型の定義で、魚の位置の変数(xとy)以外に向き(Direct)と方角(Angle)を導入しています。Direct は1なら左向き、2なら右向きです。Angle は1なら上向き、2なら真横、3なら下向きです。魚は向いた方向に移動すると考えます。 ・手続き DrawFish では、魚の向きと方角によって表示する画像を選んでいます。 ・初期状態で魚の位置、向き、方角は乱数で決めます(FormCreateで呼び出す InitialFishes)。 ・次に魚の動きを手続きStartBtnClick内の repeat ループで決めます。魚の向き、方角は確率0.8でそのまま、確率0.2 で変化します。だから変化するかどうかはベルヌーイ系列、ということです。 ・変化するとき、向きと方角が乱数で決まります。 ・その他、魚は右(左)の端まで行ったら左(右)から出てくるように、if 文で操作しています。 lesson8a.exe を解答すると18個の bmp ファイル(blue1〜6、green1〜、red1〜6.bmp)が出てきます。このファイルも Source のフォルダに入れてサンプルプログラムを使ってください。 ・画像ファイルはホームページ用のアイコンを私がいじったものです(版権はないのだと思いますが)。元は1つのファイルでした(番号が2のファイル)。そのファイルを回転移動、線対称移動を施して6つにしました。 ・P801を実行すると red1.bmp 〜 red6.bmp が PaintBox に表示されます。それ以上は何もしません。 練習問題 1.確率の定数を変えると魚の動きも変わることを確認せよ。 2.P803 では上下斜めに移動するとき、真横に移動するよりもユークリッド距離で長い移動を行う。この点を是正せよ。 |
![]() a.このプログラムは P803 の魚の数を15匹にしています ・P803 ができてしまえば P804 は簡単です。魚の数を増やすだけです。魚データの変数 Fish を配列にしました。 ・魚を増やすと異なった色を導入したくなります。そこで Fish のレコード型に色を示す変数(color)を足しました。 ・魚の初期状態を決めるときに色も乱数で決め、複数の魚の変化は独立に決めています。 練習問題:P804 では魚が独立に動いている。個々の魚が他の魚の位置に何らかの反応するとすれば、魚は群れをなるようになるかも知れない。どのような前提があれば群れらしくなるかを考えよ。(この問題は難しく、それ自体研究になりそうです。私も答えを用意していません。) |
![]() そろそろこの Lesson も終わりに近づいてきました。次の Lesson 9 ではバイナリファイルの使い方を練習します。 |