From 7e3d031bc61d2fae863c7ebb563013dcd209057d Mon Sep 17 00:00:00 2001 From: Trevor Slocum Date: Thu, 30 Nov 2023 11:17:47 -0800 Subject: [PATCH] Fix hitting checkers --- board.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/board.go b/board.go index 93342b7..70ec711 100644 --- a/board.go +++ b/board.go @@ -8,7 +8,7 @@ import ( ) const ( - blotWeight = 1.5 + blotWeight = 1.0 hitWeight = -1.0 oppScoreWeight = -0.5 ) @@ -73,6 +73,11 @@ func (b Board) Move(from int, to int, player int) Board { } else if b[to] != 0 { if (player == 1 && b[to] == -1) || (player == 2 && b[to] == 1) { b[to] = 0 + if player == 1 { + b[SpaceBarOpponent] -= 1 + } else { + b[SpaceBarPlayer] += 1 + } } else if (player == 1 && b[to] < 0) || (player == 2 && b[to] > 0) { b.Print() log.Panic("illegal move: existing checkers at to space", from, to, player, b[to]) @@ -228,7 +233,11 @@ func (b Board) Available(player int) [][]int { moves = append(moves, []int{from, to}) } } else { // TODO clean up - for to := from + 1; to <= 25; to++ { + start := from + 1 + if from == SpaceBarOpponent { + start = 0 + } + for to := start; to <= 25; to++ { if to == SpaceBarPlayer || to == SpaceBarOpponent || to == SpaceHomeOpponent || (to == SpaceHomeOpponent && !mayBearOff) { continue } @@ -255,12 +264,12 @@ func (b Board) Pips(player int) int { if player == 1 { spaceValue = float64(space) if space <= 6 { - spaceValue /= 10 + spaceValue /= 2 } } else { spaceValue = float64(25 - space) if space >= 19 { - spaceValue /= 10 + spaceValue /= 2 } } pips += float64(b.Checkers(space, player)) * spaceValue @@ -277,9 +286,9 @@ func (b Board) Blots(player int) int { continue } if player == 1 { - spaceValue = space - } else { spaceValue = 25 - space + } else { + spaceValue = space } pips += int(checkers) * spaceValue }