Hab herausgefunden, warum das Spiel so langsm lief.
Es war die Methode, die prüft, ob man etwas sehen kann:
Delphi-Quellcode:
function CanSee(AX,AY,BX,BY: Single; Blocker: TBitmap): Boolean;
var i ,k : Integer;
xdiff,
ydiff : Single;
begin
Result := true;
If (round(AX-BX)=0) or (round(AY-BY)=0) then exit;
Result := false; <--
k := round(distance(AX,AY,BX,BY)* 2); <---> Die Zwei hab ich schon in eine 10 umgeändert
If (k>10000) then exit; <--
xdiff := (AX-BX)/k;
ydiff := (AY-BY)/k;
for i := 0 to round(distance(AX,AY,BX,BY)*2) do
begin
If (Blocker.Canvas.Pixels[round(BX+xdiff*i),round(BY+ydiff*i)]<>clwhite) then exit;
If (round(BX+xdiff*i)>Blocker.Width) or (round(BY+ydiff*i)>Blocker.height) then result := true;
If (round(BX+xdiff*i)< 0) or (round(BY+ydiff*i)< 0) then result := true;
end;
result := true;
end;
Hat jmd ne gute Idee, außer den markierten Wert zu ändern?