Hi!
Ich gehe Sternförmig vom Mittelpunkt aus nach außen.
Delphi-Quellcode:
//Mittelpunkt des Spielfeldes
procedure TMittelFeld.Initialisiere;
var i: integer;
begin
self := TMittelfeld.Create;
self.image.Left := Mittelpoint.X;
self.image.Top := Mittelpoint.Y;
self.image.Show;
self.FKoordinate := MittelPunkt;
FrmMain.SechsEck(self.image.Canvas,breite div 2,0,breite);
for i := 1 to 6 do
begin
// Abarbeitung der 6 Zweige
self.FHauptFelder[i].{HauptFeld}Initialisiere(i,1,false);
end;
end;
Es wird 6 mal, also für jede Kante des Sechseck, die Prozedur
Delphi-Quellcode:
procedure THauptFeld{TFrmMain}.{HauptFeld}Initialisiere({Feld: THauptFeld;}Ader,Ebene: integer; Letzter: Boolean);
var bHilf: Boolean;
begin
self := THauptFeld.Create;
self.FKoordinate.Ader := Ader;
self.FKoordinate.Ebene := Ebene;
self.FKoordinate.Index := 0;
self.image.Left := FrmMain.PunktToPoint({Feld}self.FKoordinate).X;
self.image.Top := FrmMain.PunktToPoint({Feld}self.FKoordinate).Y;
self.image.Show;
FrmMain.SechsEck({Feld}self.image.Canvas,breite div 2,0,breite);
self.image.Canvas.TextOut(breite div 2,2,inttostr(ader)+ ' '+inttostr(Ebene)+' 0');
self.Fletzter := Letzter;
bHilf := ((ebene+1) >= AnzahlEbenen);
if not self.FLetzter
then
self.FNextHauptFeld.Initialisiere(ader,Ebene+1,bHilf);
bHilf := (ebene = 2);
if (ebene > 1)
then
self.FKindFeld.inititialisiere(Ader,Ebene,1,bHilf);
end;
Sie erstellt Hauptfelder, die Auf ein nächstes Hauptfeld, sowie auf ein Kindfeld zeigen, Es werden n Hauptfelder erzeugt, wobei n die Anzahl an Ebenen ist, also Kreisen, die sich um den Mittelpunkt herumziehen. Die "KindFelder" füllen die Zwischenräume zwischen den 6 "Adern" der Mitte, also die verlängerten Seiten, die aus Hauptfeldern bestehen.
Das Problem ist wie gesagt, dass die Felder nach der Prozedur wieder alle nil sind.
MFG richard