well some ppl already had the idea for a chess ai contest.
i think that would be an interesting and challenging contest.
goal:
.) so the goal would simply be to create a chess ai routine.
.) the different ai versions would fight each other over internet.
.) winner is the ai version with most wins.
end of the contest:
31st september 2005
the interface:
in order for letting different ai versions fight each other some conventions must be followed.
so every participant MUST use the following definitions in order to provide an common interface:
THEY MUST BE C-STYLE IN ORDER TO HAVE A COMMON INTERFACE BETWEEN PARTICIPANTS WHO SOLVE THAT PROBLEM IN C AND THOSE WHO SOLVE IT IN C++.
typedef enum _EChessMan {
CM_NONE, // indicates empty field
CM_PAWN,
CM_KNIGHT,
CM_BISHOP,
CM_ROOK,
CM_QUEEN,
CM_KING
}ChessMan;
typedef enum _Move {
unsigned char x_from;
unsigned char y_from;
unsigned char x_to;
unsigned char y_to;
}Move;
thus the chess_ai_function prototype looks like:
THE CHESS AI FUNCTION DEFINITION ITSELF MUST BE C-STYLECode:Move chess_ai_function(EChessMan board[][]);
the internals though can be c++.
the participants may give any name to "chess_ai_function" but they MUST
use the return type and the argument type specified here.
the fight:
in order to determine the winner of the contest the ai routines are passes to a test environment.
all this environment does is
1) initialize a chess board
2) consult the ai routines of 2 participants in turn
3) check if they return valid moves (if not: abort, the ai which produced to invalid move automatically loses)
4) update the chess board
5) goto 2 until someone wins or there were more than 1000 moves
(this move limit is neccessariy in order to prevent endless loops)
so... what do you think?