小编Emi*_*l B的帖子

Delphi:Sierpinski三角形:程序没有完全运行

我不明白为什么这段代码会这样:

在此输入图像描述 只有左下角的三角形似乎在绘制,但内三角形只出现在顶部和右下三角形的第一个深度.我希望程序是递归的,但它是某种原因导致我的糟糕的编程技巧不是递归的.我真的想要了解我做错了什么.

implementation

{$R *.dfm}

var
  count : integer = 0;

procedure DrawTriangle(aCanvas: TCanvas;x,y,size : extended;n : integer);
var
  h : extended;
  w : extended;
  i : integer;
  x1,x2,x3,y1,y2,y3 : extended;
begin
    w := size;
    h := size;
    x1 := x;
    y1 := y;
    //ShowMessage(FloatToStr(w)+' '+FloatToStr(h));
  if aCanvas<>nil then
  try
    //1st - left
    aCanvas.MoveTo(Round(x1),Round(y1));
    aCanvas.LineTo(Round(x1+w*2),Round(y1));
    aCanvas.LineTo(Round(x1+w),Round(y1-h));
    aCanvas.LineTo(Round(x1),Round(y1));
    //2nd - right
    x2 := x1+w*2;
    y2 := y1;
    aCanvas.MoveTo(Round(x2),Round(y2));
    aCanvas.LineTo(Round(x2+w*2),Round(y2));
    aCanvas.LineTo(Round(x2+w),Round(y2-h));
    aCanvas.LineTo(Round(x2),Round(y2));
    //3rd - top
    x3 := x2-w;
    y3 := y2-h;
    aCanvas.MoveTo(Round(x3),Round(y3)); …
Run Code Online (Sandbox Code Playgroud)

delphi

6
推荐指数
2
解决办法
275
查看次数

标签 统计

delphi ×1