2017-10-11 6 views
1

私はC++を使ってスネークチュートリアルのゲームに従おうとしています。しかし、彼らはいくつかのWindowsライブラリを使用していたようですが、私の場合はLinuxでコンパイルしています。問題は私ののInput()メソッドにあります。私はここで見つけた推奨コードで変更しようとしましたが、それは私のためにはうまくいきませんでした。これまたは任意の勧告を回避する方法はありますか?ありがとう。Linux用の入力キーは扱いにくいですが、どうすればC++で動かすことができますか?

#include <iostream> 
    #include <stdio.h> 
    #include <ncurses.h> 
    #include <unistd.h> 
    ..... 
    //Get the key input inorder to move the snake around 
    void Input() { 
     //Tried this from the stackoverlow recommendations, did not work for my situation 
     if (getch() == '\033') { 
     getch(); 
     switch(getch()) { // the real value 
      case 'A': 
       // code for arrow up 
       direction = UP; 
       break; 
      case 'B': 
       // code for arrow down 
       direction = DOWN; 
       break; 
      case 'C': 
       // code for arrow right 
       direction = RIGHT; 
       break; 
      case 'D': 
       // code for arrow left 
       direction = LEFT; 
       break; 
      case 'Q': 
       gameOver = true; 
       break; 
      default: 
       break; 
     } 
    } 

    } 
    ..... 

私は持っています問題は、Linuxは、しかし、それは動かない、使用していたヘビゲームのチュートリアルは、私は、私は上記の持っているもので、それを修正しようとした何をする)(kbhitを受け入れないということですヘビ。

+0

"機能しなかった"とは何ですか? –

+0

@ブラッド。私の入力方法は、チュートリアルの設定方法はkbhit()を使用していましたが、これはウィンドウ専用です。しかし、私はLinuxでそれを行う方法を見つけたいと思っています。 – KonoDDa

+0

あなたの問題は、あなたがリターンをヒットする必要があるということですか? –

答えて

-2

このcase 'A':は大文字の入力が必要です。どちらの場合もそうではありません。したがって:

switch(getch()) { // the real value 
      case 'A': // either capital 
      case 'a': // or low case 
       // code for arrow up 
       direction = UP; 
       break; 
+0

スイッチの前に 'toupper()'や 'tolower()'を使うことができます:switch(toupper(getch())) –

+1

これは問題ではありません。矢印キーはエスケープの後に大文字(ほとんどの端末で)を送信します。 –

関連する問題