Skip to content

A straightforward chess engine, implemented in Java, along with a simple command-line-based user interface.

Notifications You must be signed in to change notification settings

benheckmann/cli-chess-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

Chess Engine

A simple chess engine, based on an alpha–beta search, implemented in Java.

The engine evaluates a given position by combining the (weighted) piece values with constants representing favorable regions for each piece type (e.g. a knight is likely more valuable in the center than at the edge), as well as some special cases. The minimax search for the best move is optimized by alpha-beta pruning, iterative deepening and transposition tables (storing previously evaluated positions under their Zobrist hash).

It can be played directly on the command line. The user inputs a move using long algebraic notation (e.g. "e2e4"). The current game state is then printed in unicode.

Example:

Computer chose move: c1c4
  ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
8 ║   │   │   │   │   │   │ ♚ │   ║
  ╟───┼───┼───┼───┼───┼───┼───┼───╢
7 ║   │   │   │   │   │   │ ♟ │   ║
  ╟───┼───┼───┼───┼───┼───┼───┼───╢
6 ║   │   │   │   │   │   │   │ ♟ ║
  ╟───┼───┼───┼───┼───┼───┼───┼───╢
5 ║ ♙ │   │   │   │   │   │   │   ║
  ╟───┼───┼───┼───┼───┼───┼───┼───╢
4 ║   │   │ ♖ │   │   │   │   │   ║
  ╟───┼───┼───┼───┼───┼───┼───┼───╢
3 ║   │   │   │   │   │   │   │ ♙ ║
  ╟───┼───┼───┼───┼───┼───┼───┼───╢
2 ║ ♜ │   │   │   │   │   │   │   ║
  ╟───┼───┼───┼───┼───┼───┼───┼───╢
1 ║   │   │   │   │   │   │ ♔ │   ║
  ╚═══╧═══╧═══╧═══╧═══╧═══╧═══╧═══╝
    a   b   c   d   e   f   g   h  

Enter next move for white: 
...

To play, run the main method of the GameManager class. The program will read the player type for both players before starting the game. The maximum search depth as well as a delay can be set as constants in the Search class.

Resources: https://www.chessprogramming.org/Main_Page https://github.com/MartinMSPedersen/Crafty-Chess

About

A straightforward chess engine, implemented in Java, along with a simple command-line-based user interface.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages