我已经在Ruby中为Odin项目(井字游戏)编写了一些代码,并且@won为true时,它不会中断。我可以确认@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
固定我更改了代码以使用Board的1个实例,并且现在似乎可以正常工作。
您的代码很奇怪。您正在创建2个棋盘对象-您.play
在第一个实例上调用,然后创建另一个内部play
方法,并且所有游戏逻辑都在第二个实例上执行。所以你应该做break if b.won
。
但是最好重构代码,以使.play不会创建新实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句