如何使用相关子对象创建多个游戏对象

时间:2013-04-22 12:42:09

标签: java class hierarchy

我正在整理一个非常简单的2D游戏。我有一个行星类,游戏使用数组创建多个行星。我的问题是我希望每个行星都有多个卫星,卫星的位置/行为与其特定的父行星中包含的变量有关。

构造类和实例化对象的最佳方法是什么,以便很容易地引用哪些卫星与哪些行星相关,以及那些卫星在游戏中可以轻松引用它们的行星变量?

1 个答案:

答案 0 :(得分:2)

您可以将您的卫星设置为父星球的Observers,让父母发布卫星订阅的事件。这是一个代码草图(警告:不是完全可运行的代码):

import java.util.Observable;          //Observable is here

public class Planet extends Observable implements Runnable {
    public void run() {
        try {
            while (true) {
                //do planet stuff
                setChanged();
                notifyObservers(response);
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}


import java.util.Observable;
import java.util.Observer;  /* this is Event Handler */

public class Moon implements Observer {
    //setup moon instance
    public void update(Observable obj, Object arg) {
       //udate moon params
    }
}

//
public class GameApp {
    public static void main(String[] args) {
        //configure game board...

        final Planet earth = new Planet();
        final Planet saturn = new Planet();

        // create an observer
        final Moon moon = new Moon();

        final Moon tethys = new Moon();
        final Moon titan = new Moon();

        // subscribe the observer to the event source
        earth.addObserver(moon);

        saturn.addObserver(tethys);
        saturn.addObserver(titan);

        // fire up the game ... 
    }
}