0

我正在做一个项目,我必须对像 ZORK 这样的基于文本的游戏进行 GUI 化。该项目的目标是学习C++和事件驱动编程,游戏好坏并不重要。我们已经得到了游戏代码的骨架。

所以我有一个 UI 类 GameWindow 和一个包含游戏逻辑的类。我希望游戏逻辑类从类中向 UI 写入一些文本。让 UI 公开并传递 UI 对象以直接访问屏幕上的标签是一种好的设计(这不会破坏封装吗?):

ui->welcomeText->setText("Welcome to the land of the text adventure!");

或者,为私有 UI 对象提供大量 getter 和 setter 是否更好,您可以在其中获取 gamewindow 类的对象,然后说:

gamewindow.setWelcomeText("Welcome to the land of the text adventure!");

我对 C++ 和设计阶段真的很陌生,我不想早早搞砸并为自己创造更多的工作。对此的一些指导将不胜感激。

4

2 回答 2

1

分离 UI 和 Worker 是一种很好的做法。您可以使用多种方法。

您可以在游戏和 ui 之间使用信号槽通信。见boost::signals。如果你使用 Qt 那么你也可以使用他们的信号槽机制。

您可以使用回调。

您可以使用类似 Java 的侦听器和事件。

class GameEvent{}
class GameListener{
    void event( GameEvent const& );
};
class Game{
    void addListenter( GameListener* );
    void removeListenter( GameListener* );
};

您可以将接口传递给游戏引擎。

class Game {
   void setUI( GameUI & );
}
于 2013-02-16T17:14:05.763 回答
0

将 ui 从工作人员中分离到不同的线程中总是好的。在 qt 中很容易,因为您可以使用插槽/信号概念。

于 2013-02-16T14:19:50.750 回答