ich hab mich mal wieder dran gegeben und versuche es zu lösen...
wenn ich weiss welche dame als letztes dazugekommen ist, kann ich ja wesentlich schneller überprüfen ob eine stellung gültig ist.
ist dieser code korrekt? kann man ihn noch optimieren?
Delphi-Quellcode:
function TForm1.IsValid(Feld:TFeld; NewX, NewY: Byte):Boolean;
var i:Integer;
Failed:Boolean;
begin
for i:=1 to Newy-1 do Failed:=Failed or Feld[i,NewY];
if not Failed then
for i:=NewY+1 to 8 do Failed:=Failed or Feld[i,NewY];
if not Failed then
for i:=1 to NewX-1 do Failed:=Failed or Feld[NewX,i];
if not Failed then
for i:=NewX+1 to 8 do Failed:=Failed or Feld[NewX,i];
if not Failed then
for i:=NewX-1 downto 1 do
if NewY-i>0 then Failed:=Failed or Feld[NewX-i,NewY-i];
if not Failed then
for i:=1 to 8-NewX do
if NewY+i>0 then Failed:=Failed or Feld[NewX+i,NewY+i];
Result:=Failed;
end;