Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

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

Re: Schach: Überprüfung, ob Zug erlaubt

  Alt 1. Aug 2006, 07:29
Ich würde mal versuchen, einen Zuggenerator zu entwerfen. Er erzeugt für alle Steine einer Farbe alle legalen Züge. Dieser Zuggenerator ist neben der Stellungsbewertung der zentrale Bestandteil eines Schach (oder Brettspiel-) Programmes.

So schwer ist das ja nicht.

Delphi-Quellcode:
Type
  TChessPos = Record
    cpRow, cpCol : Byte;
    End;
  TChessMove = Record
    cmPiece : TChessPiece;
    cmFrom,
    cmTo : TChessPos;
  End;

  TChessMoves : Array Of TChessMove;

Procedure MakeAllMoves (aBoard : TChessBoard; aColor : TChessColor; Var aMoveList : TChessMoves);
Var
  r,c : Integer;

Begin
  For r :=0 to 7 do
    For c := 0 to 7 do
       If aBoard[r,c].Color = aColor then
         Case aBoard[r,c].Piece Of
            ...
         End;
End;
Für jeden Spielstein (Bauer, Turm etc.) müssen dann eben einfach alle möglichen Züge durchprobiert werden. Klar kommt da Einiges zusammen, das ist ja gerade der Grund, warum erst jetzt, mit superparallelen und superschnellen Rechnen, ein Computer besser spielen kann, als ein Mensch.

Schach ist nun mal nicht trivial.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat