Hallo,
EDIT: Ich habe das Problem nun selbst gelöst. Der Fehler lag darin, dass ich die alten Koordination nicht gespeichert hatte.
Ich habe für ein Spiel einen Editor gebaut. Im Editor kann man einzelne Elemente wie Figuren auf einem Schachbrett platzieren. Bisher war das Setzen der Elemente nur durch Klick auf die linke Maustaste möglich. Nun möchte ich, dass es möglich ist, einen Rahmen (z.B. einen Kreis) für ein Element zu zeichnen und dann durch Klick innerhalb des Kreises die gesammte Fläche mit dem Rahmen-Element zu füllen. Hierbei ist es egal, welche Elemente sich innterhalb des Kreises befinden.
Hier mein Code, der nun funktioniert. Vorher wurden nicht immer alle Felder ausgefüllt.
												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 
 | Function GetNewCoord(Var X,Y:Integer; Element:Byte; Direction:Byte):Boolean;
 Var TmpX,TmpY:Integer;
 Begin
 Result:=False;
 
 TmpX:=X;
 TmpY:=Y;
 
 Case Direction of
 1: Dec(TmpY); 2: Inc(TmpX);   3: Inc(TmpY);    4 : Dec(TmpX);   End;
 
 IF (TmpX>=0) AND (TmpX<=39) AND (TmpY>=0) AND (TmpY<=21) then
 BEGIN
 IF Map.ReadFieldStatus(TmpX,TmpY)<>Element then       BEGIN
 Result:=True;
 X:=TmpX;
 Y:=TmpY;
 END;
 END;
 End;
 
 
 Procedure FloodfillElement(X,Y:Integer; Element:Byte);
 Var BackX,BackY:Integer;
 Direction:Integer;
 Begin
 Direction:=1;
 Repeat
 BackX:=X;
 BackY:=Y;
 IF GetNewCoord(X,Y,Element,Direction) then
 BEGIN
 Map.SetFieldStatus(X,Y,Element,True);           FloodFillElement(X,Y,Element);
 X:=BackX;
 Y:=BackY;
 END else
 Inc(Direction);
 Until Direction>4;
 End;
 | 
		
	  
Viele Grüße