Código C++:
Ver original#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main() {
string mas;
do {
const char * ordenador[3] = { "piedra", "papel", "tijera" };
enum resultado_t { PIEDRA, PAPEL, TIJERA };
cout << "Eleccion de la maquina: " << ordenador[s] << endl;
int eleccion;
cout << "Introduce n. jugada (1 = piedra, 2 = papel, 3 = tijera): ";
cin >> eleccion;
cout << endl;
--eleccion;
if ( eleccion == s ) {
cout << "Empate!" << endl;
}
else
if ( eleccion == PIEDRA ) {
if ( s == PAPEL ) {
cout << "Perdistes!" << endl;
} else {
cout << "Ganastes!" << endl;
}
} else
if ( eleccion == PAPEL )
if ( s == PIEDRA ) {
cout << "Ganastes!!" << endl;
} else {
cout << "Perdistes!!" << endl;
}
else
if ( s == PIEDRA ) {
cout << "Perdistes!!!" << endl;
} else {
cout << "Ganastes!!!" << endl;
}
cin.ignore ( 1, '\n' ); //Esto hace que se limpie el bufer por si tiene \n de antes ;)
cout << "¿Quieres jugar otra vez? (presiona s/S y enter si quieres seguir jugando o simplemente presiona enter si quiere salir) " << endl;
getline ( cin, mas );
if ( mas == "s" || mas == "S" ) {
continue;
}
if ( mas.empty() ) {
break;
}
} while ( true );
return 0;
}
el problema viene de usar el operador >> que cuando pulsas enter '\n' pues ese mismo enter ya cuenta para finalizar el programa.
usando cin.ignore(1,'\n'); limpiamos este \n molesto y todo arreglado.
esa instrucion te va servir mucho tambien cuando uses cin antes de getline(). Recuerda que el problema es que cuando usas >> y pulsas enter va junto XDDD
la mecánica justa no te lo puedo explicar pero funciona muy bien.
Si quieres saber mas sobre cin.ignore() google es nuestro amigo XDD