I'm using gnuchess to decide which move a program should make, and I'm using its output to control a robot arm (to execute the move on a real board).
However, gnuchess outputs SAN (Standard Algebraic Notation), such as "Nf3". To control the robot arm, it would be much more helpful to have a coordinate-based notation, such as "g1-f3".
My question is:
- Is there a way to get gnuchess to output coordinate-based notation? I know it can accept such notation as input (human-supplied move).
-or-
- Is there existing software (or detailed algorithm) that takes (a) a SAN move (b) a .eps board and produces: (c) a coordinate-based move?
I use Linux, and here is how I get gnuchess to make its (SAN) move recommendation:
Use gnuchess to decide on next move.
- reads current position from file named $1 (.epd format)
- decides what move to make (as white), using gnuchess
- prints out move
also stores resulting board in dgt.chess.nextpos (.epd format)
rm -f dgt.chess.nextpos printf "solveepd $1\nepdsave dgt.chess.nextpos\nquit\n" |\ gnuchess |\ grep -a 'My move is' |\ sed 's/My move is : //'