Chess
Chess package for playing chess, with game logics, validations.
Installation
If available in Hex, the package can be installed
by adding chess
to your list of dependencies in mix.exs
:
def deps do
[
{:chess, "~> 0.4.1"}
]
end
Start new game
# start new game
Chess.new_game()
# or initialize game from FEN-notation
Chess.new_game("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
New game will be created with squares and figures, FEN-notation, and game's status
Make move
Chess.play(%Chess.Game{}, "e2-e4")
After valid move game object will contain new figure's position and FEN-notation
Pawn's promotion
Add third option if pawn achives last line, one from [q|n|r|b], default - q
Chess.play(%Chess.Game{}, "e7-e8", "q")
Castling
To make castling move:
Chess.play(%Chess.Game{}, "0-0")
Chess.play(%Chess.Game{}, "0-0-0")
TODO
- Create game
- Create game from FEN-notation
- Figure movements
- Castling
- Checkmate
- Checking possible checkmate for next turn
- Pawn's promotion at last line
- Draw
- Using PGN
- Manual change game's status
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/kortirso/chess.
License
The package is available as open source under the terms of the MIT License.
Disclaimer
Use this package at your own peril and risk.
Documentation
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/chess.