0
Good evening, I created a C++ Hangman as an exercise and would like to receive suggestions for code improvement. Thank you from the outset for those who can answer.
Follows the code:
#include <windows.h>
#include <iostream>
#include <string>
std::string palavfr_secreta;
std::string dica;
std::string esconde;
short chances;
short acertos;
short erros;
void jogo(){
std::string letra_digitada;
std::string letra_secreta;
std::string letra_esconde;
short contador=0;
std::cout << "================== " << std::endl;
std::cout << "Dica-------------> " << dica << std::endl;
std::cout << "Palavra secreta--> " << esconde << std::endl;
std::cout << "Chances----------> " << chances << std::endl;
std::cout << "================== " << std::endl << std::endl;
std::cout << "Digite uma letra-> ";
std::cin >> letra_digitada;
std::cin.ignore();
if(letra_digitada.size()>1){
system("cls");
std::cout << "DIGITE SOMENTE UMA LETRA!" << std::endl;
jogo();
}else{
for(unsigned i=0; i<palavfr_secreta.size(); i++){
letra_secreta=palavfr_secreta.at(i);
letra_esconde=esconde.at(i);
if(letra_digitada.compare(letra_esconde)==0){
system("cls");
std::cout << "Você não pode digitar a mesma letra mais de uma vez" << std::endl;
chances--;
break;
}else if(letra_digitada.compare(letra_secreta)==0){
system("cls");
esconde.at(i)=letra_digitada.at(0);
contador++;
acertos++;
}else if(i==palavfr_secreta.size()-1 && contador==0){
system("cls");
std::cout << "Letra não correspondente" << std::endl;
chances--;
erros++;
}
}
}
if(chances==0){
system("cls");
std::cout << "======================================================================" << std::endl;
std::cout << "Você perdeu! A frase ou palavra secreta era " << "'" << palavfr_secreta << "'" << std::endl;
std::cout << "Total de acertos -> " << acertos << std::endl;
std::cout << "Total de erros -> " << erros << std::endl;
std::cout << "======================================================================" << std::endl;
}else if(esconde.compare(palavfr_secreta)==0){
system("cls");
std::cout << "=======================================================================" << std::endl;
std::cout << "Você acertou! A frase ou palavra secreta era " << "'" << palavfr_secreta << "'" << std::endl;
std::cout << "Total de acertos -> " << acertos << std::endl;
std::cout << "Total de erros -> " << erros << std::endl;
std::cout << "=======================================================================" << std::endl;
}else{
jogo();
}
}
int main(){
std::cout << "===============Jogo da Forca===============" << std::endl;
std::cout << "Digite uma palavra ou frase secreta-> ";
getline(std::cin, palavfr_secreta);
system("cls");
std::cout << "Escreva uma dica-> ";
getline(std::cin, dica);
system("cls");
std::cout << "Defina o número de Chances-> ";
std::cin >> chances;
for(unsigned i=0; i<palavfr_secreta.size(); i++){
if(palavfr_secreta.at(i)==' '){
esconde+=" ";
}else{
esconde+="-";
}
}
system("cls");
jogo();
return 0;
}
That is not the purpose of this community and your question is very broad, which exactly seeks to improve?
– Leandro Angelo
@Leandro Angelo I wonder if in my code there are errors related to bad programming practice or something else that can interfere with the functionality of the code.
– user102920