多个对象如何在没有实例引用的情况下向对象发送通知(在 java 中)?

您所在的位置:网站首页 java怎么开发游戏 多个对象如何在没有实例引用的情况下向对象发送通知(在 java 中)?

多个对象如何在没有实例引用的情况下向对象发送通知(在 java 中)?

2023-05-11 17:44| 来源: 网络整理| 查看: 265

假设您的应用程序中的 GameWorld 类可以访问所有关卡,而这些关卡又在该关卡上有敌人。您可以参考以下代码库并提出最适合您需求的解决方案。

public class GameWorld {

    private List gameLevels;

    private GameLevel currentLevel;

    public GameWorld() {

        gameLevels = new LinkedList();

        this.instantiate();

    }

    private void instantiate() {

        // instantiate game adding levels to it

    }

    public void moveToNextLevel() {

        currentLevel = currentLevel.next();

    }

}

public class Enemy {

    private EnemyType enemyType;

    private GameLevel gameLevel;

    public Enemy(GameLevel level, EnemyType type) {

        enemyType = type;

        gameLevel = level; 

    }

    private void create() {

        // .. instantiation task

        gameLevel.listEnemy(this);

    }

    private void killEnemy() {

        // clean up task

        gameLevel.delistEnemy(this);

        // .. clean up task

    }

}

public class GameLevel {

    private GameWorld gameWorld;

    private List enemies;

    private GameLevel nextLevel;

    public GameLevel(GameWorld world) {

        enemies = new ArrayList();

        gameWorld = world;

    }

    public void listEnemy(Enemy enemy) {

        enemies.add(enemy);

    }

    public void delistEnemy(Enemy enemy) {

        enemies.remove(enemy);

        if(enemies.isEmpty()) {

            gameWorld.moveToNextLevel();

        }

    }

    public void setNextLevel() {

        // set next level after this

    }

    public GameLevel next() {

        return nextLevel;

    }

}



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3