jogo da forca em C!

thanks vou tentar perceber entao...
agora estou com problemas quando se insere uma palavra nao consigo vereficar se esta contida no array!
cumps
 
Também podes usar strcmp(); para comparar as palavras (incluindo string.h)

E em vez de '\0', usa '\n' se estiveres a planear usar mais de duas palavras, mas para isso, vais precisar de fazer scanf("%[^\n]",asdf);.


PS: sou demasiado preguiçoso para ler os outros posts lol
 
um exemplo:

>> crias duas strings, uma para conter a palavra, outra para conter os espaços:

Código:
char palavra[50];
char hidden[50];
>> depois pedes que introduzam a palavra:

Código:
scanf("%s", palavra);
>> depois crias um ciclo que substitua a palavra por espaços em 'hidden':

Código:
for(i=0; i<strlen(palavra); i++)
hidden[i] = '_';

hidden[i+1]='\0'

>> depois pedes uma letra (definida por exemplo por um 'char letra') e a comparação e substituição é feita da seguinte forma:

Código:
j=0;
 
 /* verifica se a letra ja existe */
 for(i=0; i<strlen(hidden); i++)
  if(hidden[i] == letra) 
   j=1;

 /* procura a letra na palavra e substitui na palavra escondida */
 if(j == 0) {
  for(i=0; i<strlen(hidden); i++)
   if(palavra[i] == letra) {
    j=2;
    hidden[i]=letra;
   }
 } 
 
 /* verifica se a palavra j‡ est‡ certa */
 if(strcmp(hidden, palavra) == 0)
  j=3;

 /* envia o c—digo correspondente ao cliente */
 if(j==0) {
  printf("não existe\n");
 } else if(j==1) {
  printf("letra já existente\n");
 } else if(j==2) {
  printf("letra correcta\n");
 } else if(j==3) {
  printf("palavra completa!\n");
 }
espero ter ajudado..
 
Semttulo.jpg


void testaletra(char *caract)
{
int i;

for (i=0;chave; i++)
{
if(chave==*caract)
{
palavra=chave;
printf("%s", palavra);
}
}
}


void tentativas()
{
int j=0, i=0;
char caract;
n
do
{

printf("\nInsira uma letra: ");
caract=getchar();
testaletra(&caract);

/*printf("\nTem %d tentativas!",x);*/

}while(caract !=27);

}




agradeco ao pessoal todas as dicas, mas a entrega do trabalho sera amanha e ocorre-me isso cada vez que tento inserir um letra e pede para inserir 2x, nao percebo porque eu vou-vos mandar o codigo correspondente a esse bloco e tambem queria por quando acerta e erra mas nao sei como...
cumps
 
isso acontece-te porque a função scanf deixa em buffer um '\n' pra resolver isso, podes fazer um define, logo a seguir aos #include:

#define eoln while (getc(stdin) != '\n') {;}

o que isto faz é limpar o buffer até encontrar um '\n'. Usa-o sempre a seguir ao scanf, deve resolver o problem... para o chamares fazes simplesmente


li o código na diagonal, mas quando tiver mais tempo, se surgir alguma dica ainda a posto hoje!!

cumps!
 
mas eu nesse bloco nao tenho la nenhum scanf...
inserio-o ai, isso ta correcto mas agora antes aparece 2 palavras(escondidas) seguidadas
do genero _______ _______ insira a letra:


printf("\nInsira uma letra: ");
caract=getchar();
testaletra(&caract);
eoln;
/*printf("\nTem %d tentativas!",x);*/

}while(caract !=27);
 
Última edição:
getchar() era o que queria dizer, dsclpa! com o 'eoln' passa a funcionar aí? pq a única raazão plausível de repetir o ciclo, é mesmo o buffer não estar 'limpo'!
 
fflush(stdin) tambem serve pelo que me disseram!

agora nao consigo inserir as palavras num vector para que mostre as palavras inseridas...
 
mas eu nesse bloco nao tenho la nenhum scanf...
inserio-o ai, isso ta correcto mas agora antes aparece 2 palavras(escondidas) seguidadas
do genero _______ _______ insira a letra:


printf("\nInsira uma letra: ");
caract=getchar();
testaletra(&caract);
eoln;
/*printf("\nTem %d tentativas!",x);*/

}while(caract !=27);

fechaste o buffer com o caracter '\0' na ultima posicao como te tinha dito no ultimo ou penultimo post?
 
Back
Topo