c# - 使用 C# 的 Tic-Tac-Toe 中的人工智能

标签 c# artificial-intelligence

我做了一个Tic-Tac-Toe 2 名玩家的游戏。现在,我想给游戏人工智能。

这样游戏就可以在1 位玩家和计算机之间玩了。
请帮助我如何开始?

最佳答案

Tic Tac Toe 与其说是一个人工智能,不如说是一个查找表:对于每个可能的棋盘布局,找到最佳位置。

XKCD has such a lookup table .基本上每个电路板布局都有一个唯一的 ID 和设置下一个标记的字段地址。维基百科有 that table另一种格式。

表格是这样工作的:X 在前,然后是 O。 X 将他的 X 放入 9 个单元格之一。当 O 消失时,现在有 9 种可能的电路板布局,具体取决于哪个 Cell 具有 X:

 X  |    |
----+----+----
    |    |
----+----+----
    |    |

如果你看O的 map ,里面有9个大格子,左上角的那个在左上角有X,所以就用那个。将 O 放在中间。

现在当X再去的时候,它需要找到这个棋盘布局:

 X  |    |
----+----+----
    | O  |
----+----+----
    |    |

你会在中间找到这个。红色是在 XKCD 图像中放置 X 的位置,这表明您将其放置在右下方:

 X  |    |
----+----+----
    | O  |
----+----+----
    |    | X 

现在,O又去找上面的棋盘布局,在左上角大格子的右下角小格子里。 O需要放在中间底部:

 X  |    |
----+----+----
    | O  |
----+----+----
    | O  | X 

等等。该图是嵌套的,起初有点难以阅读(单击它可放大),但如前所述:您创建了一个查找表,其中包含每个独特的电路板布局和放置下一个标记的信息。

但这创造了一个完美的对手:计算机永远不会输。如何让他更人性化就是微调(例如,随机丢弃选择并将标记放在随机单元格中)

关于c# - 使用 C# 的 Tic-Tac-Toe 中的人工智能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366858/

相关文章:

c# - 如何解决 IronPython Compile() 问题?

c# - 确定所选电子邮件是来自收件箱还是已发送邮件

c# - 如何将特定数据存储到带有类的列表中

C#异步等待实现

algorithm - 测量数据质量的技术和实践是什么?

java - A* 中的曼哈顿距离

python - 可以在没有屏幕的情况下运行 Pymunk 模拟(就像没有实际看到它一样)?

machine-learning - CNN 中先前的激活图如何影响下一个激活图

machine-learning - 使用机器学习来预测复杂系统的崩溃和稳定?

c# - 是整数吗?值类型还是引用类型?