Ruby - Loop不会破坏

时间:2015-01-25 20:06:32

标签: ruby loops break

我已经在Ruby中为Odin Project(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

已修复我将代码更改为使用了1个Board实例,现在似乎正在运行。

1 个答案:

答案 0 :(得分:3)

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

但是更好地重构代码,以便.play不会创建新实例。