Как создать несколько игровых объектов со связанными подобъектами
Я собираю очень простую 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 ...
}
}