我正在用 Ruby 实现五子棋游戏,这是在 15x15 棋盘上玩的井字游戏的一种变体,第一个在水平、垂直或对角线上放置 5 个 O 或 X 的玩家获胜。
首先,我将 Matrix 分配给一个变量并用 0 到 224 的数字填充它,所以没有重复,我可以稍后计算它们
gomoku = Matrix.zero(15)
num = 0
15.times do |i|
15.times do |j|
gomoku[i, j] = num
num += 1
end
end
然后玩家轮流,每回合后我用方法检查胜利win?
def win? matrix
15.times do |i|
return true if matrix.row_vectors[i].chunk{|e| e}.map{|_, v| v.length}.max > 4 # thanks to sawa for this way of counting adjacent duplicates
return true if matrix.column_vectors[i].chunk{|e| e}.map{|_, v| v.length}.max > 4
end
return false
end
我知道,我可能做错了,但我的问题不在于,尽管欢迎提出建议。问题在于对角线行。我不知道如何计算对角行中的重复项