Copyright | Miika-Petteri Matikainen 2014 |
---|---|
License | GPL-2 |
Maintainer | miikapetteri@gmail.com |
Stability | experimental |
Portability | unknown |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Simple chess library for implementing chess games.
Synopsis
- type Board = Array Coordinates Square
- type Coordinates = (Int, Int)
- data Square
- data GameState
- currentPlayer :: GameState -> Color
- data Color
- data Piece = Piece Color PieceType
- data PieceType
- data Move
- board :: GameState -> Board
- fullMoveNumber :: GameState -> Integer
- isCheckmate :: GameState -> Bool
- isDraw :: GameState -> Bool
- isLegalMove :: GameState -> String -> Bool
- isStalemate :: GameState -> Bool
- move :: GameState -> String -> Maybe GameState
- newGame :: GameState
- pieceAt :: Board -> String -> Maybe Piece
- winner :: GameState -> Maybe Color
- legalMoves :: GameState -> [Move]
- applyMove :: GameState -> Move -> Maybe GameState
Documentation
type Coordinates = (Int, Int) Source #
Coordinate format:
(rank, file) (0,0) (0,7) +---> file | | v rank (7,0) (7,7) - +-------+-------+-------+-------+-------+-------+-------+-------+ 8 | (0,0) | (0,1) | (0,2) | (0,3) | (0,4) | (0,5) | (0,6) | (0,7) | +-------+-------+-------+-------+-------+-------+-------+-------+ 7 | (1,0) | (1,1) | (1,2) | (1,3) | (1,4) | (1,5) | (1,6) | (1,7) | +-------+-------+-------+-------+-------+-------+-------+-------+ 6 | (2,0) | (2,1) | (2,2) | (2,3) | (2,4) | (2,5) | (2,6) | (2,7) | +-------+-------+-------+-------+-------+-------+-------+-------+ 5 | (3,0) | (3,1) | (3,2) | (3,3) | (3,4) | (3,5) | (3,6) | (3,7) | +-------+-------+-------+-------+-------+-------+-------+-------+ 4 | (4,0) | (4,1) | (4,2) | (4,3) | (4,4) | (4,5) | (4,6) | (4,7) | +-------+-------+-------+-------+-------+-------+-------+-------+ 3 | (5,0) | (5,1) | (5,2) | (5,3) | (5,4) | (5,5) | (5,6) | (5,7) | +-------+-------+-------+-------+-------+-------+-------+-------+ 2 | (6,0) | (6,1) | (6,2) | (6,3) | (6,4) | (6,5) | (6,6) | (6,7) | +-------+-------+-------+-------+-------+-------+-------+-------+ 1 | (7,0) | (7,1) | (7,2) | (7,3) | (7,4) | (7,5) | (7,6) | (7,7) | +-------+-------+-------+-------+-------+-------+-------+-------+ a b c d e f g h
Instances
currentPlayer :: GameState -> Color Source #
Instances
fullMoveNumber :: GameState -> Integer Source #
Full move number. Incremented after black's move.
isCheckmate :: GameState -> Bool Source #
Has the game ended in checkmate
isDraw :: GameState -> Bool Source #
Is the game draw? I.e. is the game stalemate or is the game draw by insufficient material.
Is the given move legal. The only supported move format at the moment is coordinate notation.
isStalemate :: GameState -> Bool Source #
Has the game ended in stalemate
Make a move. The only supported move format at the moment is coordinate notation.
Get the piece at the given coordinate
legalMoves :: GameState -> [Move] Source #
Get all legal moves in the position