Ruby - 循环不会中断

Ruby - Loop will not break

我在 Ruby 中为 Odin 项目 (Tic Tac Toe) 编写了这段代码,当 @won 为真时它不会中断。我可以确认@won 正在成为现实,但它不会中断。完整代码位于 http://pastebin.com/GNJYC0hc

b = Board.init
b.create_squares
b.display_board
loop do
  if @turn == "player"
    print "Your turn! "
    b.player_turn
    b.display_board
    b.check_for_win
    @turn = "computer"
  else
    sleep 1.2
    b.computer_turn
    b.display_board
    b.check_for_win
    @turn = "player"
  end
  break if @won
end

FIXED 我更改了代码以使用 Board 的 1 个实例,它现在似乎可以正常工作了。

你的代码有点奇怪。您正在创建 2 个棋盘对象 - 您在第一个实例中调用 .play,然后在 play 方法中创建另一个,所有游戏逻辑都在第二个实例中执行。所以你应该做 break if b.won.

但最好重构您的代码,这样 .play 就不会创建新实例。