c# – 一个Dominion AI Player正确的OOP结构

发布时间:2020-02-14 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了c# – 一个Dominion AI Player正确的OOP结构编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在修改,试图为流行的纸牌游戏Dominion(http://www.boardgamegeek.com/boardgame/36218/dominion)制作一个AI玩家.

如果你不熟悉游戏,它基本上是一个非常流线的魔术表哥:聚会,那里有一个大型的图书馆,他们有不同的规则.在游戏过程中,玩家购买这些卡并将其并入到他们的甲板上.

我从机器学习的角度对这个游戏感兴趣 – 我想让机器人相互对抗,让他们玩数百万的游戏,并尝试数据化洞察力,使他们玩得更好.

我不确定如何从核心AI决策逻辑中分离游戏规则(每张卡上印刷的逐字说明).

我已经开始的明显路径是为每张卡创建一个类,并将规则和AI的东西放在同一个地方.这是一个很大的 – 但它似乎是最小阻力的道路.但是,也许最适合每张卡支持某种接口,然后对其进行AI组件编码?

是否有“正确”OOP设计?还是几种合理的可能性?

解决方法

我会倾向于将卡的行为封装为自己的类,容易地对具有多个行为(即选择)的卡进行.它还可以让您编写可参数化的行为,并将其与卡混合使用.

所以卡会包含卡的成本,可以播放的名称,名称等等.它还将包含卡片可以做的行为列表.

这些行为被AI演员视为卡片的一部分.只有另一个财产,卡可以与成本一起被称重.

实际上使用卡的行为的AI演员需要能够解释这些行为,所以行为类可能需要包含一些提示,让人们理解它,但是并不包含实际的AI逻辑本身.如果AI需要针对特定​​卡片的特定行为,将这种事情写入AI actor,而不是卡片行为.

如果AI演员需要知道,例如,这种行为有一个预期的胜利点.2点/圈的回报,这可能是行为的一部分,作为一个提示AI选择什么牌买/玩.

但是,我真的不知道你如何接近你的AI演员设计,所以也许这没有意义.但是,我认为,将卡作为财产的行为视为卡片本身的基本部分,这可能有所帮助.

它为您提供封装AI演员的默认动作(演员可以不需要卡片的东西)作为行为的优势,因此您可以在没有任何特殊情况代码的情况下对这些动作进行权衡.

总结

以上是编程之家为你收集整理的c# – 一个Dominion AI Player正确的OOP结构全部内容,希望文章能够帮你解决c# – 一个Dominion AI Player正确的OOP结构所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!