So für alle die es interessiert ist hier der Source wie sich bei mir die Steine ohne Fehler drehen:
Code:
begin
result:= false;
AltSpF:= FSpielfeld;
for i:= 1 to 4 do // alten SpSt löschen da er bei erfolgr. Drehung nicht da wäre
FSpielfeld[FSpielStein[i].x,FSpielStein[i].y]:= FFreeColor;
// Zuordnen
for i:= 1 to 4 do // Drehpunkt: (0|0); Stein darüber : (0|1) usw.
begin
SpSt[i].x := SpSt[i].x - SpSt[0].x;
SpSt[i].y := -SpSt[i].y + SpSt[0].y;
end;
SpStAlt := SpSt;
// Drehen
for i:= 1 to 4 do
begin
SpSt[i].x:= SpStAlt[i].y; // x := y;
SpSt[i].y:= - SpStAlt[i].x; // y := -x;
end;
// Zurück zuordnen
for i:= 1 to 4 do // Speilstein erhält wieder seine
begin // Koord. relativ zum Spielfeld, nicht mehr zum Drehpunkt
SpSt[i].x := SpSt[0].x + SpSt[i].x;
SpSt[i].y := SpSt[0].y - SpSt[i].y;
end;