搜索字典

时间:2015-04-02 09:36:29

标签: java for-loop dictionary hashmap

我一直在努力提高自己的Java技能,并决定创建一个Noughts and Crosses游戏。我正在尝试实现胜利条件,因此游戏可以判断“ai”或人类是否赢了,并结束游戏。

数据作为键值对存储在HashMap中。整数是位置,字符串是它包含的内容。该字符串将为"""O""X"

表示位置的整数:

1 2 3
4 5 6
7 8 9

显示数据库初始化的代码:

Map<Integer, String> database = new HashMap<Integer, String>();

无论如何,我正在尝试找出搜索这本词典的最佳方法,检查以下任何一个胜利条件:

  • 3“O”或“X”字符串位置1,2,3&lt; - 水平
  • 3“O”或“X”字符串位置4,5,6&lt; - 水平
  • 3“8”中的“O”或“X”字符串&lt; - 水平
  • 3“O”或“X”字符串位置1,4,7&lt; - 垂直
  • 3“O”或“X”字符串位置2,5,8&lt; - 垂直
  • 3“6”中的“O”或“X”字符串&lt; - 垂直
  • 3“O”或“X”字符串位置1,5,9&lt; - 对角线
  • 3“,5”中的“O”或“X”字符串&lt; - 对角线

我是否必须执行大型嵌套if语句或大小写集,或者有没有办法可以更有效地遍历这个?

1 个答案:

答案 0 :(得分:1)

地图是一个相当奇怪的选择,但它无论如何都会起作用。你可以将所有获胜组合存储为3个数字,就像你已经拥有的那样,然后循环遍历它们,检查索引中的所有三个值是否匹配。然后通过检查任何这些值来确定谁赢了。

我建议创建一个checkWin(int[] indexes)方法来检查所有3个索引,并返回true / false以确定它们是否匹配。然后循环完成所有预先制作的获胜组合以检查获胜。