0

私はZORKのようなテキストベースのゲームをGUI化する必要があるプロジェクトに取り組んでいます。このプロジェクトの目的は、ゲームが優れているかどうかに関係なく、C++とイベント駆動型プログラミングを学ぶことです。ゲームコードの骨組みが与えられました。

つまり、UIクラスGameWindowと、ゲームロジックを含むクラスがあります。ゲームロジッククラスに、クラス内からUIにテキストを書き込んでもらいたい。UIを公開し、UIオブジェクトを渡して、画面上のラベルに直接アクセスできるようにするのは良い設計ですか(これはカプセル化を解除しませんか?):

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

または、ゲームウィンドウクラスのオブジェクトを取得して次のように言うプライベートUIオブジェクト用のゲッターとセッターをたくさん用意することをお勧めします。

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

私はC++に本当に慣れておらず、設計段階にあります。早い段階で失敗して、自分のためにもっと多くの作業を作成したくありません。これに関するいくつかのガイダンスをいただければ幸いです。

4

2 に答える 2

1

UIとワーカーを分離することは良い習慣です。使用できるアプローチはいくつかあります。

ゲームと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 に答える