を使用SDL
して 2D ゲームを作成しc++
ていますが、一部のキーの組み合わせが機能しないことがわかりました。
たとえば、左矢印キーと上矢印キーを押したままにするとSDL
、右矢印キーが押されたことを認識しません。いくつかの調査の結果、これはおそらくキーのブロックまたはゴーストが原因であり、解決策がないことがわかりました.
他のプログラマーはこれをどのように回避しますか?
ほとんどの既存のゲームをプレイしている間、この制限に遭遇したことはありません。Javaでこの問題に遭遇したことはありません。
コードのサンプルを次に示します。
while(SDL_PollEvent(&event))
{
if(event.type == SDL_KEYDOWN)
{
switch(event.key.keysym.sym)
{
case SDLK_UP:
std::cout << "Up pressed" << std::endl;
break;
case SDLK_DOWN:
std::cout << "Down pressed" << std::endl;
break;
case SDLK_LEFT:
std::cout << "Left pressed" << std::endl;
break;
case SDLK_RIGHT:
std::cout << "Right pressed" << std::endl;
break;
}
}
else if(event.type == SDL_KEYUP)
{
switch(event.key.keysym.sym)
{
case SDLK_UP:
std::cout << "Up released" << std::endl;
break;
case SDLK_DOWN:
std::cout << "Down released" << std::endl;
break;
case SDLK_LEFT:
std::cout << "Left released" << std::endl;
break;
case SDLK_RIGHT:
std::cout << "Right released" << std::endl;
break;
}
}
}