Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tic-Tac-Toe电脑播放器(非人工智能)_Java_Acm Java Libraries - Fatal编程技术网

Java Tic-Tac-Toe电脑播放器(非人工智能)

Java Tic-Tac-Toe电脑播放器(非人工智能),java,acm-java-libraries,Java,Acm Java Libraries,我是一名大学生(一年级),我有一项任务,要使用ACM图书馆制作一个Tic-Tac-Toe控制台游戏。我设法让它在玩家对玩家的比赛中发挥作用。这项任务的另一部分要求我让它像玩家对电脑一样工作。老师告诉我们不要创造人工智能,而要让电脑永远赢或平。我如何实现这一点?我不认为使用大量的if和else来实现这一点是可能的。有没有更聪明的办法 我已经创建了一个名为Board的构造函数,它拥有创建、显示、更新游戏板所需的所有方法,用于检查X或O是否获胜(或平局),以及检查用户输入的字符串(为了玩游戏,用户必须

我是一名大学生(一年级),我有一项任务,要使用ACM图书馆制作一个Tic-Tac-Toe控制台游戏。我设法让它在玩家对玩家的比赛中发挥作用。这项任务的另一部分要求我让它像玩家对电脑一样工作。老师告诉我们不要创造人工智能,而要让电脑永远赢或平。我如何实现这一点?我不认为使用大量的if和else来实现这一点是可能的。有没有更聪明的办法

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

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

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

此外,如果你踢得很好(你的AI希望做到的),你将永远获胜或打成平局

你可以很容易地测试每一个可能的动作,直到有人获胜——然后你采取最佳的动作

也许你应该看看这本书

还有很多Tic-Tac-Toe算法的示例实现。(如果你愿意,我可以给你一个帕斯卡:D)


编辑:我有一个非常好的关于制作Tic-Tac-Toe人工智能的教程。

前提:每一个通过将其行为调整到问题的特定实例来解决一般问题的算法都被认为是一个智能代理,即使它是由一个if语句组成的

鉴于此,您的作业定义不明确,无论如何,我尝试给您一些提示:

  • ,可能使用
  • 解决问题
  • 构建一个ad-hoc算法,如

我认为使用大量的if和else实现这一点是不可能的。Tic tac toe是一个原始的游戏(我不会称之为游戏,因为不输的策略是)。最简单的选择是“研究”一个不丢失的策略,然后创建一个包含你应该做的动作的查找表。像空板和对手的棋子在中间——在角落里移动。之后,你只需要检查对手是否有两个在一排。勾选此项:“老师告诉我们不要创建人工智能,而要让计算机始终获胜或平局”。人工智能不是一个“组件”,而是一门完整的学科,就像数学一样。所以你应该用“创建AI”来定义你的意图,指定什么是允许的,什么是不允许的。@NeplatnyUdaj Tic Tac Toe是一个游戏。相关xkcd:@MichaelMadsen我希望能够对评论进行投票!“你的AI希望做什么”应该是“假设你的AI也做同样的事情”,否则这个断言是不正确的。你是对的——ki赢了,玩家输了。不是另一种方式:D