当前位置: 首页 > 知识库问答 >
问题:

蛇游戏人工智能

微生欣怡
2023-03-14

我正在为iOS开发一个贪吃蛇游戏:https://github.com/ScottBouloutian/Snake

我的目标是让AI以最佳方式完成蛇的游戏(让蛇填满棋盘)。

我正在使用IDA*找到一条从蛇当前位置到食物的路径。这是有效的。然而,该算法没有考虑到它将来可能需要获得更多食物的事实。因此,有时它倾向于把自己框起来。

也就是说,蛇在任何给定时间的目标都是找到食物,而它的目标应该是填满棋盘(一路上找到食物)。

如何添加或修改此方法以使AI赢得贪吃蛇游戏?我应该使用更好的方法吗?我只是想出一些想法。谢谢!

共有1个答案

越国源
2023-03-14

如果一个电路板是一个静态矩形(不是圆环形,所以不跨越边界),那么唯一的最佳策略是找到一组最长的闭合电路板路径,这样电路板中的每个点都至少位于一条路径中。

如果一个板是空的(没有障碍物),那么表单中存在一条“终极”路径

 16|.1|.6|.7
 15|.2|.5|.8
 14|.3|.4|.9
 13|12|11|10

它穿过所有的瓷砖,遵循这种模式的蛇最终会吃掉所有的食物,并填满整个木板

如果有一些障碍,那么这样的路径不一定存在,那么当食物出现在当前路径的不可到达点时,你应该找到这样的最长路径的集合,并在它们之间切换。

例如

#######
#.....#
#.#.#.#
#.....#
#######

在这里,您必须考虑两条路径,一条最长的,绕过整个棋盘,但缺少中心点,以及一条穿过它的小循环。只要食物没有出现在中心,就应该使用外环。希望,如果你填满所有剩余的方块时食物出现在中心——你会“赢”。如果它更早出现在那里 - 你必须吃掉它(切换到另一个循环)并根据你当前的长度 - 你会回到最好的循环,或者撞到你的尾巴并“输”。在每种情况下,您的分数都将是在这个食物位置上取得的最佳成绩。

非基于A*的方法会找到最优,这是完全不同的问题,你应该寻找最长的封闭路径,而不是最短的。

 类似资料:
  • 我们正在开发一个基于Blokus游戏的Java小游戏。Blokus手册 我是Java初学者,计划实现一个高级人工智能。我们已经有了一个随机AI(选择一个随机有效的移动)和一个带有简单移动评级机制的AI。我们也想要一个尽可能好的人工智能(或者至少非常好;) ). 问题是:哪种AI概念适合我们的目的?最小轴算法似乎是一个有效的选择,但你如何将其适应4人游戏?像blokus这样的游戏有更好的概念吗? 已

  • 我是python新手,我正在尝试跟随一个教程,使用PyGame创建一个类似蛇的游戏。由于某种原因,我的界限不起作用。这可能很简单,但我看不出有什么理由不起作用。我没有犯任何错误,蛇只是越过了界限,比赛没有结束。

  • 帖子底部的实际问题! 首先,我想解释我的问题。 我正在写一个基本的蛇游戏,我让蛇自动移动。当您执行代码时,它会自动移动到窗口的右侧,就像预期的那样。然而,我不能按我想要的方式控制我的蛇,它根本不会改变方向。 为了避免混淆,是类的一个实例。 为了解释蛇的运动: 对象有一个属性,它是一个包含对象的数组列表。每个对象都有和属性。使用此ArrayList,蛇通过在画布的y轴和x轴上使用和属性在画布上绘制小

  • 我正在尝试用libgdx开发一个简单的蛇游戏。我的问题是,每次我想要繁殖一些苹果(纹理,20px宽X 20px高),它总是与蛇的身体重叠。我试图避免这种情况,但它在比赛中不断发生。 snake由多个部分组成-每个部分都是一个20px宽X 20px高的纹理(屏幕宽度是480px宽X 800px高) 以下是我迄今为止所做的尝试: 代码很容易解释。每时每刻,屏幕上都有3个不同的苹果。这段代码试图抽奖x-

  • 笛卡尔坐标系 这个名字你可能不太熟,但是看到下面这个图你应该很熟悉 这其实就是笛卡尔坐标系,一个x轴,一个y轴,都在一个平面上,这个平面一般叫做xy平面,所有二维的笛卡尔坐标系中的点都可以画在这个平面上,比如点:(x, y) 如果想表示三维空间,还需要增加一个z轴 毕达哥拉斯定理与三角函数 毕达哥拉斯定理又叫做勾股定理: h^2 = a^2 + b^2 在直角三角形中sin(θ) = 对边/斜边,

  • 每2个玩家,服务器将创建1个房间(我的游戏是PvP,一对一) 每个房间处理游戏逻辑 我将使用作为我的游戏循环 服务器FPS=5 每个房间都可以处理玩家的移动和一些物理操作 关于实际问题: 基于下面的点数,我应该使用什么样的游戏循环?下面每种类型的游戏循环的利弊是什么。 null