2017-10-19 4 views
0

私は学校のためにチックタックトーゲームを開発していますが、キーボードからの演奏を読むのは難しいです。実用的で素敵な方法。キーボードから完全なランダムなテキスト、フィルター、キャストを読む方法

これは私がやったことです:

Human::play() const 
{ 
    int pos   
    std::cout << endl << Name << ", please, insert the desirable move:"; 
        //^^this is a class atribute 
    std::string keyboard; 
    std::stringstream ss; 

    std::getline(std::cin, keyboard); 

    ss << keyboard[0]; 
    ss >> pos; 

    return (pos); 
}//end of Human class method *play* 

この関数が呼び出されます、私は選手の動きが受け入れられた場合には、このように、確認してくださいそれは0と8の間にあるかどうかを確認します。また、"r"または"q"というエントリがあるかどうかを確認したいのです。プレイヤーが1ターン前に戻ったり、ゲームを終了したりすることを意味します。プレイヤーは、この指示を入力したかどうかを確認するために

は、私がこれすなわち行います

int playermove = player1.play() 
if (playermove == 'q') 
    ... 

を私は文字が入力されたときPOSがは0が返され、理由は上記に示したものからトラブルを抱えています。しかし、実用的な解決策はありません。

私に代替案を教えてください。

答えて

0

qを確認できます。また、誤って-48(ASCIIテーブルのため)を引くことができます。

はこれをチェックしてください:

#include <iostream> 
using namespace std; 

int main() { 
    char tmp; 
    cin >> tmp; 
    if(tmp == 'q') { 
     cout << tmp; 
     return 0; 
    } else { 
     int smth = tmp; 
     cout << smth - 48; 
     return 0; 
    } 
    return 0; 
} 

をこれはqと数字をキャッチします。次に、(> -48 & & < -39)をチェックして、(smth-48)が0-9の範囲にあるかどうかを確認することができます。

関連する問題