我正在研究基于回合制的Java战略游戏(在Android框架中).按照Beginning Android Games中的结构,我有一个渲染线程和一个UI线程.渲染线程重复更新世界状态,然后重绘世界.当用户与屏幕交互时,GUI将动作发送到世界(命令模式).现在我正在添加AI玩家,这是我的计划:
每个AI播放器都有一个在单独的线程上运行的AI.
当世界更新AI时,它会检查是否有待处理的操作.如果是这样,它会执行它.然后它要求AI播放器进行下一步操作.
AI播放器将向AI线程发送动作请求,然后返回.
最终,人工智能将提出一个动作,并将其发布回世界,它将在下次更新时看到它.
两个问题:
1)这个设计看起来好听吗?
2)如何处理与AI线程的通信?如果我有AI线程调用world.queueAction(action),看起来它会工作,但是如果渲染线程调用ai.chooseAction(world)将在渲染线程上运行选择操作,这不是我想要的.