我寫的AI Python中確定的兩個玩家的遊戲寫的AI功能與超時。我希望編寫一個函數,它將超時值作爲其參數之一,並在超時後不久返回一個移動。該函數搜索(negamax或類似),直到超時結束,然後返回它可以找到的最佳移動。
規格
- 該函數返回一個有效的舉措無論多麼或當它導致返回。
- 該功能可能會在超時後返回一點,只要這對用戶不明顯(〜100ms)即可。
- 如果在pygame事件隊列上放置了自定義AI_INTERRUPT事件,則該函數應該返回。 (這是爲了讓不耐煩的用戶可以強制電腦播放)。
建議實施
我想我有一個如何實現這一點的想法,但我發現了很多矛盾的意見的在線(多爲問題不大,因爲這一個相同)。我也擔心我是在過度設計事物。因此,我在問這個實施建議是否合理,或者您是否推薦其他建議。
我正在考慮將我的AI算法寫成一個連續產生更好動作的生成器。收益率之間的時間延遲可能很長,但第一個收益率幾乎是立即的。
然後,我會在一個子進程中調用這個生成器,並讓它將yield值送入一個管道。
- 輪詢管:然後
主要過程將在一個循環中運行。如果已經產生了新的值,則將其存儲。
- 檢查時間。如果超時已超過,請返回最新值。
- 檢查AI_INTERRUPT事件,如果找到,返回最新值。
- 處理爲必要
我使用Python 3 pygame的其他pygame的事件。
這是功課嗎? – 2013-03-10 15:25:33
@PrincessOftheUniverse不,這是一個業餘愛好項目。 – 2013-03-10 15:26:36