"Evolutionäre Entwicklung" beim Tangram-Spiel, 1
evolution1.zip
Getreu der
"Evolutionären Entwicklung" wollen wir
uns zunächst ein System vornehmen, dass fast
nichts kann, aber schon lauffähig ist. Wir benutzen schon hier das MVC-Schema und verwenden die
Klasse TWeltBildManager ohne Veränderungen wieder.
Vorgehen
- Zuerst ist ein neues Projekt zu erzeugen, das z.B. im Ordner "evolution1" abgespeichert wird.
Die Units mTeil und mWeltBildManager sind dem Projekt hinzuzufügen
(Projekt/demProjekt hinzufügen).
- In der uses-Liste sind die Units einzufügen.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, mTTeil, mTWeltBildManager;
|
- Die Referenz-Variablen werden eingefügt.
type
TForm1 = class(TForm)
private
wbm : TWeltBildManager;
Teil : TTeil;
public
{ Public-Deklarationen }
end;
|
- In der Methode FormCreate werden Instanzen wbm und Teil erzeugt.
procedure TForm1.FormCreate(Sender: TObject);
begin
wbm := TWeltBildManager.Create;
Teil := TTeil.Create;
end;
|
- In der Methode FormDestroy werden die Instanzen freigegeben.
procedure TForm1.FormDestroy(Sender: TObject);
begin
wbm.Free;
Teil.Free;
end;
|
- Die Instanzen wbm und Teil werden initialisiert.
procedure TForm1.FormCreate(Sender: TObject);
var
P : TPArray;
begin
wbm := TWeltBildManager.Create;
wbm.berechneKoeffizienten(-2,6,-1,5,8*30,6*30);
Teil := TTeil.Create;
SetLength(P,3); // Speicher belegen
P[0].x := 0; P[0].y := 0;
P[1].x := 3; P[1].y := 0;
P[2].x := 0; P[2].y := 3;
Teil.setP(P);
SetLength(P,0); // Speicher freigeben
Teil.setFarbe(clRed);
end;
|
- Die Methode zeichneTeil wird geschrieben.
procedure TForm1.zeichneTeil;
var
BP : array of TPoint; // Bild-Polygon
i,n : integer;
farbe : TColor;
begin
n := Length(Teil.getP);
SetLength(BP,n); // Speicher reservieren
for i := 0 to n-1 do // Bild-Polygon mit transformierten Werten füllen
begin
BP[i].X := wbm.ut(Teil.GetP[i].x);
BP[i].Y := wbm.vt(Teil.GetP[i].y);
end;
with canvas do
begin
fillrect(rect(0,0,8*50,6*50)); // löschen
farbe := Brush.Color; // Hintergrundfarbe merken
Brush.Color := Teil.getFarbe; // Füll-Farbe setzen
Polygon(BP);
Brush.Color := farbe; // Hintergrundfarbe restaurieren
end;
SetLength(BP,0); // Speicher freigeben
end;
|
- Das Ereignis FormPaint wird mit dem Zeichnen beauftragt.
procedure TForm1.FormPaint(Sender: TObject);
begin
zeichneTeil;
end;
|