Dragon curve: Difference between revisions
Content added Content deleted
m (Algol 68 →L-System: comments) |
(PascalABC.NET) |
||
Line 5,355: | Line 5,355: | ||
close; |
close; |
||
end.</syntaxhighlight> |
end.</syntaxhighlight> |
||
=={{header|PascalABC.NET}}== |
|||
<syntaxhighlight lang="delphi"> |
|||
uses Turtle; |
|||
var |
|||
Atom,FStr,XStr,YStr: string; |
|||
angle,len,x0,y0: real; |
|||
n: integer; |
|||
procedure Init1; // Dragon |
|||
begin |
|||
(Atom,FStr,XStr,YStr) := ('fx','f','x+yf+','-fx-y'); |
|||
(angle,len,n,x0,y0) := (90,3,15,300,450); |
|||
end; |
|||
procedure RunStr(s: string; n: integer); |
|||
begin |
|||
foreach var c in s do |
|||
case c of |
|||
'+': Turn(angle); |
|||
'-': Turn(-angle); |
|||
'f','F': if n>0 then RunStr(FStr,n-1) else Forw(len); |
|||
'x','X': if n>0 then RunStr(XStr,n-1); |
|||
'y','Y': if n>0 then RunStr(YStr,n-1); |
|||
else Print('error') |
|||
end; |
|||
end; |
|||
begin |
|||
Init1; |
|||
ToPoint(x0,y0); |
|||
SetWidth(0.5); |
|||
Down; |
|||
RunStr(Atom,n); |
|||
Up; |
|||
end. |
|||
</syntaxhighlight> |
|||