Skip to content

kortirso/chess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.2"}
  ]
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

Pion's promotion

Add third option if pion 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
  • Pion's en passant
  • Castling
  • Checkmate
  • Checking possible checkmate for next turn
  • Pion'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.