Java 机器人代码引擎:如何设计(编写)运行时引擎——机器人世界

Java 机器人代码引擎:如何设计(编写)运行时引擎——机器人世界,java,design-patterns,robocode,Java,Design Patterns,Robocode,IBM有一个名为RoboCode的免费学习Java程序,可以编写定制的机器人,然后在2D空间中作战。我想写一个支持这种机器人的环境,但不知道使用什么样的模式或设计。每个机器人都是一根线。JRE为每个线程提供了一定量(不确定)的运行时。机器人世界引擎将首先建立一个玩家/机器人列表,然后进入一个循环,允许每个玩家依次做自己喜欢做的事情:向前移动、左转、向西北角开火等等。每个机器人还被告知感兴趣的事件:一个或几个敌人在射程内,它被子弹击中,等等 同时也是事件监听器(它们也是生产者吗?)的处理线程的组合

IBM有一个名为RoboCode的免费学习Java程序,可以编写定制的机器人,然后在2D空间中作战。我想写一个支持这种机器人的环境,但不知道使用什么样的模式或设计。每个机器人都是一根线。JRE为每个线程提供了一定量(不确定)的运行时。机器人世界引擎将首先建立一个玩家/机器人列表,然后进入一个循环,允许每个玩家依次做自己喜欢做的事情:向前移动、左转、向西北角开火等等。每个机器人还被告知感兴趣的事件:一个或几个敌人在射程内,它被子弹击中,等等


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

我是机器人代码引擎开发人员。我在两年前加入,大部分时间都花在重构机器人代码引擎上。随着我的理解力的提高,我写了几篇文章。不是所有的都是最新的,我想

这其中有几个困难的部分:

1) 同步:我们通过在机器人和战场之间“发送”信息来解决这个问题。生产者/消费者使用关于每个新状态的不可变消息更新UI和其他组件(游戏提示)

2) 沙盒恶意代码(从我们的代码中学习)

3) API和规则的设计在很长一段时间内保持不变,因为引擎不断发展,旧机器人保持不变,但它们必须以和以前一样的方式运行和评分。我们在这里遇到了几个问题,例如,人们在自己的逻辑中使用API中的类。这不是我的本意。我们必须使类成为最终类,并使用受保护的构造函数。但是现在我们不能把它改成不破坏现有的机器人

有关Robocode中事件的问题。它们每个滴答声都会出现,我们填充EventManager(优先级队列),然后机器人一个接一个地拉动。对于每个事件,调用被分派回robot的实现。订阅是自动的,实现总是存在于基类中,您可以在robot类中重写它。机器人只有一根线


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

您是想了解机器人代码是如何工作的,还是想了解如何设计机器人世界?