我已经在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实例,现在似乎正在运行。
答案 0 :(得分:3)
你的代码很奇怪。您正在创建2个板对象 - 在第一个实例上调用.play
,然后在play
方法中创建另一个,并在第二个实例上执行所有游戏逻辑。所以你应该做break if b.won
。
但是更好地重构代码,以便.play不会创建新实例。