搜索字典
Searching a Dictionary
我一直在努力提高我的 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 中的字符串 <--Horizontally
- 3 "O" 或 "X" 位置 4、5、6 中的字符串 <--Horizontally
- 3 "O" 或 "X" 位置 7、8、9 中的字符串 <--Horizontally
- 3 "O" 或 "X" 位置 1、4、7 中的字符串 <--Vertically
- 3 "O" 或 "X" 位置 2、5、8 中的字符串 <--Vertically
- 3 "O" 或 "X" 位置 3、6、9 中的字符串 <--Vertically
- 3 "O" 或 "X" 位置 1、5、9 中的字符串 <--Diagonally
- 3 "O" 或 "X" 位置 3、5、7 中的字符串 <--Diagonally
我是否需要做一个大的嵌套 if 语句或案例集,或者有什么方法可以更有效地遍历它?
地图是一个相当奇怪的选择,但无论如何它都会起作用。您可以将所有获胜组合存储为 3 个数字,就像您已经拥有的那样,然后循环遍历它们,检查索引中的所有三个值是否匹配。然后通过检查这些值中的任何一个来确定谁赢了。
我建议创建一个 checkWin(int[] indexes)
方法来检查所有 3 个索引和 return true/false 它们是否匹配。然后遍历所有预制的获胜组合以检查是否获胜。
我一直在努力提高我的 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 中的字符串 <--Horizontally
- 3 "O" 或 "X" 位置 4、5、6 中的字符串 <--Horizontally
- 3 "O" 或 "X" 位置 7、8、9 中的字符串 <--Horizontally
- 3 "O" 或 "X" 位置 1、4、7 中的字符串 <--Vertically
- 3 "O" 或 "X" 位置 2、5、8 中的字符串 <--Vertically
- 3 "O" 或 "X" 位置 3、6、9 中的字符串 <--Vertically
- 3 "O" 或 "X" 位置 1、5、9 中的字符串 <--Diagonally
- 3 "O" 或 "X" 位置 3、5、7 中的字符串 <--Diagonally
我是否需要做一个大的嵌套 if 语句或案例集,或者有什么方法可以更有效地遍历它?
地图是一个相当奇怪的选择,但无论如何它都会起作用。您可以将所有获胜组合存储为 3 个数字,就像您已经拥有的那样,然后循环遍历它们,检查索引中的所有三个值是否匹配。然后通过检查这些值中的任何一个来确定谁赢了。
我建议创建一个 checkWin(int[] indexes)
方法来检查所有 3 个索引和 return true/false 它们是否匹配。然后遍历所有预制的获胜组合以检查是否获胜。