java - 井字游戏电脑玩家(非 AI)

标签 java acm-java-libraries

我是一名大学生(一年级),我有一项任务是使用 ACM 库制作一款 Tic Tac Toe 主机游戏。我设法让它工作 Player VS Player。这项任务的另一部分要求我让它像 Player VS Computer 一样工作。老师告诉我们不要创造一个人工智能,而是让计算机总是赢或平。我该如何实现?我不认为使用大量 if 和 else 来实现它是不可能的。有没有更聪明的方法?

我创建了一个名为 Board 的构造函数,它具有创建、显示、更新游戏板、检查 X 或 O 是否获胜(或平局)以及检查用户输入的字符串(In为了玩,用户必须键入类似(row_space_column ---> 示例:“3 1”)的内容。我还创建了另一个文件(“TicTacToe.java”),它是游戏本身。

那么,你有什么看法呢? (我使用的语言是JAVA) (对不起我的英语,我是希腊人) 谢谢!

最佳答案

Tic-Tac-Toe 是 AI 编程的一个很好的例子,因为可能的移动数量相对较少。

此外,如果您玩得完美(您的 AI 希望做到的),您将永远获胜或打成平局。

您可以很容易地测试每一个可能的 Action ,直到有人获胜 - 然后您采取最佳 Action 。

也许你应该看看 MinMax Algorithm

还有很多 Tic-Tac-Toe 算法的示例实现。 (如果你想要,我可以给你一个 Pascal :D )

编辑:我found关于制作 Tic-Tac-Toe AI 的非常好的教程。

关于java - 井字游戏电脑玩家(非 AI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21551476/

相关文章:

java - 迭代反射的子类,变量似乎没有阴影,IntelliJ 似乎有冲突

java - 如何使用 ACM 库 (ConsoleProgram) 编写 Java 程序?

java - 错误:Execution failed for task ':app:transformClassesWithAndroidGradleClassShrinkerForDebug'

java - 如何删除一个框以继续 java 中的 'for' 循环?

java - 在类的构造函数中初始化的实例变量在重写方法中变为 null

java - 从终端利用 acm.program 包运行 java 脚本

java - 返回两个字符串不同的第一个位置

java - 程序可以区分用户键输入和程序键输入吗?

java - 仅显示异常类型及其原因,而不是发生异常时的整个堆栈跟踪,而是显示在日志文件中

java - java中使用一个管理员帐户接收所有帐户的邮件