25 lines
722 B
Scala
25 lines
722 B
Scala
package gambit
|
|
|
|
object Draw:
|
|
def isFiftyMove(pos: Position): Boolean = pos.halfmove >= 100
|
|
|
|
def isInsufficientMaterial(pos: Position): Boolean =
|
|
var minors = 0
|
|
var sq = 0
|
|
while sq < 128 do
|
|
if Square.onBoard(sq) then
|
|
Piece.typeOf(pos.board(sq)) match
|
|
case Piece.Pawn | Piece.Rook | Piece.Queen => return false
|
|
case Piece.Knight | Piece.Bishop => minors += 1
|
|
case _ => ()
|
|
sq += 1
|
|
minors <= 1
|
|
|
|
def isThreefold(history: collection.Seq[Long], current: Long): Boolean =
|
|
var count = 0
|
|
var i = 0
|
|
while i < history.length do
|
|
if history(i) == current then count += 1
|
|
i += 1
|
|
count >= 3
|