いったん前回のつなげてきたソースをまとめて確認
//値を集める
Goma:=StrToInt(AllGoma.Caption);
Erai:=StrToInt(EraiGoma.Caption);
//ゴマをかける
NewX:=Random(258);
NewY:=Random(258);
Image1.Canvas.Pixels[NewX,NewY]:=clRed;
//値を更新
Distance:=sqrt(sqr(NewX-128)+sqr(NewY-128));
if Distance<=128 then begin
Erai:=Erai+1;
end;
Goma:=Goma+1;
//計算
Pai:=4*Erai/Goma;
//値を反映させる
AllGoma.Caption:=IntToStr(Goma);
EraiGoma.Caption:=IntToStr(Erai);
Oppai.Caption:=CurrToStr(Pai);
大丈夫だったら、ボタンクリックのイベントを編集します。
とりあえず、■で塗りつぶす部分を
//塗りつぶす
FillRect(Rect(0,0,257,257));
と直して置いてください。
TImageの幅、257ですから、ピクセルは、0番から256番 だということを、
忘れてました。
あっ あと
//ゴマをかける
NewX:=Random(258);
NewY:=Random(258);
Image1.Canvas.Pixels[NewX,NewY]:=clRed;
も、
//ゴマをかける
NewX:=Random(257);
NewY:=Random(257);
Image1.Canvas.Pixels[NewX,NewY]:=clRed;
にしてくださいー あぶないあぶない
そしたら、
with Image1.Canvas do begin
//ペンの設定
Pen.Style:=psSolid;
Pen.Mode:=pmCopy;
Pen.Color:=clBlack;
//ブラシの設定
Brush.Style:=bsSolid;
Brush.Color:=clWhite;
//塗りつぶす
FillRect(Rect(0,0,257,257));
//○を描く
Ellipse(Rect(0,0,257,257));
end;
AllGoma.Caption:='0';
EraiGoma.Caption:='0';
Oppai.Caption:='0';
Timer1.Enabled:=True;
Randomize;
と、ボタンのイベントの後ろに追加です。
上3行は大丈夫ですね。
文字列の0です。
Timer1.Enabledは、タイマーの
動いている プロパティです。
真ならタイマーが動いていて、onTimerが定期的に呼ばれます。
偽なら動きません。
最初の設定は偽になってますから、
Trueを代入して真にします。
Randomize;というのは、
Random の値をランダムにする命令です。
え?ランダムじゃないのか って?
実は コンピューターの中には、
「適当な値を出す回路」 なんてもんは無いんです。
だから、「超正確に適当な計算をする」ことで乱数
とほざいてます。
で、その「適当な計算」の結果を覚えておいて、それをまた
「適当な計算」に使うことで、
適当→適当の適当→適当の適当の適当
って感じで乱数をぽりぽり出していくわけです。
Randomize;を呼び出すと、
その「一番最初の適当」を、パソコンの
「時計」を元に設定してくれます。
時計ならいつでも違う値だから、
最初の適当が変えられるってわけです。
これを呼び出さないと、
最初の適当な値がいつも同じなので、
やるたびに同じ乱数がほいほい出てきちゃうわけですな。
ちなみに、「最初の適当」を「乱数の種」って言います。
まぁ、保存して完成です。
実行してみてください。
・・・・・でもまだ続くよ
コンテンツ
最新の12件
2023-06-12
2021-02-15
2013-06-19
2012-07-14
2012-02-04
2012-01-06
2011-03-31
2010-08-26
2010-03-15
2009-10-21
2009-02-12
2008-11-18
メニュー編集
- counter: 918
- today: 1
- yesterday: 0
- online: 1