我建议你看看我几周前在 Flash 中制作的这款黑白棋游戏。这实现了一个非常基本的 AI,但这些基础知识可以应用于您的情况。
基本上,游戏的运作方式是在每次移动之后(玩家或 CPU,因此我可以确定玩家是否做出了与 CPU 可能做出的动作相比正确的动作),我为每个可能的合法动作创建了一个向量。然后我决定哪个动作提供最高分变化,并将其设置为最佳动作。但是,我也会检查移动是否会导致其他玩家进入角球(如果您从未玩过,抢角的玩家通常会获胜)。如果是这样,我告诉 CPU 避免该移动并检查第二好的移动,依此类推。最终的结果是一个真正可以进行战斗的 CPU。
请记住,这只是一个下午的工作(对于整个游戏,从糟糕的 GUI 到 AI 的功能),所以它非常基础,我可以做一些事情,比如通过检查序列运行未来可能的移动. 有趣的事实是,我的动作(显然是我基于 AI 的)是 CPU 在将近 80% 的时间里会做出的动作。唯一不成立的时候是当我像你玩国际象棋一样玩游戏时,你的移动完全是为了定位移动四轮下线
对于您的游戏,您需要考虑大量变量,而不是像我那样使用单点量表。我建议列出每一件事并对每一件事应用一个点值,这样你就可以对每一件事应用重要性值。我为缓存系统做了类似的事情,它根据年龄、使用情况、大小等自动确定要保留的最重要的文件。然后你查看 CPU 手中的每张卡片,计算每张卡片的价值并播放那张卡片(当然,假设这样做是合法的)。
一旦你弄清楚了,你就可以研究下一个回合中每个动作可以做什么(即每个动作的“伤害”值)。完成后,您可以为其添加功能,让 CPU 做出战略性动作,使他们能够使用更强大的卡或执行“终结”动作,或者它最终会起作用。
不过,再一次,将其保持在一个简单的基于点的系统上,并从那里继续前进。你需要一些你可以在物理上比较的东西,所以坚持基于点的系统会很简单。
我为这个答案的长度道歉,但我希望它在某种程度上有所帮助。