Einführungskurs/Canvas und Turtle (Pascal)

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Pascal</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>
<run id="4d2a0bf79cdb4">
selectCanvas(1);
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;
</run>

<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>
<run id="4d26ec4d87403">
selectCanvas(2);
Bob := createTurtle(2);
Eva := createTurtle(2);

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;
</run>
Da Bob zufällig läuft, starte das Programm mehrmals.
<canvas w=600 h=400></canvas>