Ir ao conteúdo
  • Cadastre-se
Mateus Nunes

Jogo da forca em c

Recommended Posts

Boa tarde galera. Me deparei com um jogo da forca em C - versão simplificada - e queria tirar algumas dúvidas com quem estiver disposto.

Primeiramente, gostaria de saber como a função strlen funciona. Além disso, acredito que há 5 contadores no algoritmo (life, retorna, points, cont e cont2) e estes em algumas partes aparecem da seguinte forma: retorna++; points++......para quê isso é feito?? Por fim, pergunto se há alguma forma de elaborar uma função que realize esse processamento, de forma que eu possa adicioná-la numa espécie de biblioteca.h e, posteriormente, chamá-la pelo nome na função main() - se a resposta for sim, tem como me mostrar como fica?

 

Obrigado pela força aí!!!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <math.h>
/////// #include "Biblioteca_Projeto.h" [?] EU QUERIA ADICIONAR AQUI E SÓ CHAMAR NA FUNÇÃO MAIN, PELO NOME
main()
{
char word[21]; //Player 1
char gap[21]="-"; //Lacunas
char letra[21];
char erros[21];
char tam;
int life=5; int retorna; int points=0;
int cont=0; int cont2=0;



setlocale(LC_ALL,"portuguese");
printf("Jogador 1, digite a palavra para o Jogador adivinhar: ");
gets(word);
system("cls");

for(cont=0;cont<strlen(word);cont++) // [?] strlen
{
gap[cont]="-";
tam=strlen(word);
}//Fim do 1ºfor

while(life>0)
{
retorna=0;
printf("\n\t%s\n",gap);
printf("\tDigite uma letra: ");
gets(letra);
system("cls");
printf("\n\n\tLetra Digitada: %s\n",letra);
for(cont=0;cont<strlen(word);cont++)
   {
   if(letra[0]==word[cont])
     {
     gap[cont]=word[cont];
     retorna++; ////// [?] o que é o ++, que função está desempenhando nesse caso?
     points++;
     }//Laço do 1º if
   }//Laço do for

if(retorna==0)
{
life--;
if(life==0)
{
printf("\n\tGAME OVER!\n");
printf("\n\tA palavra cera era: %s\n",word);
break;
}
else
{
printf("\n\tVocê errou uma letra. Restam %d vidas\n\n\n",life);
system("pause");
system("cls");
erros[cont2]=letra[0];
cont2++;
}
}
else
{
if(points==tam)
{
printf("\n\tVocê acertou a palavra. Parabéns!\n");
break;
}
else
{
printf("\n\n\tVocê acertou uma letra. Continue assim!\n\n\n");
system("pause");
system("cls");
}
}
}
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

strlen() é uma função que recebe um vetor de char como parâmetro e retorna um inteiro que é a quantidade de caracteres contidos nesse vetor (frase ou palavra)

já quando você faz

Citação

inteiro++

é a mesma coisa que

Citação

inteiro += 1

ou

Citação

inteiro = inteiro + 1

 

isso serve para

Citação

inteiro--

também.

 

Quanto a parte da função eu não entendi o que você quis dizer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas qual o objetivo do retorna++ naquela linha, o que ele desempenha??

 

Vou dar um exemplo de função, porém a que eu necessito deve fazer processamento em um conjunto de caracteres, e a do exemplo faz processamento com números.

 

Primeiramente, para deixar claro, gostaria de criar uma função que realiza-se algum processamento, de forma que esta fica armazenada em uma biblioteca.h com um certo nome e certos parâmetros. Assim, quando eu quiser utilizá-la, apenas a chamo pelo "nome" na função main()

 

Isso é uma das exigências do projeto...........segue abaixo o exemplo, note que, em forma de comentário, eu aponto as funções

(acredito que no caso do projeto - primeira postagem - a função deva ser do tipo char, pois a professora pede que seja realizado um processamento de caracteres na função)

 

Obrigado pela atenção!!!!!!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <math.h>
#include <conio.h>
#include "Biblioteca_Projeto.h"
main()
{
float a,b;
double c;
int qtd;

setlocale(LC_ALL,"portuguese");
printf("\t\t\t\tFUNÇÃO AFIM");
        printf("\n\nPara a função do tipo y=ax+b, determine os parâmetros:");
        printf("\n\nDigite o valor de a: ");
        scanf("%f",&a);
        printf("\nDigite o valor de b: ");
        scanf("%f",&b);
        printf("\nInforme o número de pontos, da coordenada x: ");
        scanf("%d",&qtd);
        float mat[qtd][2];
        preenche_mat_x(qtd,mat); ///Função void
        preenche_mat_y(qtd,mat,a,b); ///Função void
        show_mat_pontos(qtd,mat); ///Função void
}

////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////

//MINHA BIBLIOTECA (SALVA COM O NOME DE Biblioteca_Projeto.h)
void preenche_mat_x(int qtd, float mat[qtd][2])
{
int index;

for(index=0;index<=qtd-1;index++)
{
printf("\nEntre com valor real para x%d: ",index+1);
scanf("%f",mat[index]);
}

return;
}
///////////////////////////////////////////////////////////////////////////
void preenche_mat_y(int qtd, float mat[qtd][2], float a, float b )
{
int index;

for( index=0;index<=qtd;index++)
{
mat[index][1]=a*mat[index][0]+b;
}

return;
}
//////////////////////////////////////////////////////////////////////////////////
void show_mat_pontos(int qtd, float mat[qtd][2] )
{
int index;

system("cls");
printf("Pontos (x ; y):");

for(index=0;index<=qtd-1;index++ )
{
printf("\n\n%dº Ponto: (%.2f ; %.2f)\n",1+index,mat[index][0],mat[index][1]);
}

return;
}
///////////////////////////////////////////////////////////////////////////////////

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×