【问题标题】:How to create multiple game objects with related sub objects如何使用相关子对象创建多个游戏对象
【发布时间】:2013-04-22 12:42:08
【问题描述】:

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

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

【问题讨论】:

  • 能否请您告诉我们您正在使用哪种语言以了解您可能使用的基本结构?
  • 对不起 - 应该说 - JAVA

标签: java class hierarchy


【解决方案1】:

您可以将您的卫星设置为父行星的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 ... 
    }
}

【讨论】:

  • 谢谢,我之前没怎么用过观察者,所以看看。我相信我的问题将是实例化了几个行星,所以不确定我的卫星将如何“观察”正确的行星。不过我会看看 - 谢谢
  • 您可以将相关的卫星添加到行星的特定实例中。
  • 即- earth.addObserver(moon); saturn.addObserver(tethys); saturn.addObserver(titan);
  • 顶级响应,我玩过一个游戏,效果很好。谢谢 MJC。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
相关资源
最近更新 更多