[問題] 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