Java:优化游戏中的算法

标签 java android algorithm libgdx scene2d

我正在使用 scene2d 创建游戏 (Java)。

我编写了碰撞检测功能,但我认为它是个糟糕的功能。看起来很糟糕。

如何优化它?让更快更漂亮。

private void deleteEnemies()
{
    for(int i = 0; i < getActors().size - 1; i++)
    {
        if(getActors().get(i) != null && getActors().get(i) instanceof Enemy)
        {
            ////////////////
            for (int j = 0; j < getActors().size - 1; j++)
            {
                if(getActors().get(j) != null && getActors().get(j) instanceof Ball)
                {
                    if (actorsIntersecting(getActors().get(i), getActors().get(j)))
                    {
                        getActors().get(i).remove();
                        getActors().get(j).remove();
                    }
                }
            }
            //////////////
        }
    }
}

最佳答案

  1. getActors().get(i)放在一个变量里,不要在外面调用两次
  2. 内部 if 中的 getActors().get(j) 相同
  3. 在最内部的 if 条件和正文中使用这些变量
  4. 将大小保存在变量中,因为现在检查 for 条件时,每次迭代都会调用 .size 函数
  5. 您不应该为循环条件使用可以在循环期间动态更改的大小(因为您正在删除项目)这将我们带回到#4。 除此之外,它的编码风格非常好,我怀疑你能否使它比我告诉你的更有效(除了使用线程)

关于Java:优化游戏中的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26149016/

相关文章:

android - 安卓中的 APN 设置

algorithm - 生成独特的颜色

java - 在 Eclipse 中将项目转换为 Gradle 后无法运行 JUnit 测试用例

Java >>> 运算符

java - 在 IDEA 中覆盖 Android 的默认构建脚本?

java - 使用二进制搜索实现 floored 平方根

python - 如何获得Python算法的数学方程式?

java - 在 Web3j 中监听事件

java - Android 通过单击不适用于 Galaxy 5 的按钮调用电话

安卓工作室 3.0 测试版 3.2 金丝雀 : Multiple dex files define Lcom/google/android/gms/internal/zzasy;