Thema: Delphi Suche Suchbaum Code

Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Suche Suchbaum Code

  Alt 3. Jun 2008, 06:47
Sowas?
Delphi-Quellcode:
Function FindBestMove(Level: Integer; aPlayer, aOpponent: TPlayer;
  Var aBoard: TBoard; Var aBestMove: TMove; aPatt: Boolean): Integer;
var
  Dummy: TMove;
  aMoves: TMoveList;
  i, N, S: Integer;

begin
  Result := sPassScore;
  aBestMove.mPlayer := plEmpty;
  CreateAllMoves(aPlayer, aOpponent, aBoard, aMoves, N);
  if (N = 0) then
    if aPatt or (Level = 0) then begin
      Result := 0; // Unentschieden
  // Oder so: Spieler mit mehr Steinen gewinnt
  // Result := FinalScore (aBoard, aPlayer, aOpponent);
      Exit;
    end
    else
      Result := -FindBestMove(Level, aOpponent, aPlayer, ABoard, Dummy, True)
  else
    for i := 0 to N - 1 do begin
      MakeMove(aBoard, aMoves[i]);
      S := Score(aBoard, aPlayer, aOpponent);
      if s = sWinScore then
   s := s + Level // Die Gewinnzüge möglichst früh ausführen.
      else if (Level > 0) then
   S := -FindBestMove(Level - 1, aOpponent, aPlayer, ABoard, Dummy, False);

      UndoMove(aBoard, aMoves[i]);
      if (S > Result) then begin
   Result := S;
   aBestMove := aMoves[i];
      end;
    end;
End;
Zitat von fgb:
Mir geht es ja nicht um den Algoritmus sonder darum das es doch zumindesten schon einen einfachen Suchbaum als bibliothek oder offenen quellcode geben muss. Ist ja nix was nie verwendet wird.
Die Implementierung ist aber so banal, das es sich nicht offenbar nicht lohnt. Weiterhin ist die konkrete Implementierung von weiteren Zuglisten, Suchbäumen usw. bzw. deren Implementierung abhängig, sodaß es sich wirklich kaum lohnt, das auszukodieren. Daher eben Pseudocode.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat