Queiros
Power Member
boas pessoal... eu tenho o seguinte menu para o jogo do tetris e na parte da escolha do nivel eu meto o nivel e aquilo continua a pedir o nivel. o que eu queria era escolher o nivel e voltar ao menu principal, se o nivel for invalido gostaria que continuasse a pedir até ser um correcto.. desde ja agradeço qualquer ajuda
sei que o problema esta no ciclo de repetição mas nao consigo ver onde..
Código:
#include<iostream>
usingnamespace std;
void menu();
int opcaomenu( char op );
int niveldificuldade(int nivel);
int main() {
char op;
int x = 0;
do {
menu();
cin >> op;
op = toupper(op);
x = opcaomenu( op );
} while( x == 0 );
}
void menu( void ) {
cout << "**************************************************" << endl;
cout << "*********TETRIS*******TETRIS*******TETRIS*********" << endl;
cout << "**************************************************" << endl << endl <<endl;
cout << "Menu:" << endl;
cout << "J - Jogar." << endl;
cout << "N - Nível de dificuldade do jogo." << endl;
cout << "P - Pontuacao." << endl << endl;
cout << "S - Sair do jogo." << endl;
}
int opcaomenu( char op ) {
char sair;
int nd = 1, retorno = 0;
switch(op) {
case'J': {
break;
}
case'N': {
nd = niveldificuldade( nd );
system("cls");
cout << "Opcão selecionada: " << nd << endl;
break;
}
case'P': {
break;
}
case'S': {
do {
cout << "Deseja sair do jogo? (s/n)" << endl;
cin >> sair;
sair=toupper(sair);
if( sair == 'S' ) {
retorno = 1;
}
elseif( sair == 'N' ) {
retorno = 0;
}
else {
cout << "Opção não reconhecida." << endl;
}
} while(sair!='S' && sair !='N');
break;
}
default: {
cout << "Opção invalida." << endl;
}
}
return retorno;
}
int niveldificuldade(int nivel) {
system ( "cls" );
do{
cout << "Escolha um nível de dificuldade:" << endl;
cout << " 1" << endl;
cout << " 2" << endl;
cout << " 3" << endl;
cout << " 4" << endl;
cin >> nivel;
if ((nivel < 1) || (nivel > 4)) {
cout << "Nível inválido!" << endl;
}
}while ((nivel !='1') && (nivel !='2') && (nivel!='3') && (nivel!='4')) ;
return nivel;
}
sei que o problema esta no ciclo de repetição mas nao consigo ver onde..
Última edição pelo moderador: