Einzelnen Beitrag anzeigen

Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#88

Re: Ideen zur Schach KI

  Alt 20. Mai 2005, 11:06
Kann mir jemand vielleicht noch hierbei helfen ?
Sagen wir einfach die KI schaut nur einen Zug voraus. Sie prüft, wie es um ihre Seite steht, wenn sie einen zufälligen Zug macht.

Delphi-Quellcode:
TBoard = class
 public
  Move:TMove;
  Turn:Integer;
  Points:Integer;
  // ...
  procedure GetFigureLeading;
  procedure GetBestMove;
  function MoveAllowed:Boolean;
  procedure DoMove;
 end;

procedure TBoard.GetBestMove;
var
 BestMove:TMove;
 MaxPoints,i:Integer;
begin
 Randomize;
 MaxPoints:=64000;

 for i:=1 to 10 do
  // Erstellung eines gedachten Brettes
  with TBoard.Create(Self) do
   begin
    // KI sucht sich zufällig einen Zug aus
    repeat
     repeat
      Move.A.X:=1+Random(8);
      Move.A.Y:=1+Random(8);
     until Field[Move.A.X,Move.A.Y].ID*Turn>0;
     Move.B.X:=1+Random(8);
     Move.B.Y:=1+Random(8);
     Move:=GetMove(Move.A,Move.B);
    until MoveAllowed;
    // KI macht diesen Zug
    DoMove;
    Turn:=-Turn;
    // Berechnung der Punkte (zunächst nur Figurenvorteil)
    // positives Vorzeichen: Weiß in Führung
    // negatives " : Schwarz " "
    GetFigureLeading;
    // Entscheidung der KI
    if Points*Turn<MaxPoints then
     begin
      BestMove:=Move;
      MaxPoints:=Points*Turn;
     end;
    Free;
   end;

 Move:=BestMove;
 DoMove;
 Turn:=-Turn;
end;
Was ich hierbei wissen will, ob der Gedankengang so in Ordnung ist, wenn man die anderen verwendeten Methoden nicht in Frage stellt.
Habe ich villeicht etwas nicht beachtet oder irgendwo einen Fehler gemacht. Irgendwie funktioniert diese Prozedur bei mir nicht richtig.
  Mit Zitat antworten Zitat