私は、ゲームプレイが始まる前にスプラッシュスクリーンを持つWindows APIを使ってC++でゲームを書いています。一時停止することができます。ゲームが一時停止しないのはなぜですか? (Windows C++キーボード入力ステートメント)
私は、ゲームの状態を列挙型で保存しました。ゲームを制御するために、game_state {PAUSED、PLAYING、SPLASHSCREEN}をキーボード入力に依存しています。
ゲームが一時停止と再生を切り替え、正常に動作していたが、私は上でゲームを開始するためにスプラッシュスクリーンを追加しようとしたときに、一時停止機能は動作を停止し、私はなぜわからないんだけど...
if(Keyboard.GetKey(VK_RETURN) && game_state == SPLASHSCREEN)
{
game_state = PLAYING;
Keyboard.SetKey(VK_RETURN, false);
}
if(Keyboard.GetKey(VK_RETURN))
{
if(game_state == PAUSED)
{
game_state = PLAYING;
}
else
{
game_state = PAUSED;
}
Keyboard.SetKey(VK_RETURN, false);
}
//If Paused, go to Pause Screen
if(game_state == PAUSED)
{
pauseScreen();
}
//If Splash Screen, go to Splash Screen
if(game_state == SPLASHSCREEN)
{
splashScreen();
}
//If not paused, do game processing
if(game_state == PLAYING)
{
gamePlay();
}
GetKey()は、キーが押されている場合はtrueを返します。 game_stateは、ゲームの現在の状態を含むenumグローバルです。 SETKEYは、()(false)をアップ(真)またはダウンとして指定されたキーを設定します
ああ、およびすべてのスプラッシュ・スクリーン()pauseScreen()とゲームプレイ()を行う(現時点では)それぞれの状態を表す表示スプライトある
SETKEY
void Keyboard::SetKey(WPARAM key, bool key_down)
{
if(key_down)
{
m_keys[key] = true;
}
else
{
m_keys[key] = false;
}
}
のGetKey
bool Keyboard::GetKey(WPARAM key)
{
if(m_keys[key])
{
m_keys[key] = false;
return true;
}
else
{
return false;
}
}
GetKey関数とSetKey関数を参照できますか? –
SetKeyとGetKeyを追加 – Eilidh
m_keysはブール値の配列です - 真がダウン、偽がアップ – Eilidh