其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

用Delphi编写圆周率模拟器[2]


发布日期:2021年11月16日
 
用Delphi编写圆周率模拟器[2]

程序首先在Image控件区域内画一个边长为的正方形作为程序的演示窗口故FormCreate事件如下

procedure TFormFormCreate(Sender: TObject);

begin

// 画亮绿色的正方形演示框

ImageCanvasBrushColor:=clBlack;

ImageCanvasFillRect(Rect());

ImageCanvasPenColor:=cllime;

ImageCanvasRectangle();

DoubleBuffered := True;

end;

接着放入一个Timer实现点的绘制以及π的计算

procedure TFormTimerTimer(Sender: TObject);

var

abiii:longint;

pipiok:single;

begin

// 随机产生坐标点

i:=random();

ii:=random();

if (i*i+ii*ii<) then

begin

// 以为半径的圆内的点设为蓝色

ImagecanvasPenColor:=claqua;

a:=StrToInt(LabelCaption);

LabelCaption:=IntToStr(a+);

//显示当前点的坐标

LabelCaption:=IntToStr(ImageCanvasPenPosX);

LabelCaption:=IntToStr(ImageCanvasPenPosY);

end

else

begin

// 超出这个区域的点都在圆外设为黄色

ImageCanvasPenColor:=clyellow;

b:=StrToInt(LabelCaption);

LabelCaption:=IntToStr(b+);

end;

// 画点(长为像素的直线)

ImageCanvasMoveTo(iii);

ImageCanvasLineTo(iii+);

// 计算pi的值

pi:=(*(StrToInt(LabelCaption))/(StrToInt(LabelCaption)+StrToInt(LabelCaption)));

LabelCaption:=FloatToStr(pi);

// Label显示的是最接近真实pi的值

piok:=StrToFloat(LabelCaption);

//得出最接近的圆周率值 piok

if (abs(pi))<(abs(piok)) then

LabelCaption:=FloatToStr(pi);

end;

最后加入两个SpeedButton作为开始和暂停按钮代码分别是TimerEnabled:=true;和TimerEnabled:=false;好了程序这样就完成了赶快按下F亲自模拟一下π的计算吧!

小结

虽然程序并没有采用圆周率的算法但能通过随机数对π进行逼近而由无数点描成的美妙圆弧让我们歎为观止其实这样的思想可以用于许多场合比如对某个数学定理或者自然规律(彩票?)进行模拟希望这样的思路对您有所启发

[] []

               

上一篇:通过DELPHI小程序在WINDOWS下更好地使用DOS批处理

下一篇:用Delphi编写圆周率模拟器[1]