gpt4 book ai didi

java - 机器人代码引擎 : how to design (write) the runtime engine -- the robot world

转载 作者:行者123 更新时间:2023-12-04 06:59:50 24 4
gpt4 key购买 nike

IBM 有(拥有)一个名为 RoboCode 的免费学习 Java 程序,可以在其中编写自定义机器人,然后在 2D 空间中进行战斗。我想写支持这种机器人的环境,但不知道用什么模式或设计。每个机器人都是一个线程。 JRE 为每个线程分配了一定的(不确定的)运行时间。机器人世界引擎会首先建立一个玩家/机器人列表,然后进入一个循环,让每个玩家轮流做任何喜欢的事情:向前移动,向左转,向西北角开火,等等。每个机器人还被告知感兴趣的事件:一个或多个敌人在范围内,它被子弹击中等。

处理线程的组合也是事件监听器(它们也是生产者吗?)让我感到困惑;似乎游戏引擎还有更多内容。即使是一些一般性的想法也会有所帮助。

最佳答案

我是 Robocode 引擎开发人员。我在 2 年前加入,大部分时间都在重构 Robocode 引擎。我写了几个 articles 在我的理解增长的那段时间里。不是所有的都是最新的,想。

关于它有几个困难的部分:

1)同步:我们通过在机器人和战斗之间“发送”消息来解决它。更新 UI 和其他组件是生产者/消费者,带有关于每个新状态(游戏滴答)的不可变消息

2)沙箱恶意代码(去学习我们的代码)

3) API 和规则的设计要长期保持不变,因为引擎的发展,旧机器人保持不变,但它们必须像以前一样运行和得分。我们在这里遇到了一些麻烦,例如人们在自己的逻辑中使用 API 中的类。这不是故意的。我们必须使类成为最终类并使用 protected 构造函数。但是现在我们不能改变它以不破坏现有的机器人。

对于您的问题 关于 Activity 在机器人代码中。它们都在每个滴答声中出现,我们填充 EventManager(优先级队列),然后机器人一一拉动。每个事件的调用都被分派(dispatch)回机器人的实现。订阅是自动的,实现始终存在于基类中,您可以在机器人类中覆盖它。机器人有单线程。

顺便说一句:下一件大事似乎是扩展 Robocode 以允许自定义/可插入规则。这是设计挑战。我们正在寻找聪明、勤奋的人加入 Robocode 项目来帮助我们。感兴趣的 ?

关于java - 机器人代码引擎 : how to design (write) the runtime engine -- the robot world,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2051518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com