Bug fix for Ruby version of Checkers

We were using the result of Board.make_move!() to determine whether
the current player could jump again.  This worked by accident but was
not part of the specified interface.

I've changed the code to ignore the return value and instead query the
move object itself.
This commit is contained in:
Chris Reuter
2021-11-29 13:37:56 -05:00
parent 3c7a14c8ef
commit 40becf6e66

View File

@@ -139,10 +139,10 @@ def my_turn(board, jumpStart = nil)
# Do the move
puts "My move: #{bestMove}"
canMoveAgain = board.make_move!(bestMove)
board.make_move!(bestMove)
# Repeat (recursively) if we can make another jump
my_turn(board, bestMove.to) if canMoveAgain
my_turn(board, bestMove.to) if bestMove.jump?
# No loss yet!
return true
@@ -182,8 +182,8 @@ def players_turn(board)
return false if !from && !move
return true if from && !move
canMoveAgain = board.make_move!(move)
return true unless canMoveAgain
board.make_move!(move)
return true unless move.jump?
# If the player can jump again, repeat from the new position.
from = move.to