This is a normal sbt project. You can compile code with sbt compile
, run it with sbt run
, and sbt console
will start a Scala 3 REPL, sbt test
to run tests. You can also make sbt watch file changes and rerun each time using ~
(sbt ~run
, sbt ~test
).
For more information on the sbt-dotty plugin, see the scala3-example-project.
This project implements the game of chess with a CLI interface to play the game.
Tracks the state of the board, including:
- Piece placement on the board
- Metadata about the board state
- Whose turn it is
- Castling rights
- En passant availability
- Analysis methods for:
- Is the player in check
- Is the player checkmated
- What squares are under attack by either player
Methods:
lazy val isInCheck: Boolean
lazy val isCheckmated: Boolean
def sq(coords: Coords): PieceType
def sq2(coords: Coords): (PieceType, Color)
def positions: Seq[Coords]
def positions(color: Color): Seq[Coords]
def move(from: Coords, to: Coords): Option[ChessBoard]
def isLegal(from: Coords, to: Coords): Boolean
def attacked: BitBoard // Attacked by the playing player
def attacked(color: Color): BitBoard
def isAttacked(coords: Coords): Boolean
def isOccupied(coords: Coords): Boolean
def isOccupiedBy(color: Color, coords: Coords): Boolean
def theoreticalMoves(coords: Coords): BitBoard
def legalMoves(coords: Coords): BitBoard
Methods:
lazy val isFinished: Boolean
lazy val result: Result
def move(move: Move): Either[String, Game]
- Scalatest - for Unit Testing