Per*_*les 5 java multithreading android artificial-intelligence
我正在研究基于回合制的Java战略游戏(在Android框架中).按照Beginning Android Games中的结构,我有一个渲染线程和一个UI线程.渲染线程重复更新世界状态,然后重绘世界.当用户与屏幕交互时,GUI将动作发送到世界(命令模式).现在我正在添加AI玩家,这是我的计划:
每个AI播放器都有一个在单独的线程上运行的AI.
当世界更新AI时,它会检查是否有待处理的操作.如果是这样,它会执行它.然后它要求AI播放器进行下一步操作.
AI播放器将向AI线程发送动作请求,然后返回.
最终,人工智能将提出一个动作,并将其发布回世界,它将在下次更新时看到它.
两个问题:
1)这个设计看起来好听吗?
2)如何处理与AI线程的通信?如果我有AI线程调用world.queueAction(action),看起来它会工作,但是如果渲染线程调用ai.chooseAction(world)将在渲染线程上运行选择操作,这不是我想要的.
我将为 AI 提供一个 ExecutorService,并向其中添加您希望它执行的任务。对于 UI,您可以有一个已更改且可能需要重新绘制的事物的队列。我很想对所有 AI 使用单个线程,直到您知道这会有所帮助。无论如何,大多数 Android 设备只有 1-2 个 CPU。