私と私の同級生は、夏にゲームをすることに決めました。最初はテキストベースのコンソールアプリケーションにすることにしましたが、Qtを使用してゲーム用のGUIを作成することは可能です。私はちょっと周りを遊んで、ウィジェットと無関係なものを作ることができましたが、一つのことをすることができませんでした。たとえば、私たちのゲームにはPlayerクラスが含まれています。私はmain.cppにダミーのプレーヤーを作りました。その後、ボタンを押すと、プレーヤーの情報をラベルに表示しようとしました。数多くの試みの後、私がそれをやり遂げることができた唯一の方法は、mainwindow.cppでプレーヤーを作ることです。 main.cppで作成されたプレーヤーの情報を表示する方法はありますか?バトルウィンドウやインベントリウィンドウなど、さまざまなウィンドウでデータにアクセスできるようにするにはどうすればいいですか?テキストベースのゲームにQtを使ったGUIを作成する
答えて
main.cpp
を可能な限りリーンにすることは良いことですが、あなたのケースに多くのコードを含めるべきではありません。
私が正しく理解している場合、同じQApplication
で実行している複数のウィンドウ(親なしのQWidgets
またはQMainWindows
)があり、それらの間でデータを共有したいのですか?両方のウィンドウでPlayer
ポインタを共有してみませんか?
あなたのmain.cppには次のようになります。
QApplication app(argc,argv);
YourWindows1 mw1;
YourWindows2 mw2;
Player player;
mw1.setPlayer(&player);
mv2.setPlayer(&player);
mw1.show();
mw2.show();
app.exec();
より多くの空想の道を、シングルトンを使用することができます。このシングルトンはあなたのPlayer
インスタンスを所有して保持することができ、すべてのウィンドウはこのシングルトンにいつでも静的にアクセスしてPlayer
情報を取得できます。あなたが学ぶのに役立つ何かになるかもしれません。
注:私は...多分あなたはあなたのトラブルを引き起こしているかについての詳細を共有することができ、問題はここにあるまさに私はあなたの主な機能という点で、このスレッドで他のポスターに同意
一般的なQtアプリケーションでは、main.cppは単一のアプリケーションUIオブジェクトを開始してからQtのイベントハンドラに制御を移します。そのモデルから逸脱する可能性がありますが、あなたがQtをよく経験していない限り、それは推奨されるものではありません。
が表示されません可能な限り無駄なく絶対に保管してください。ゲームの新しいインスタンスを生成するだけで、ゲームループや状態管理マネージャが残りの部分を処理するようにします。
class Game{
Game();
~Game();
int OnExecute();
};
int Game::OnExecute(){
while(running){
// do game stuff
}
return 0; // No errors, game closed correctly.
}
int main(int argc, char* argv[]){
Game myGame;
myGame.OnExecute();
}
あなたの初期化メソッド/コードの全てが前のゲームはそのメインループに入る、OnExecuteイベント機能の中に含まれている:それは基本的にこのような何かに沸きます。メインのwhile(running)
ループの中では、エンティティ位置、物理更新、AI更新などのロジック計算を制御するフレームごとの更新およびレンダリング機能にコールをかけ、そのフレームのすべてをレンダリングします。これは明らかに超単純な戦略ですが、ゲームエンジンがどのように機能しているかを正確に把握するのには間違いありませんでした。
今のところ、Qtに関する限り、私はあなたが試みていることを正確に試しましたが、それは容易ではありません。 Qtは、ゲーム内のインターフェイスなどで動作するように調整することはできますが、主にゲーム以外のアプリケーションでの使用を想定しています。あなたのプログラムにシンプルなフォームやボタンが必要な場合は、優れた機能を提供しますが、カスタムデザインのHUDなどでは、他の場所を探していて大変な労力を節約したいと考えています。しかし、ゲーム向けの膨大な数の拡張可能なGUIライブラリがあります。ほとんどのグラフィックス/ゲームエンジンはそれに基づいており、かなりうまく統合されるので、OpenGLをベースにしたものを探してみることをお勧めします。
- 1. Java:テキストベースのrpgゲームのsetText GUIコード
- 2. GUIを使ってTic Tac Toeゲームを作成するR
- 3. C++でテキストベースのRPGゲーム/テンプレートを作成する際の問題
- 4. Qt作成者を使って作成したguiに画像を添付するには
- 5. Javaテキストベースのゲームのシリアル番号ベースの保存システムを作成するには?
- 6. テキストベースのゲームでのUnboundLocalError
- 7. ラジオボックスのテキストベースを作成する方法
- 8. Qプログラムを使ってQTを使っているGUI
- 9. Qt guiの作成、ウィジェットのサイズ変更
- 10. スクリプト用のQtベースのGUI作成
- 11. Qt GUIを動的に操作する
- 12. MFCを使用したGUIの作成
- 13. テキストベースの冒険ゲームの冒険クラス
- 14. テキストベースのゲームの処理時間(Java)
- 15. Android Dev - アプリ内のテキストベースのゲーム
- 16. ゲームのためのGUIライブラリ
- 17. テキストベースのゲームを実行するためにスカラを使用して地図にリンクする
- 18. QTを使ってスクリーンディマーを作成する
- 19. QTをC#で使用してGUIを作成できますか?
- 20. C++ QtアプリケーションGUIインターフェイスをHTML + javascriptで作成しますか?
- 21. QtのグローバルメニューQtMenuBarを使ったQt
- 22. ゲームのGUIフレームワーク
- 23. Pythonで自分のGUIアプリケーションを使ってLinuxユーザーを作成するには?
- 24. cocos2d-androidを使ったゲーム
- 25. qtでguiオブジェクト名を使ってループを実行するには?
- 26. GTKを使ったGUIビルド#
- 27. 独自のテキストベースのデータストレージを作成する
- 28. グラフィックスでブレンダーとブルーム効果を使ってゲームの3Dモデルを作成する
- 29. QTウィジェットとQT GUI
- 30. ゲームのLANパーティーのためのリモートビューアを作成するには?
私の問題を引き起こしているのは、例として、Name、HP、SPをテキストボックスに入力してボタンを押してPlayerオブジェクトを作成するウィンドウがあります。 1つのウィンドウで作成されたプレーヤーを他のウィンドウで使用するには、どのようにして作成が完了したらそのプレーヤーを保存することができますか?あなたはまた、メインはできるだけ痩せていると言いました。それは、バトルや目録のコードのようなすべてのコードが適切なウィンドウに配置されることを意味しますか? – David
あなたのアプリケーションのアーキテクチャーを知る必要があります。ウィンドウ間で共有されているもの、GUIがあるかどうか、インスタンスが属しているものなどを把握するのに時間を費やすことを恐れないでください...適切なクラスに適切なコードを入れるべきかどうか尋ねるなら、 :)。ここでの良いスタートは、Qtの例と時間を費やすことです。Qtの方法を学び、非常に迅速に実装します!あなたがQtCreatorを使用しない場合は、例を用意する必要があります。 – vrince
あなたの助けていただきありがとうございます。私はまだQtが新しくなって以来、どのようなことが起こっているかを見ていきます。 – David