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。同じ問題を有するものについては
は何ですか。その場合はキーボードイベントイベント型の変数から
、最初のチェックを次にチェックその場合は矢印
37と39の意義?それらの数字は左右の矢印キーと何が関係していますか? –
IMHOでは、 'switch'文が読みやすくなります。 –
デバッガを使用して、キーコードが正しいことを確認しましたか?私の理解では、左矢印と右矢印は複数の文字を表現することを要求し、押された場合はASCII範囲外になると考えています。 –