头歌软件设计植物大战僵尸第四关

根据题目要求,我需要补充三个文件中的代码:StageSystem.javaEnemyKilledObserver.javaCharacterSystem.java。下面是补充的代码:

1. StageSystem.java

public void InitStageChain()
{
    int lv = 1;
    // 创建handler1,生产6个ZombieNormal,生产速度1f,若3个被消灭则将责任转移给下一个对象
    NormalStageHandler handler1 = new NormalStageHandler(this, lv++, 3, "ZombieNormal", 6, 1f);
    // 创建handler2,生产12个ZombieNormal,生产速度1f,若6个被消灭则将责任转移给下一个对象
    NormalStageHandler handler2 = new NormalStageHandler(this, lv++, 6, "ZombieNormal", 12, 1f);
    // 创建handler3,生产100个ZombieNormal,生产速度2f,若109个被消灭则结束
    NormalStageHandler handler3 = new NormalStageHandler(this, lv++, 109, "ZombieNormal", 100, 2f);
    
    // 设定好链条handler1-handler2-handler3
    handler1.SetNextHandler(handler2);
    handler2.SetNextHandler(handler3);
    
    // 设定当前关卡为handler1
    mRootHandler = handler1;
}

2. EnemyKilledObserver.java

@Override
public void Update(GameEventType eventType)
{
    // 当收到消息时,如何处理
    if (eventType == GameEventType.EnemyKilled) {
        mmStageSystem.setmCountOfEnemyKilled();
    }
}

3. CharacterSystem.java

// 死亡数据有变化,发通知告诉观察者
events.notify(GameEventType.EnemyKilled);
public void CreatEventSystem(StageSystem stageSystem)
{
    // 实例化EventManager的EnemyKilled主题
    events = new EventManager(GameEventType.EnemyKilled);
    // 实例化EnemyKilledObserver
    EnemyKilledObserver observer = new EnemyKilledObserver();
    // 将实例化的EnemyKilledObserver绑定到events
    observer.setStageSystem(stageSystem);
    events.subscribe(GameEventType.EnemyKilled, observer);
}
posted @ 2025-06-04 21:56  是否未晚  阅读(49)  评论(0)    收藏  举报