Here are examples of all move types it needs to be able to generate:
Qe5 (ordinary move)The notation follows simple rules and is quite easy to extract in all areas but one; the check for two pieces being able to reach the same square. We can not extract this from the move-object alone.
e4 (pawn move)
cxb4 (pawn capture)
exd6 e.p. (en passant capture)
e8=Q (promotion to queen)
cxd1=R (capture and promotion to rook)
Red4 (rook on e to d4, two rooks on same row)
N4c5 (knight on 4 to d4, two knights on same rank)
0-0 (short castle)
0-0-0 (long castle)
I will not implement a check for the two pieces case right now. Mainly because I want to keep it simple and it is not really nescessary since we will be able to see the moves get generated correctly anyhow.
The reason I am going to use short notation here is because it is the easiest kind to read (atleast for me). If we were to use long notation we would not have to worry about the two pieces case since it holds the square the piece is moving from. But as said, this is done for easily getting an overview of the moves generated.
Later on when we are inputting moves into WinBoard (which I am going to use to let Mediocre play online) we will be using another notation, namely:
e4h8 (whatever piece is on e4, moves to h8In this notation we do not need to worry about captures or en passant or castling. WinBoard keeps track of what pieces are where, so when we enter this notation it makes the right move.
e1g1 (if king on e1 it turns into a castle)
c7c8=Q (promotion to queen)
2006-12-23 - Added a line about why using short notation instead of long.