2017-03-04 14 views
-2

私は、プレイヤーがターゲットを撃つシンプルなC++とOpenGLのゲームを持っています。私はプレイヤーがターゲットやプレイヤーの位置などをリセットする 'R'を押していつでもゲームを再開できるようにしたいと思っています。私のゲームは主に物理とメッシュのデータを設定するメイン関数に存在します私は各フレームをターゲットに描画するdo-whileループを持っています。いつでもゲームを再開できるようにするにはどうすればよいですか?

私は現在、ユーザーがEscキーを押してウィンドウを閉じることができるようにGLFWでキャプチャしますが、ゲームを再開するにはどうすればよいですか?

ゲームの変数やプレーヤーの位置を再設定したり、ターゲットを再描画する必要がありますか?do-whileゲームループの前にジャンプして再び開始する方法はありますか?

ありがとうございます。これが簡単な場合はお詫び申し上げます。

EDIT:

main() { 
initialise window; 
get mesh vertices; 
set textures; 
initialise Bullet physics; 

do { 
ray picking; 
render targets and walls; 
} while (glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS && 
     glfwWindowShouldClose(window) == 0); 
} 
+0

音がかなり広いです。メインループからあなたのゲームを回復するいくつかのイベントを提供します。 –

+0

モデルコマンドビューシステムでゲームを書いたのであれば、一時的にビューを取り除くことは問題ではないはずです。モデル、コマンド、ビューコードを無差別に混在させてしまった場合は、それを切り離すのが大変な作業かもしれません。 –

答えて

1

私は文字通り、描画ボードに戻って推薦: 私は現在、このようなものを持っています。最初に設計し、メインからループを外します。ゲームを実行するためのスレッドを生成し、キーボードイベントに応答するスレッドを生成して、何らかの同期の形で競合状態を防ぎます。 GameResetという名前のメソッドを定義します。このメソッドは、ゲームスレッドを停止し、オブジェクトを再インスタンス化して自分の状態を初期化することで、必要なものを実装します。オペレーティングシステムや環境、開発ライブラリなど、より多くの情報を提供することで、より多くのヘルプを得ることができます。私は助けになっています。

+0

ありがとう、助けていただきありがとうございます。私は自分のコードを再設計する時間はありませんが、それを提案することは絶対に正しいです。可能であれば余分な機能ですが、「Rを押した場合は、頂点にロードしてからコリジョンボックスを設定した後にメインをもう一度実行してください」という行に沿って何かを導入したいと考えていました。 –

関連する問題