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 就不会创建新实例。
我在 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 就不会创建新实例。