java - 建模游戏难度

标签 java

我想知道我为游戏建模难度级别的方法是否良好。

public abstract class AbstractDifficulty {

    public AbstractDifficulty() {

    }

    public abstract int enemyWaves();
    public abstract int enemiesInWave();
    public abstract long enemyWaveIntervalMilis();
}

例如,还有几个实现这些方法的子类。

public class EasyDifficulty extends AbstractDifficulty {

    @Override
    public int enemyWaves() {
        return 1;
    }

    @Override
    public int enemiesInWave() {
        return 10;
    }

    @Override
    public long enemyWaveIntervalMilis() {
        return 500;
    }
}

我想知道是否有一种更简单的方法可以做到这一点,但使用起来同样简单干净。

编辑:有人能好心地向我解释一下为什么这个问题得到了负票吗?这段代码或者我的解释有问题吗?谢谢。

最佳答案

您的设计可以完成这项工作,但您似乎想要的是一个容器类。因此,不要为每个值提供一个方法,而是使用一个包含该值和 getter 的(最终)字段。它们可以设置为在构造函数中。

如果您的难度模式已知且很少,请考虑使用枚举,它是最终的并且更易于使用。

enum Difficulty {
    EASY(1, 10, 5000),
    MEDIUM(2, 15, 4000),
    HARD(4, 20, 3500);

    private final int enemyWaves;
    private final int enemiesInWave;
    private final long enemyWaveIntervalMilis;

    Difficulty(int enemyWaves, int enemiesInWave, long enemyWaveIntervalMilis ){
        this.enemyWaves = enemyWaves;
        this.enemiesInWave = enemiesInWave;
        this.enemyWaveIntervalMilis = enemyWaveIntervalMilis;
    }

    public int getEnemyWaves() {

        return enemyWaves;
    }
    public int getEnemiesInWave() {

        return enemiesInWave;
    }
    public long getEnemyWaveIntervalMilis() {

        return enemyWaveIntervalMilis;
    }

}

关于java - 建模游戏难度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122229/

相关文章:

java - 单击具有相同名称的不同 html 类

java - 如何在不使用 Java 中的日历并且没有时间戳的情况下获取昨天的日期?

java - ElementType.CONSTRUCTOR 有什么用?

Java 的类加载器与 jars-within-jars

java - Xtext validator 创建错误

用于检索 HttpServletRequest 参数的 Java 库

java - 内核可以用汇编语言以外的语言编写吗?

java - 为什么当我在 Servlet 中调用 getName() 时,我会在 html 中看到文件标记的 name 属性?

java - 如何在RMI项目中添加多线程?

java - "+="运算符和 int 长用法