2016-10-04 7 views
1

私はsfmlでコンソールスタイルのゲームを作っています。それはグラフィカルインターフェイスですが、ゲーム自体にコンソールが含まれています。私はコンソールで物事を書くためにテキスト入力イベントを使用していますが、私はまた、矢印キーでカーソル(コンソールカーソルではなくマウス)を動かしたいと思います。より具体的には、私はキー値のevent.text.unicodeを使用しています。しかし、矢印キーのユニコード値は私のPCで動作していません。私は左矢印に37、右矢印に39を使用しましたが、動作しません。これは私のコンソールの主要なプロセス機能です。事前にSfmlテキスト入力された矢印キー

void Console::update(int unicode) { 
    if(unicode == 8) { // Backspace 
     deleteLast(); 
    } else if(unicode == 13) { // Enter 
     newLine(); 
    } else if(unicode == 37) { // Left arrow key 
     currentX--; 
     std::cout << "Left arrow" << std::endl; 
    } else if(unicode == 39) { // Right arrow key 
     currentX++; 
     std::cout << "Right arrow" << std::endl; 
    } else { // Normal characters 
     buffer[(currentY == 0) ? currentX : (currentY * maxColumn) + currentX] = (char)unicode; 
     currentX++; 
     if(currentX == maxColumn - 1) { 
      newLine(); 
     } 
     std::cout << "[KEY TYPED] X: " << currentX << " Y: " << currentY << std::endl; 
    } 
} 

感謝:)

編集:私は私は解決だと思います。私は特別なキーを扱うためにKeyPressedイベントを使用しました。通常の文字を扱うためのTextEntered。同じ問題を有するものについては

+0

は何ですか。その場合はキーボードイベントイベント型の変数から
、最初のチェックを次にチェックその場合は矢印

if(event.type == sf::Event::KeyPressed) 

37と39の意義?それらの数字は左右の矢印キーと何が関係していますか? –

+0

IMHOでは、 'switch'文が読みやすくなります。 –

+0

デバッガを使用して、キーコードが正しいことを確認しましたか?私の理解では、左矢印と右矢印は複数の文字を表現することを要求し、押された場合はASCII範囲外になると考えています。 –

答えて

1

if(event.key.code == sf::Keyboard::Up) 
    //do stuff 
if(event.key.code == sf::Keyboard::Down) 
    //do stuff 
関連する問題