feat(rules): add draw detection
This commit is contained in:
1 parent
2a9bf0c22f
commit
f465bdecae
1 file changed
+24
+24
@@ -0,0 +1,24 @@
|
|||||||
|
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
|
||||||
Reference in new issue
Block a user