在一个网格(10 * 10)中,有两条蛇:A和B.在每一回合中,蛇再落后一条。所以它看起来像这样:
第1步:
. . . . . . . . . .
. .
. B .
. .
. .
. .
. .
. A .
. .
. . . . . . . . . .
第2步:
. . . . . . . . . .
. .
. _B .
. .
. .
. .
. A .
. | .
. .
. . . . . . . . . .
第3步:
. . . . . . . . . .
. .
. __B .
. .
. .
. A .
. | .
. | .
. .
. . . . . . . . . .
每只蛇的目标是比以前的生存更长时间,如果他撞到墙上或某人体内的一部分,他就死了,对手就赢了。
问题是,如果有任何众所周知的算法可以决定蛇应该走哪条路?我唯一能想到的是非常简单,可能没用。
答案 0 :(得分:2)
游戏应该可以打败吗?一般来说,如果蛇只是想要生存,它应该进入开放空间/最大可能空间......
你需要做的是,(在许多游戏中完成(如国际象棋))根据某些评分系统为给定情境分配值。他们计算下一个可能的"状态" (你移动了,或者敌人移动了)。比较这两个州并选择一个更好的州。
你可以评分"使敌人更小的可能性+使自己的可能性更大"。你也可以假设敌人的蛇会选择基于类似的系统(我假设是人类玩家)。
答案 1 :(得分:1)
您可以尝试Alpha-Beta修剪/深度限制方法或Expectimax搜索。这样每条蛇将根据给定的深度计算出最佳的游戏方式,因为很难枚举整个空间。
答案 2 :(得分:0)
你的蛇应该试图分开一部分区域并留在较大的区域内,而对手应该在另一侧。一旦完成,你只需走到最近的墙上,然后上下走,直到你到达墙壁,然后向前移动一步。这应该是可能的,直到你的对手死亡,因为你有更多的空间。
你的蛇应该检测到另一只蛇尝试相同并应该阻止它。防止意味着试图走进隔离墙的较大一侧。
答案 3 :(得分:0)
虽然minmax和alpha-beta修剪似乎是不可避免的,但是你可能想要考虑convex hull算法来开始移动,因为对于自由点的凸包,这对于你来防止封闭空间是很好的方法墙壁的边界,提供更多的董事会位置访问,改善游戏中的长寿性变化。