[问题] AI的interface应该要如何结合和运行呢

楼主: defsrisars (阿转)   2017-01-18 02:15:59
如题
我想要达到的功能是
我写一个象棋AI的interface
就是我写一个主控程式(包含象棋的规则、画面等等...)
然后有interface可以接两个别人写的不同的AI
然后可以让这两个AI互相决斗
但是实在不太清楚这样的程式应该要怎么跑
因为AI1移动之后,把移动的资讯给AI2
在这期间AI2应该是wait的状态 反之亦然
请问这样是一定要使用到thread吗?
还是有什么方式去跑
然后接别人写完的AI(使用我的interface)
跟我的主控程式结合的话,一定要把他的原始程式码放进来我的程式里一起跑吗?
还有其他的方法吗?
我爬文以后其实跟很久以前有位大大举办的踩地雷AI比赛很像
但是不太理解其中原理
(程式怎么结合在一起、实际上怎么跑...)
请问有大大可以解释一下吗...google也找不太到答案QQ
谢谢~
作者: ssccg (23)   2017-01-18 07:33:00
先回你的几个问题,在AI思考中,还是要接受例如暂停、终止之类的指令,所以至少通讯和思考就要分两个thread了再来interface的部分通常AI engine是一个独立的执行档,中间看你要用什么方式去沟通,socket、pipe...etc沟通方式有些现有比较主流的规格: Winboard、UCI(UCCI、USI),好处是可以跟现有的GUI、engine互通,通讯部分可能可以找到opensource的直接用。缺点是对架构设计(GUI负责哪些部分、engine负责哪些会有些限制),自己评估看看吧把程式码全部包成一支程式其实是比较单纯的,就呼叫API就好
作者: pttworld (批踢踢世界)   2017-01-18 11:21:00
中国象棋表示使用来自西洋象棋的FEN串。FEN串载明黑子或红子,可以跑不同AI,关键字已给。
作者: y3k (激流を制するは静水)   2017-01-18 14:39:00
eventDriven就可以了吧

Links booklink

Contact Us: admin [ a t ] ucptt.com