typedef struct { char position[65]; } POSITION_T; class ChessScoreKeeper { public: ChessScoreKeeper(); ~ChessScoreKeeper(); void newGame(); void gameOver(int Result); int move(char *lpszMove); int isGameInProgress(); int isWhitesMove(); char *getMoves(); private: int move(int intSource, int intDest, char cPromotionPiece); int IsPawnMove(int intSource, int intDest, char cPromotionPiece); int IsKnightMove(int intSource, int intDest); int IsBishopMove(int intSource, int intDest); int IsRookMove(int intSource, int intDest); int IsQueenMove(int intSource, int intDest); int IsKingMove(int intSource, int intDest); int IsAFile(int intSquare); int IsBFile(int intSquare); int IsCFile(int intSquare); int IsDFile(int intSquare); int IsEFile(int intSquare); int IsFFile(int intSquare); int IsGFile(int intSquare); int IsHFile(int intSquare); int IsBoardTop(int intSquare); int IsBoardBottom(int intSquare); int IsLightSquare(int intSquare); int IsAttacked(int intSquare); int IsInCheck(); int CheckForMate(); void StoreMove(int intSource, int intDest, char cPromotionPiece, int bIsCapture, int bMate); void FreeMoves(); // data char position[64]; int bGameIsInProgress; int bIsWhitesMove; int bWhiteCantKCastle; int bWhiteCantQCastle; int bBlackCantKCastle; int bBlackCantQCastle; int bEnPassent; int intLastSource; int intLastDest; char cLastPiece; char *moves[200]; int intMoveNumber; vector vPositions; };