Ir ao conteúdo
  • Cadastre-se

Jogo da forca em c


Mateus Nunes

Posts recomendados

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");
}
}
}
}

 

Link para o comentário
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.

Link para o comentário
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;
}
///////////////////////////////////////////////////////////////////////////////////

 

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...