Ir ao conteúdo
  • Cadastre-se

Dúvida com código


Maik Sullivan

Posts recomendados



#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <ctype.h>


using namespace std;


const int quant_palavras = 6;


char banco[quant_palavras][30]={
"cachorro",
"computador",
"cadeira",
"automovel",
"edificio",
"smartphone"};


char palavra_sort[30];
char palavra_dig[30];






int Sorteia(){
    srand(time(NULL));
    return rand() % (quant_palavras);
}


void imprime_palavra_dig(){
    cout<<"\n     "<<strlen(palavra_sort)<<" letras \n\n    ";
    for(int i=0;i < strlen(palavra_sort) ;i++){
        cout<<palavra_dig[i]<<" ";
    }
}


void copia(int ind){
    for(int i=0;i<30;i++){
        palavra_sort[i] = banco[ind][i];
    }
}


void limpa_palavra_dig(){


    for(int i=0;i < strlen(palavra_sort);i++){
        palavra_dig[i] = '_';
    }
}


void imprime_forca(int let_erro){
    switch(let_erro){
         case 0:
            cout<<"  _____ "<<endl;
            cout<<" |      "<<endl;
            cout<<" |      "<<endl;
            cout<<" |      "<<endl;
            cout<<" |      "<<endl;
            break;
        case 1:
            cout<<"  _____ "<<endl;
            cout<<" |    O "<<endl;
            cout<<" |      "<<endl;
            cout<<" |      "<<endl;
            cout<<" |      "<<endl;
            break;
        case 2:
            cout<<"  _____ "<<endl;
            cout<<" |    O "<<endl;
            cout<<" |    | "<<endl;
            cout<<" |      "<<endl;
            cout<<" |      "<<endl;
            break;
        case 3:
            cout<<"  _____ "<<endl;
            cout<<" |    O "<<endl;
            cout<<" |   /| "<<endl;
            cout<<" |      "<<endl;
            cout<<" |      "<<endl;
            break;
        case 4:
            cout<<"  _____ "<<endl;
            cout<<" |    O "<<endl;
            cout<<" |   /|\\"<<endl;
            cout<<" |      "<<endl;
            cout<<" |      "<<endl;
            break;
        case 5:
            cout<<"  _____ "<<endl;
            cout<<" |    O "<<endl;
            cout<<" |   /|\\"<<endl;
            cout<<" |   /  "<<endl;
            cout<<" |      "<<endl;
            break;
        case 6:
            cout<<"  _____ "<<endl;
            cout<<" |    O "<<endl;
            cout<<" |   /|\\"<<endl;
            cout<<" |   / \\"<<endl;
            cout<<" |       "<<endl;
            break;
    }
}


bool verifica_letra(char letra, char vetor[26]){
    for(int i=0;i<strlen(vetor);i++){
        if(letra==vetor[i]){
            return true;
        }
    }
    return false;
}


void substitui(char letra){
    for(int i=0;i<strlen(palavra_sort);i++){
        if(palavra_sort[i]==letra){
            palavra_dig[i] = letra;
        }
    }


}


void imprime_let_dig(char letras[], int tam){
    cout<<"\n\n Letras digitadas: ";
    for(int i=0;i < tam ;i++){
        cout<<letras[i]<<", ";
    }
    cout<<"\n";
}


bool palavra_completa(){
    for(int i=0;i<strlen(palavra_sort);i++){
        if(palavra_dig[i]=='_'){
            return false;
        }
    }
    return true;
}


int main(){


    int ind_palavra = Sorteia(); //Sortear uma palavra


    copia(ind_palavra);


    limpa_palavra_dig(); // Função responsável por limpar o vetor da palavra digitada


    int cont_let_dig=0;      // contador de letras digitadas


    int cont_erros=0;


    char letras_digitadas[26];


    char letra;


    while(cont_erros<6){
        system("cls");
        imprime_forca(cont_erros);
        imprime_palavra_dig();
        imprime_let_dig(letras_digitadas,cont_let_dig);
        cout<<"\n\n Tentativas restantes: "<<6-cont_erros<<"\n\n";
        cout<<"\n\n";
        cout<<"Digite uma letra: ";
        cin>>letra;
        letra = tolower(letra);
        if(verifica_letra(letra,letras_digitadas)){
            cout<<"Letra ja foi digitada! Tente novamente!\n\n";
            system("pause");
        }else{
            letras_digitadas[cont_let_dig] = letra;
            cont_let_dig++;


            if(verifica_letra(letra,palavra_sort)){
                substitui(letra);
            }else{
                cout<<"\nLetra incorreta! Tente novamente\n\n";
                cont_erros++;
                system("pause");


            }
        }


        if(cont_erros>=6){
            system("cls");
            cout<<"\n\n\tSuas tentativas acabaram!\n Reinicie o software para tentar novamente!\n";
            system("pause");
            return 0;
        }
        if(palavra_completa()){
            cout<<"\n\tPARABENS!!!\n voce acertou a palavra!\n\n";
            system("pause");
            return 0;
        }
    }


    return 0;
}

