はい、Benjamin Lindley が言ったように、最も賢明な選択は、入力をコンテナーに格納し (入力キュー、リスト、またはキーのブール マップを作成する)、ゲーム ロジックで、入力に応じて、オブジェクトの更新メソッドを呼び出すことです。 . 短い SFML の例:
sf::Clock timer;
sf::Event Event;
bool isRunning = true;
while (isRunning)
{
Window.clear(sf::Color(255, 255, 255));
while (Window.pollEvent(Event))
{
switch(Event.type)
{
case sf::Event::Closed:
isRunning = false;
break;
case sf::Event::KeyPressed:
if (Event.key.code == sf::Keyboard::Up)
keys[WK] = true;
[...]
case sf::Event::KeyReleased:
if (Event.key.code == sf::Keyboard::Up)
keys[WK] = false;
[...]
}
}
if (keys[WK])
MyCharacter.move(0, -100 * timer.getElapsedTime().asSeconds());
Window.draw(MyCharacter);
Window.display();
timer.restart();
}
これは、私が作成したゲームで入力を処理する方法の例です。「キー」はブール配列であり、押されているかどうかに応じて、さまざまなキーを true または false に設定します。次に、イベント ポーリングとキーの更新が完了すると、ゲーム ロジックが作成されます (ここでは、例を簡略化するために 1 行を残してすべて削除しています)。一定のゲームプレイを維持するためにタイマーを使用することを忘れないでください。これがお役に立てば幸いです。