Nino was my first 'serious' programming project. I started to write it in my second year of university because I love chess ever since I was a kid, I had learned C and I wanted to challenge myself.
Found it laying around and decided to dust it off and post it.
It partially implements the CECP protocol so it has been tested with XBoard, WinBoard and Arena on Windows.
Just use make under linux/windows or use the compile.bat script.
$ cd src
$ make
=
or set
Sets the board to the initial state
/
or boardinfo
prints the current state of the board and other information
xxxx
An algebraic notation chess move (a-h)(1-8)(a-h)(1-8). It just makes that move on the board
; n
, play n
or search n
starts the chess engine to find a move using a max ply of n
\ n
or think n
start the chess engine to run for n seconds reaching the maximum ply posible. If no n is supplied default time to think is 5 seconds.
-
or undo
Undo the last move
fen
Prints the fen notation string for the position
clear
clears the terminal
debug
Turn debug mode on
perft n
to run a performance test with a n ply depth
epdtest file
Read file (an epd file) and does a performance with the test file supplied
exit
, bye
or quit
to exit the program
eval
Evaluates position and outputs the result
h
or hash
Outputs the hash for the position
see sq
Evaluates SEE for the sq (0-63) Square
,
or moves
Show all available moves
<
or captures
Generates and outputs all captures
attacked
Prints a Board with all atacked squares
+escape
Generates and outputs moves that escape from check
order
Orders available moves (according to some heuristic I can't remember) and outputs them
- Chess Engine Comunication Protocol
- Bit Twidiling
- Bitboards
- Minimax algorithm
- Alpha Beta Prunning
- Pthreads
- Iterative deepening
- Quiescence Search
- Hashing, Trasposition tables
- FEN parsing
Linux terminal mode
Executing on Arena for windows
yes