1

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

构建类和实例化对象的最佳方法是什么,以便轻松引用哪些卫星与哪些行星相关,并且这些卫星可以在游戏期间轻松引用其行星的变量?

4

1 回答 1

2

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

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 ... 
    }
}
于 2013-04-22T13:16:03.390 回答