【发布时间】:2016-10-12 09:46:21
【问题描述】:
我一直在开发一个用 Ruby 编写的命令行 Tictactoe 游戏。 (不记得规则的请see here)
我见过的几乎所有示例实现都使用多维数组来表示Board 结构。就像[[1,2,3], [4,5,6], [7,8,9]]。 (Here is an example)
但是,在看到任何其他解决方案之前,我先使用哈希实现。我用字母 (A,B,C) 表示列,用数字 (1,2,3) 表示行,并将“X”或“O”设置为值。游戏中的示例实现:
{:a1=>"X", :b2=>"X", :c3=>"X", :b1=>"O", :c1=>"X", :c2=>"O", :b3=>"X", :a2=>"O", :a3=>"X"}
(每次移动时,我都会将新位置添加到此哈希中。它是一种单元格网格。在 ASCII 表中易于可视化。)
在我开始寻找确定获胜位置的方法之前,一切都感觉很好。但是现在我一直在寻找一种好方法来使用我的哈希来确定它是否是赢家。
您能告诉我如何使用哈希解决问题吗?和/或您能否解释一下为什么在这种特定情况下使用散列而不是多维数组是个坏主意?
这是检查它是否是赢家位置的一种看起来很糟糕的方法(对于单个场景..):
def check_status
if(@@cells[:a1] == "X" && @@cells[:a2] == "X" && @@cells[:a3] == "X")
false # game will end
else
true # game will continue
end
end
【问题讨论】:
标签: ruby data-structures hashmap