Как создать несколько игровых объектов со связанными подобъектами

Я собираю очень простую 2d игру. У меня есть класс планет, и игра создает несколько планет, используя массив. Моя проблема в том, что я хочу, чтобы на каждой планете было несколько лун, а расположение / поведение лун связано с переменными, содержащимися в их конкретной родительской планете.

Каков наилучший способ структурировать классы и создать экземпляры объектов, чтобы можно было легко указать, какие луны относятся к каким планетам, а также эти луны могут легко ссылаться на переменные своей планеты во время игры?

1 ответ

Решение

Вы можете установить свои спутники в качестве Наблюдателей на родительской планете и сделать так, чтобы родитель опубликовал события, на которые подписаны спутники. Вот эскиз кода (предупреждение: не полностью исполняемый код):

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 ... 
    }
}
Другие вопросы по тегам