2017-10-19 26 views
0

Je suis en train de développer un jeu Tic Tac Toe pour l'école, mais il devient difficile de développer une bonne façon de lire une pièce de clavier, dans un format pratique et agréable façon.Comment lire à partir du clavier un texte aléatoire complet, filtrer et lancer

Voici ce que je faisais:

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* 

Cette fonction sera appelée et je vérifierai si le mouvement du joueur était acceptable, donc, voir si elle se situe entre 0 et 8 . Aussi, je voudrais vérifier s'il y avait une entrée de "r" ou "q", car cela signifiera que le joueur veut revenir un tour ou quitter la partie.

Pour vérifier si le joueur a entrer dans ce mode, je fais i.e.:

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

J'ai ennuis à cause de ce qui a été indiqué ci-dessus, pos est retourné 0 quand un personnage est entré. Mais, je ne vois pas de solutions pratiques.

Pourriez-vous me suggérer des alternatives?

Répondre

0

Vous pouvez vérifier r et q et sur false juste soustraire -48 (en raison de la table ASCII).

Check this out:

#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; 
} 

Cela va attraper q et des chiffres. Vous pouvez ensuite vérifier si (smth - 48) est dans la plage 0-9 en cochant (> -48 & & < -39).