Skip to content

Repository files navigation

HexCheckers Engine

This library implements rules and provides simple AI for HexCheckers game.

Examples

Board
val board =Board(Board.Size.SIZE_6X6, true)
println(board.toAscii())
 ___ ___ ___
___/ b \___/ b \___/ b \
6 / b \___/ b \___/ b \___/
\___/ b \___/ b \___/ b \
5 / b \___/ b \___/ b \___/
\___/ \___/ \___/ \
4 / \___/ \___/ \___/
\___/ \___/ \___/ \
3 / \___/ \___/ \___/
\___/ a \___/ a \___/ a \
2 / a \___/ a \___/ a \___/
\___/ a \___/ a \___/ a \
1 / a \___/ a \___/ a \___/
\___/ \___/ \___/
a b c d e f
Move
val move = board.buildMove("d2-c3")
board.executeMove(move)
println(board.toAscii())
 ___ ___ ___
___/ b \___/ b \___/ b \
6 / b \___/ b \___/ b \___/
\___/ b \___/ b \___/ b \
5 / b \___/ b \___/ b \___/
\___/ \___/ \___/ \
4 / \___/ \___/ \___/
\___/ \___/ \___/ \
3 / \___/ a \___/ \___/
\___/ a \___/ \___/ a \
2 / a \___/ a \___/ a \___/
\___/ a \___/ a \___/ a \
1 / a \___/ a \___/ a \___/
\___/ \___/ \___/
a b c d e f
AI
val ai =Ai(board)
move = ai.findBestMove(Piece.Color.B)!!println(move)
board.executeMove(move)
println(board.toAscii())
b5-b4
___ ___ ___
___/ b \___/ b \___/ b \
6 / b \___/ b \___/ b \___/
\___/ \___/ b \___/ b \
5 / b \___/ b \___/ b \___/
\___/ b \___/ \___/ \
4 / \___/ \___/ \___/
\___/ \___/ \___/ \
3 / \___/ a \___/ \___/
\___/ a \___/ \___/ a \
2 / a \___/ a \___/ a \___/
\___/ a \___/ a \___/ a \
1 / a \___/ a \___/ a \___/
\___/ \___/ \___/
a b c d e f

Simple game

importcom.hexcheckers.engine.*importjava.util.Scannerfunmain() {
println("Welcome to HexCheckers 6x6 game!")
val board =Board(Board.Size.SIZE_6X6, true)
println(board.toAscii())
val ai =Ai(board)
var currentTurn =Piece.Color.Aval scanner =Scanner(System.`in`)
while (true) {
val availableMoves = board.getAvailableMoves(currentTurn)
if (availableMoves.isEmpty()) {
println("${getInvertedColor(currentTurn)} win!")
break
}
var move:Move?=nullif (currentTurn ==Piece.Color.A) {
while (move ==null) {
print("👨 Enter your move: ")
val input = scanner.nextLine()
try {
move = board.buildMove(input)
} catch (e:Exception) {
println("❌ Incorrect input")
}
}
} else {
print("🤖 Ai move: ...")
move = ai.findBestMove(currentTurn)
println("\b\b\b$move")
}
board.executeMove(move!!)
println(board.toAscii())
currentTurn = getInvertedColor(currentTurn)
}
}

Game demo

About

HexCheckers game engine

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages