首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >极小极大评价函数

极小极大评价函数
EN

Stack Overflow用户
提问于 2012-11-15 07:25:07
回答 1查看 2.6K关注 0票数 2

我正在用Unity3D开发迷你游戏“最终幻想八”中的三重三位一体。

基本的游戏是一个3x3的网格,玩家和NPC手中拿着5张牌。目标是在棋盘填满的时候拿到最多的牌。卡片的顶部、底部、左侧和右侧各有4个数字。一名玩家将一张牌放在网格上,另一名玩家可以将一张牌放在它旁边,之后将比较牌上的数字(例如,如果一张牌在中间,而对手在其左侧打了一张,则对手牌的右值将与已经在那里的牌的左值进行比较)。如果一张牌比另一张大,那么玩家将“拿走”对手的牌。

有关Triple Triad的更多详细信息可在此处查看:http://finalfantasy.wikia.com/wiki/Triple_Triad

我目前正在设计单人使用的人工智能,这样人类就可以对抗NPC了。我已经决定,开发AI的最好方法是使用带有alpha-beta剪枝的Minimax算法,以便在轮到AI时计算出可能的最佳走法。

我遇到的问题是,我在互联网上看到的大多数例子都显示了tic-tac-toe的赋值函数。这比三合一评估器要简单得多,因为该函数必须考虑牌上的值以及它所在的位置(例如,拿一张敌牌)。

有谁对我如何编写这个赋值器函数有什么建议吗?或者至少我如何将这个网站的代码改编成一个可以评估我的板子三合一的代码?

http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaGame_TicTacToe_AI.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-15 07:49:05

评估函数有两种风格:如果你可以看到游戏的结束(就像你总是可以用tic-tac-toe,即使你在Commodore 64上运行),你可以完全根据结果是否成功来判断结果。然后,游戏引擎将只挑选获胜的动作(或者,如果可能,平局)。

如果你看不到终局,这在任何有趣的游戏中都很常见,你需要一个函数来对中间棋盘位置进行评分,以衡量它对每个玩家的偏爱程度。例如,在国际象棋中,您可能会将点值分配给每个棋子,然后将每一方拥有的材料相加并减去。因此,人工智能将有利于更大的物质优势。然后,你给评估者加分,让他检查对手,以此类推。

如果你不知道如何玩这个游戏(我已经为游戏编写了人工智能,我不知道怎么玩不止一次!)然后,你可以简单地调整你的AI对抗人类或其他AI玩家,直到它做得很好。我写了一个程序,专门用来对抗《第七客》中的显微镜之谜(它是Ataxx的一个变体)。我不得不写这篇文章,因为我和我的室友打不过这个游戏!很明显,棋盘覆盖的一些功能是正确的功能,我尝试了连接小组的奖金等等,直到我的人工智能可以击败游戏的人工智能。我自己仍然无法击败Ataxx,而我自己的人工智能甚至更无情,很快就把我宰了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13389155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档