我想知道我为自己的游戏建模难度等级的方法是否很好。

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;
    }
}


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

编辑:有人可以这么向我解释为什么这个问题得票数减。该代码或我的解释有问题吗?谢谢。

最佳答案

您的设计可以完成工作,但是似乎您想要拥有的是容器类。因此,要为每个值使用一个方法,而要使用一个(最终)字段,该字段包含该值和一个吸气剂。他们可以设置例如在构造函数中。

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

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;
    }

}

10-07 16:35