¿Por qué mi bucle no se reinicia en la primera iteración? C++
Estoy haciendo un juego de dados en C++. Me preguntaba por qué no reinicia el bucle. El juego es al mejor de 3. Se supone que debe reiniciar el bucle siempre que el jugador quiera seguir jugando. Sin embargo, solo reinicia el bucle una vez. La segunda vez que presiono “Y” o sí en este caso, simplemente sale del programa.
He intentado poner el reinicio en un bucle while anidado, pero tampoco parece funcionar.
reinicio:
mientras ((pWin!=2) && (cWin!=2)) {
pDice1 = rand() % 6 + 1;
cDice1 = rand() % 6 + 1;
cout << "La puntuación del jugador es: " << pDice1 << endl;
cout << "La puntuación de la computadora es: " << cDice1 << endl;
if (cDice1 > pDice1) {
cout << "¡La computadora gana!" << endl << endl;
cWin++;
} if (pDice1 > cDice1) {
cout << "¡El jugador gana!" << endl << endl;
pWin++;
} if (pDice1 == cDice1) {
cout << "¡Es un empate!" << endl << endl;
} if (pWin > cWin) {
cout << "¡El jugador gana esta ronda! ¿Desea seguir jugando?" << endl;
cin >> Y;
if (Y == 'y') {
goto reinicio;
} else {
exit(0);
}
}if (cWin > pWin) {
cout << "¡La computadora gana esta ronda! ¿Desea seguir jugando?" << endl;
cin >> Y;
if (Y == 'y') {
goto reinicio;
} else {
exit(0);
}
}
}
davy.ai
Parece que el problema está con la instrucción
goto
. Las instruccionesgoto
generalmente se consideran una mala práctica y pueden provocar un comportamiento inesperado. En lugar de usargoto
, deberías usar un buclewhile
para reiniciar el juego.