1
我在Ruby中製作了Tic-Tac-Toe遊戲。下面的方法檢查垂直列中的勝者。如何使一般方法檢查Tic-Tac-Toe中的獲勝者
我該怎麼做才能使這種方法適用於不同尺寸的板子,比如4x4,6x6?
def vertical_check(array)
result = nil
if (array[0][0] == "X" && array[1][0] == "X" && array[2][0] == "X") ||
(array[0][1] == "X" && array[1][1] == "X" && array[2][1] == "X") ||
(array[0][2] == "X" && array[1][2] == "X" && array[2][2] == "X")
result = "X"
elsif (array[0][0] == "O" && array[1][0] == "O" && array[2][0] == "O") ||
(array[0][1] == "O" && array[1][1] == "O" && array[2][1] == "O") ||
(array[0][2] == "O" && array[1][2] == "O" && array[2][2] == "O")
result = "O"
else
result = nil
end
return result
end
下面是一個失敗的嘗試:
def vertical_check_x(array)
result = nil
index = 0
index2 = 0
until result != nil || index == array.length
while array[index][index2] == "X"
index += 1
end
if index == array.length
result = "X"
else
result = nil
index = array.length
end
index2 += 1
end
return result
end
def vertical_check_o(array)
result = nil
index = 0
index2 = 0
until result != nil || index == array.length
while array[index][index2] == "O"
index += 1
end
if index -1 == array.length
result = "O"
else
result = nil
index = array.length
end
index2 += 1
end
return result
end
def vertical_check(array)
result = vertical_check_x(array)
if result == nil
result = vertical_check_o(array)
end
return result
end
你注意到數組下標的模式嗎? – code11
http://stackoverflow.com/questions/18548265/testing-tic-tac-toe-win-condition – zaingz
您的代碼格式化需要幫助。請儘量爲可讀性設置問題格式。它不僅幫助我們回答你,而且幫助那些未來尋找類似解決方案的人,這是SO的主要目標。 –