2016-04-17 4 views
0

私はOpenGLで簡単なゲームを開発していて、SDLライブラリを使って入力を処理しています。Open GL SDLプログラムの開始時に不一致のKeypressesと振る舞い

ゲームはいくつかのキーボードボタンを入力用に使います。 2つの矢印キー、スペースバー、 'r'ボタンは、ゲームをリセットし、それを閉じるためにエスケープします。

現在、私が最初にゲームを起動したときにこれらのボタンが押されたときに出力またはメソッドが呼び出されるということは、一致しません。 (すなわち、左矢印は右矢印の方法を実行する)。このランダムな動作は、エスケープ・ボタンとは別に、ゲームが使用する各ボタンを一度押すと終了します。

私は、ゲームを開始するたびに各ボタンを割り当てなければならないと感じているので、何かが失われているのだろうかと思います。私は以下の入力処理コードを提供しました。

 if (e.type == SDL_KEYDOWN) { 
      switch (e.key.keysym.sym) { 
      case SDLK_ESCAPE: 
       m_isClosed = true; 
       break; 
      case SDLK_SPACE: 
       m_selection = true; 
       break; 
      case SDLK_LEFT: 
       m_leftPressed = true; 
       break; 
      case SDLK_RIGHT: 
       m_rightPressed = true; 
       break; 
      case SDLK_r: 
       m_reset = true; 
       break; 
      } 
     } 
     if(e.type == SDL_KEYUP) 
      switch (e.key.keysym.sym) 
      { 
      case SDLK_LEFT: 
       m_leftPressed = false; 
       m_keydown = false; 
       break; 
      case SDLK_RIGHT: 
       m_rightPressed = false; 
       m_keydown = false; 
       break; 
      case SDLK_SPACE: 
       m_selection = false; 
       m_keydown = false; 
       break; 
      case SDLK_r: 
       m_reset = false; 
       m_keydown = false; 
       break; 
      } 
    } 

各イベントハンドラは、単に別のクラスのゲームロジックに使用されるブール値を設定します。あなたが私に知らせるのを助けるために、もうコードを見なければならないと思ったら。

答えて

0

ボタンリスナーに対応するブール値をfalseに初期化していないことがわかりました。愚かな間違いですが、私は解決策を提供すべきだと思いました。