c++初心者です
STGのタイトル画面を、画像を表示させてエンターを押すとゲームが始まるという簡単なものにしようと思い
int tit = LoadGraph("image/titl.jpg");
DrawGraph(0, 0, tit, FALSE);
void WaitEnter(void); {
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_RETURN) == 0);
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_RETURN) != 0);
}
このように書いたところ、真っ暗な画面になってしまいエンターキーを押すとやっとタイトル用の画像が一瞬表示されてプログラムが先へ進んでしまいます。
タイトル画面の表示→エンターキーを押す→ゲームスタートとするにはどのようにしたらよいでしょうか?
ゲームのタイトル画面について
Re: ゲームのタイトル画面について
なるほど、この後半部分はWaitEnter関数の定義と見せかけて、WaitEnter関数の宣言とあまり意味のないブロックに入った普通に実行されるコードなのですね。kmnb さんが書きました:STGのタイトル画面を、画像を表示させてエンターを押すとゲームが始まるという簡単なものにしようと思い
int tit = LoadGraph("image/titl.jpg");
DrawGraph(0, 0, tit, FALSE);
void WaitEnter(void); {
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_RETURN) == 0);
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_RETURN) != 0);
}
このように書いたところ、真っ暗な画面になってしまいエンターキーを押すとやっとタイトル用の画像が一瞬表示されてプログラムが先へ進んでしまいます。
DXライブラリを使っていて裏画面処理をしている場合、描画を画面に反映する前に待機に入ってしまっているので、DrawGraphの後にScreenFlip();を入れると改善するかもしれません。
ただし、これは対症療法であり、書いてはいけない処理です。
状態を持ち、タイトル画面を実行している状態でエンターキーが押されたらゲーム開始の状態に遷移するようにするといいでしょう。kmnb さんが書きました:タイトル画面の表示→エンターキーを押す→ゲームスタートとするにはどのようにしたらよいでしょうか?
例えば、以下の擬似コードのような感じです。
状態 = タイトル初期化;
画像の読み込みなどの初期化;
メインループ {
switch(状態) {
case タイトル初期化:
タイトル画面の初期化処理;
状態 = タイトル画面;
// breakせずにそのままタイトル画面の処理に入る
case タイトル画面:
タイトル画面の描画などの処理;
if (エンターキーが押された) {
状態 = ゲーム初期化;
}
break;
case ゲーム初期化:
ゲームの初期化処理;
状態 = ゲーム中;
// breakせずにそのままゲームの処理に入る
case ゲーム中:
ゲームの処理;
break;
}
メッセージ処理とか画面更新とか;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)