(Moderator)
Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
Delphi 2007 Enterprise
|
Re: Suche Suchbaum Code
3. Jun 2008, 07: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")
|
|
Zitat
|