【发布时间】:2016-10-03 18:22:38
【问题描述】:
我用 Ruby 制作了一款井字游戏。下面的方法在垂直列中检查获胜者。
我怎样才能使这种方法可以应用于不同尺寸的电路板,如 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
【问题讨论】:
-
你注意到数组索引的模式了吗?
-
您的代码格式需要帮助。请努力格式化您的问题以提高可读性。它不仅可以帮助我们回答您,还可以帮助那些在未来寻找类似解决方案的人,这是 SO 的主要目标。
标签: ruby-on-rails ruby methods tic-tac-toe sos