Java AI - boolean 数组的最佳传递

标签 java optimization parameter-passing artificial-intelligence boolean-algebra

我正在为游戏编写 AI 对象。

我的目标是优化代码,以便我可以同时处理尽可能多的 AI 进程。

游戏是 2d 物理游戏,所以我已经在处理碰撞处理中的实体数瓶颈问题,因此 AI 需要高效。

我正在处理的命令是简单的 ASDF + QE 移动,以及鼠标点击和定位。

我意识到,在实际的键/鼠标上模拟 AI Action 可能不是一个好主意。但我想从这里开始,稍后再将其拆解。

我决定使用 boolean 数组来表示如下命令:

//Commands: continue, up, down, left, right, turnQ, turnE, mouse0, mouse1 

boolean[] moveBools = {false, false, false, false, false, false, false, false, false}; 

//The first boolean in the array 'continue' will terminate the loop if its true.

我正在努力解决的问题是如何将这些数据传递到实际移动物理体的函数中。我可以简单地在每个游戏迭代中传递一个完整的 boolean 数组,或者将/changes/从一个迭代传递到另一个迭代。

这种类型的编程桥接到实际的 boolean 数学,这远远超出了我的知识范围。我推测我实际上可以创建运算符,就像在 C++ 中所做的那样,让数组状态相互减去并输出结果。

问题是:在前面的上下文中,我怎样才能以最佳速度传递 boolean 数组?

最佳答案

enum Command {
    continuing, up, down, left, right, turnQ, turnE, mouse0, mouse
}

void process(EnumSet<Command> commands) {
    while (commands.isEmpty()) {
        ...
    }
    ...
}

枚举是可能的。 EnumSet 与 BitSet 类似,EnumMap 与数组类似。

否则使用位掩码并传递一个整数。对 int 的位操作很简单,而且效率稍高。

关于Java AI - boolean 数组的最佳传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33503955/

相关文章:

java - 运行 sitemesh 是否需要 .tld?

java - 为什么在 Constructor 和 Setters 中使用 "this"关键字?

powershell - 在Powershell中是否有用于传递参数的动态变量?

jquery - 向 $.ajax 完整回调函数传递附加参数

c# - 将变量传递给存储过程,c#

java - Hibernate @Generate 注释不起作用

java - 如何从 JMockit 模拟静态方法

optimization - 计算八个AVX单精度浮点向量的8个水平和

ruby - 优化 Ruby 中的嵌套循环

Python scipy.optimize : Using fsolve with multiple first guesses