我可以玩游戲。切換玩家一切正常,但沒有得到贏得比賽的結果。
def initialize_board
@count = 9
@player = PLAYER_ONE #current_player
@board = Array.new(3){ Array.new(3, " ") }
end
def play
inputs = get_inputs
return false if !inputs
update_board(inputs)
print_board
end
def switch_player
if(@player == PLAYER_ONE)
@player = PLAYER_TWO
else
@player = PLAYER_ONE
end
end
def game_over?
# @count = @count - 1
# @count <= 0
if check_winner
puts "#{@player} won "
end
end
def check_winner
WIN_COMBINATIONS.find do |indices|
binding.pry
values = @board.values_at(*indices)
values.all?('X') || values.all?('O')
end
end

在這里,我在除錯時在所有情況下都得到索引 [0,1,2]。
uj5u.com熱心網友回復:
您沒有獲勝的主要原因是您的'values = @board.values_at(*indices)'陳述句回傳了一個陣列陣列。并且values.all?('X') || values.all?('O') 檢查的不是“X”或“O”模式,而是陣列物件。所以你需要先展平一個陣列。
values.flatten!
Stefan 已經回答了類似的問題,但是由于 %w 運算式,他的棋盤是一維的,你可以在這里閱讀
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/418363.html
標籤:
上一篇:向哈希陣列添加新鍵
下一篇:為什么有人喜歡將類方法定義為`moduleSomeModuleextendself`而不是`classSomeClass;defself.method`?
