ExChess

ExChess is a, although still primitive, comprehensive implementation of the chess game rules in Elixir.

Installation

If available in Hex, the package can be installed by adding ex_chess to your list of dependencies in mix.exs:

def deps do
  [
    {:ex_chess, "~> 0.1.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/ex_chess.

Project structure

lib/*

lib
├── ex_chess
│   ├── board.ex
│   ├── fen.ex
│   ├── game.ex
│   ├── move.ex
│   ├── piece.ex
│   ├── square.ex
│   └── visualization.ex
├── ex_chess_core
│   ├── move_context.ex
│   ├── move_evaluation.ex
│   ├── move_generation.ex
│   ├── piece_patterns.ex
│   ├── piece_rules
│   │   ├── king_rules.ex
│   │   ├── knight_rules.ex
│   │   ├── linear_piece_rules.ex
│   │   └── pawn_rules.ex
│   ├── piece_rules.ex
│   ├── san.ex
│   ├── search.ex
│   └── state
│       ├── board_manager.ex
│       └── game_manager.ex
└── ex_chess.ex

The modules inside the ex_chess.ex file and ex_chess directory are the library's API, everything inside ex_chess_core is internal and only exposed via the ExChess module.