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.