Einführungskurs/Canvas und Turtle (Pascal)
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Pascal2</language>
== Beispiel 1 ==
Das nachfolgende Beispiel zeichnet einen farbigen Kreis. Versuche durch leichte Anpassung die Anzahl der Kreissegmente zu verdoppeln ohne den Radius des Kreises zu vergrößern.
<code id="4d2a0bf79cb32">
var isUp:Boolean;
i:integer;
</code>
<eval id="4d2a0bf79cdb4">
selectCanvas(2);
canvas_clear(); // Zeichenfläche löschen
turtle_move(200,100); // Turtle in die Mitte stellen
isUp := false;
for i := 0 to 17 do begin
turtle_penColor(i*10+50,0,250-10*i);
turtle_penWidth(10);
turtle_forward(20);
turtle_right(20);
isUp := not isUp;
if isUp then turtle_penUp() else turtle_penDown();
end;
</eval>
<canvas w=400></canvas>
== Beispiel 2 ==
Das folgende Beispiel verwendet zwei Turtles Bob und Eva. Bob ist betrunken und läuft verwirrt herum, während Eva versucht ihn wieder einzufangen. Schau dir den folgenden Quelltext an und versuch ihn zu verstehen.
<code id="4d2a0bf79cbbd">
var Bob:Integer;
Eva:Integer;
step:Integer;
</code>
<eval id="4d26ec4d87403">
selectCanvas(3);
Bob := createTurtle(3);
Eva := createTurtle(3);
canvas_clear(); // Zeichenfläche löschen
selectTurtle(Bob);
turtle_penColor(255,0,0);
turtle_move(300,200);
selectTurtle(Eva);
turtle_penColor(0,255,0);
turtle_move(50,50);
for step := 0 to 500 do begin
// Bewegung von Eva
selectTurtle(Eva);
turtle_setAngleTo(Bob);
turtle_forward(2);
// Bewegung von Bob
selectTurtle(Bob);
turtle_forward(random(8));
if step mod 2 = 0 then
turtle_right(random(90))
else
turtle_left(random(90));
end;
</eval>
Da Bob zufällig läuft, starte das Programm mehrmals.
<canvas w=600 h=400></canvas>