0

Qt 4.8.2、Windows 7 x64(ただし、これはOSに依存するのではなく、一般的な実装として考える必要があります-可能であれば-)

これは概念的な質問であり、実装についてもです。

私は(非常に)単純なQApplicationを持っています。「button」タグ付きのXMLを読み取り、「button」ごとに、新しいQPushButtonをレイアウトに追加します。これにより、構成ファイル(XML)に基づいてGUIを動的に生成できます。私の問題はそれを「次のレベル」に持っていくことです。

これらのボタンを他のモジュール(例:QDialog)に関連付け始めたいと思います。そうすると、QDialogは必要なことを何でも実行します。

私の最終的な目的は、「構成ファイル(xml)を読み取る」アプリケーションを作成し、その情報に基づいて、読み取られたモジュールと同じ数のボタンを生成することです。その後、ボタンを「接続」して「コマンドを起動」します(今のところ、これ以上の表現はありません)。通常のモジュールと同じように実行されます...閉じるまで、メニューに戻ります。

基本的に、(XMLファイルを読み取ることによって)動的に生成され、それらのボタンを接続してモジュールを実行/開始するメニューが必要です。また、柔軟性を持たせたいので、明日XMLに新しいモジュールを追加し、そのモジュールをappフォルダーに追加した場合は、モジュールを起動できるようにします。

私の質問は次のとおりです。

  1. 私は十分に明確でしたか?

  2. ゲームは通常どのようにプロセスを実行しますか?例えば; ビデオゲーム(ほとんどのAAA)の「メニュー」は通常、アクションスクリプトなどで作成され、「新しいゲーム」や「ゲームの読み込み」などを選択すると、他の特定のモジュールが実行されます(より良い言葉)、特に新しいゲームボタンとDirectXアプリケーションなどのロードの間の移行。

  3. そのようなプロジェクトをどのように開発するのでしょうか。共通のソリューション内で複数のプロジェクトを作成する必要がありますか?

ご覧のとおり、私はソフトウェア設計についてあまり知識がないので、私の質問が基本的すぎると思われ、このテーマについて読みたいと思う本があれば、私はもっと多くのことを認めます。少し失われるよりも、どんな種類のアドバイスも歓迎します。

いつものように、私が十分に明確でないか、何かを拡張できる場合は、私に知らせてください。このトピックに関するあらゆる種類の支援に感謝します。

また、現在のタグを変更する必要があると誰かが思った場合は、そのように教えてください。私はそれらが最も適切であると考えました。

4

2 に答える 2

0

ゲームは通常どのようにプロセスを実行しますか?例えば; ビデオゲーム(ほとんどのAAA)の「メニュー」は通常、アクションスクリプトなどで作成され、「新しいゲーム」や「ゲームの読み込み」などを選択すると、他の特定のモジュールが実行されます(より良い言葉)、特に新しいゲームボタンとDirectXアプリケーションなどのロードの間の移行。

これは正しくありません。

「ほとんどのAAA」は単一のアプリケーションです。アクションスクリプトを使用するか、特定のスクリプト言語を使用してGUIを構築するかは関係ありません。ゲームは通常、単一のアプリケーションです。あなたはいつもゲームに参加しています。ゲームプレイ中であろうとメニュー画面に座っていようと、常にDirectXやOpenGLなどが実行されていますゲームを開始すると、ゲームがアプリケーション内で一連の機能を実行するだけです。

それらは、必ずしも「モジュール」または外の世界がアクセスできる、あるいは知っている他の構造に配置されているわけではありません。通常、他のコードを「ロード」しません。アプリケーション内の他の関数を呼び出すだけです。

基本的には、ユーザーが入力を入力するのを待ってから、その入力で何かを実行するコマンドラインアプリケーションと同じです。

「ほとんどのAAA」ゲームは、あなたが求めていることを実行できません。XMLファイルに何かを追加して、現在のゲーム内に別のゲームをロードさせることはできません。彼らはそのように構築されていません、そしてそれは彼らの目的ではありません。

他のゲームを起動する柔軟なメニューアプリケーションが必要な場合は、各ゲームを個別のアプリケーションにする必要があり、メニューアプリはすべてのゲームから分離する必要があります。その時点で、ゲームを起動することはプロセスを起動することです。これがSteamや同様のツールの仕組みです。

于 2012-07-26T19:20:41.317 に答える
0

これを「アプリケーション内のアプリケーション」として視覚化する必要はないでしょう。分解すると、実際には、プロセスを起動できるアプリケーションであり、xml ファイルを介して構成されます。

その後、ボタンをDLLに「接続」しますか?他の.exeファイル? これは通常のアプリケーションとして実行されます。

DLL への接続と言うとき、具体的に何を意味するのかわかりません...しかし、これで本当に必要なのは、アプリからサブプロセスを起動することだけです。ボタン A をクリックすると、QProcessでアプリケーション A を起動できます。アプリは親プロセスであり、いつ実行を停止するかを知っています。

DLL を参照するときに、個別にコンパイルされた他のウィジェットを開発し、ボタンのクリックからそれらを動的にロードできるようにすることを意味している場合、それはまだ別のアプリケーションではないと思います。一度に実行できる QApplication は 1 つだけです。ウィジェットを含む新しいモジュールをインポートすると、同じ既存のイベント ループの下で実行されているように表示できます。

于 2012-07-25T20:38:10.880 に答える