Link para o comentário
Compartilhar em outros sites

Vou mandar o codigo, so nao repara que quando eu fiz estava apreendendo ainda, então mal utilizei ponteiros ou abusei de funções nem usei objetos. Agora que estou estudando C# e windows Form vou ve se crio um para windows tb rs

 

 

#include <stdio.h>#include <stdlib.h>#include <string.h> // Biblioteca para manipular strings#include <windows.h> // biblioteca para usar comandos de mover o cursor#include <time.h> // Para poder gerar um fator de aleatoriedade#include <conio.h>COORD coord={0,0}; /* Estes comandos antes do int mains serve para "ligar" o comando de mover o cursor"*/ void gotoxy(int x,int y) {   coord.X=x; coord.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); }int main(){    char banco [30][13] = {"melancia","banana","jabuticaba","pessego","goiaba","medico","dentista","professor","Engenheiro","pedreiro",    "javali","leopardo","kanguru","ornitorrinco","cavalo","fusquinha","ferrari","lamborguini","vectra","palio","brasil","noruega",    "holanda","italia","russia","contagem","uberlandia","barbacena","uberaba","alfenas"}; // Banco com as palavras    char dicas [13];    char palavra [13];    int aleat,i,letras,vidas,aux;    bool jogo, continua;    char mostra [13];    char letra;    char resp [3];    char * ptr;    char chutes [30];    int contador,index,pontos;    char auxiliar [13];    char auxiliar2 [13];    continua = true;    while (continua==true){    strcpy(chutes,"             ");    contador = 0;    vidas = 6;    srand(time(NULL));    aleat = rand() % 30;    for (i=0;i<13;i++) {      palavra[i] = banco [aleat][i];    }// gerador da palavra aleatória    letras = strlen(palavra); //Quantas caracteres tem a palavra aleatoria    if (aleat <= 5){        strcpy (dicas,"FRUTA");    }    else if ((aleat <=10) && (aleat >5)){        strcpy (dicas,"PROFISSAO");    }    else if ((aleat <=15) && (aleat >10)){        strcpy (dicas,"ANIMAL");    }    else if ((aleat <=20) && (aleat >15)){        strcpy (dicas,"CARRO");    }    else if ((aleat <=25) && (aleat >20)){        strcpy (dicas,"país");    }    else if ((aleat <=30) && (aleat > 25)) {        strcpy (dicas,"CIDADE");    }    for (i=0;i < letras;i++){    mostra[i]='_';    }    jogo=true;    pontos=0;    do {    gotoxy(30,0);    printf("JOGO DA FORCA");    gotoxy(2,3);    printf("NUMERO DE LETRAS: %d",letras);    gotoxy(25,3);    printf("DICA: %s",dicas);    gotoxy(2,5);    printf("CHANCES: %d",vidas);    gotoxy(25,5);    printf("LETRAS JA DIGITADAS:");    gotoxy (2,6);    printf("___________");    for (i=7;i<16;i++){        gotoxy(2,i);        printf("I");    }    gotoxy (12,7);    printf("I");    gotoxy (1,17);    for (i=0; i < letras;i++){        printf(" %c",mostra[i]);    }    gotoxy (2,19);    printf("DIGITE UMA LETRA: ");    gotoxy (19,19);    scanf("%c",&letra);    setbuf(stdin,NULL);    gotoxy (19,19);    printf("                     ");    ptr = strchr(chutes, letra); // comando que procura dentro de uma string    if (ptr!=NULL) { //ja usou a letra, char foi encontrado        printf("\n\n  voce JA DIGITOU ESTA LETRA                ");    }    else{       // printf("\n\n  LETRA NOVA                  ");        chutes[contador]=letra;        contador=contador+1;        gotoxy(46,5);        printf("%s",chutes);        ptr = strchr(palavra, letra);        index = ptr - palavra;        if (ptr!= NULL) {// verifica se acertou a letra;           gotoxy(0,21);           printf("  A PALAVRA CONTEM ESTA LETRA 1 VEZ  ");           gotoxy(46,5);           printf("%s",chutes);           mostra[index] = letra;           gotoxy (1,17);           for (i=0; i < letras;i++){           printf(" %c",mostra[i]);           }           pontos = pontos + 1;           strcpy(auxiliar,palavra);           palavra[index] = '1';           ptr = strchr(palavra, letra);           index = ptr - palavra;           gotoxy(0,21);           if (ptr!=NULL) {//verifica se tem uma segunda letra igual na palavra                gotoxy(0,21);                printf("  A PALAVRA CONTEM ESTA LETRA 2 VEZEZ  ");                mostra[index] = letra;                gotoxy (1,17);                for (i=0; i < letras;i++){                printf(" %c",mostra[i]);                }                pontos = pontos + 1;                strcpy(auxiliar2,palavra);                palavra[index] = '1';                ptr = strchr(palavra, letra);                index = ptr - palavra;                if (ptr!=NULL) {//verifica uma terceira ocorrencia da letra na palavra                    gotoxy(0,21);                    printf("  A PALAVRA CONTEM ESTA LETRA 3 VEZEZ  ");                    mostra[index] = letra;                    gotoxy (1,17);                    for (i=0; i < letras;i++){                    printf(" %c",mostra[i]);                    }                    pontos = pontos + 1;                }                else {                    strcpy(palavra,auxiliar);                }           }           else {            strcpy(palavra,auxiliar);           }        }        else {           gotoxy(0,21);           printf("  voce ERROU                           ");           gotoxy(46,5);           printf("%s",chutes);           vidas = vidas -1;           switch (vidas)           {              case 5:              gotoxy (12,8);              printf("O");              break;              case 4:              gotoxy (12,9);              printf("I");              gotoxy (12,10);              printf("I");              break;              case 3:              gotoxy (11,9);              printf("/");              break;              case 2:              gotoxy (13,9);              printf("\\");              break;              case 1:              gotoxy (11,11);              printf("/");              break;              case 0:              gotoxy (13,11);              printf("\\");              gotoxy(0,21);              printf("  ACABARAM SUAS CHANCES!!, A PALAVRA ERA %s",palavra);              Sleep(2000);              system("cls");              gotoxy(15,15);              printf("DESEJA JOGAR UM NOVO JOGO?? (sim ou nao)            ");              gotoxy(25,17);              setbuf(stdin,NULL);              gets(resp);              setbuf(stdin,NULL);              if (strcasecmp(resp,"sim")==0){              jogo = false;              system("cls");              }              else {                jogo =false;                continua =false;                system("cls");              }           }        }    }if (pontos>=letras) {    gotoxy(0,21);    printf("  voce ACERTOU A PALAVRA!!!                   ");              Sleep(2000);              system("cls");              gotoxy(15,15);              printf("DESEJA JOGAR UM NOVO JOGO?? (sim ou nao)            ");              gotoxy(25,17);              setbuf(stdin,NULL);              gets(resp);              setbuf(stdin,NULL);              if (strcasecmp(resp,"sim")==0){              jogo = false;              system("cls");              }              else {                jogo =false;                continua =false;                system("cls");              }}}while (jogo==true);    }system("cls");gotoxy(10,10);printf("OBRIGADO POR JOGAR!");printf("\n\t\tcodigo desenvolvido por LEOTANIS LEITE");Sleep(3000);    return 0;}

Hoje eu usaria muito mais funções, e guardaria o banco numa struct.

Link para o comentário
Compartilhar em outros sites

Fiz muita coisa ne rs, rodou o programa?? qual parte você tem duvida??

 

Sua duvida é referente ao sorteio das palavras??

ou a parte fixa do texto na tela, ou a busca pela letra digitada na palavra e ver quantas vezes acertou ou se errou, ou se a letra ja foi digitada anteriormente.

 

Recomendo rodar o programa e jogar, ae você ja vai entendendo mais ou menos o funcionamento.

Link para o comentário
Compartilhar em outros sites

Fiz muita coisa ne rs, rodou o programa?? qual parte você tem duvida??

 

Sua duvida é referente ao sorteio das palavras??

ou a parte fixa do texto na tela, ou a busca pela letra digitada na palavra e ver quantas vezes acertou ou se errou, ou se a letra ja foi digitada anteriormente.

 

Recomendo rodar o programa e jogar, ae você ja vai entendendo mais ou menos o funcionamento.

Me explica tudo !

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!