Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gudhu

Jogo da forca em C.

Recommended Posts

foi passado um trabalho pra mim..fazer um jogo de forca em C....eu pensei em faze algo com variaveis "char"mas ai eu teria q fazer uma quantidade de variaveis a,b,c,d,e... x,y,z... dependendo da qntidade de letras da palavra q eu quero..como eu faço pra q nao tenha limites de letras da palavra?uso string?ajudem por favor !

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar 2 vetores de char, um para guardar a palavra secreta e outro para guardar as letras q o cara esta acertando, e se quiser algo mais legal um terceiro vetor para guardar as letras tentadas. exemplo

 

char palavra_secreta[20]; //achu q 20 letras ta otimo pra uma palavra mas se quiser coloque ai uns 250, seilachar palavra_tentada[20]; // aqui vai guardando conforme vai acertandochar letras_tentadas[26]; // 26 para ter uma posição de A até Z

Essa é uma ideia, nao sei se era essa sua duvida... tenta faze alguma coisa ai, se tiver problemas poste ai seu problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim..ateh ai eu tinha pensado..mas tipow..saca soh..printf ("entre com palavra a ser adivinhada:");gets(palavra);while (tentativa!=6){printf("digite uma letra:")gets(try);if(try[0]==palavra[0]){printf("primeira letra eh %s",try[0]);}if(tr[0]==palavra[1]){printf("segunda letra eh %s,try[0]);} ............else{tentativa++;}..eu fiz o programa ateh ai..nao tem algum outro jeito pra fica melhor, q o programa imprima qntas lacunas tem a palavra.. e mostre a posicao delas, qndo for acertando e tal?

Compartilhar este post


Link para o post
Compartilhar em outros sites

As lacunas eh bem simples de implementar. Naquela ideia de 3 vetores, uma para a palavra, outro para guardar as acertadas e outro para guardar as letras tentadas, você pode fazer assim:

 

Depois q ja tiver sido digitada a palavra_secreta, voce tem q saber qual o tamanho dela, para isso pode usar strlen(palavra_secreta) q retorna o tamanho da string ou entao faça um for contando quantas letras até achar o '\'.

Agora no vetor onde vai ficar a palavra_tentada você prenche com _ (sublinhado) o numero de posições equivalente ao tamanho da palavra_secreta. Se a palavra for CASA entao no vetor palavra_tentada ele tera q preencher 4 posições do vetor com o _ e ai eh soh mandar imprimir na tela.

vo por um exemplo q acho q a explicação ta meio confusa

 

cout << "Digite uma palavra\n";cin >> palavra_secreta;for (int i = 0; i < strlen(palavra_secreta); i++)  		{			 palavra[i] = toupper(palavra[i]);			 palavra_tentada[i] = '_';					}

Qualquer coisa posta ai...

 

*** esqueci de dizer q para usar strlen o cabeçalho eh #include <string>, e q o compilador q utilizo é o Dev-cpp

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui fazer..

ele tah rodando certo.. porem logo apos as lacunas, aparece alguns caracteres estranhos (omega, pi, etc..)

#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>int main(){char palavra[25],letra[25],lacuna[25];int vida=6,x,i;printf("\n\nentre com palavra secreta:");gets(palavra);clrscr();for(i=0;i<strlen(palavra);i++){lacuna[i]='_';}while(vida>0){    x=0;    printf("\n\n%s\n",lacuna);    printf("\nentre com UMA letra: ");    gets(letra);    for(i=0;i<strlen(palavra);i++)    {	      if(letra[0]==palavra[i])      {	lacuna[i]=palavra[i];	x++;      }    }if(x==0){vida--;printf("\nvc perdeu uma vida!\nvoce tem %d vida(s) restando",vida);}}printf("\n\nVC FOI ENFORCADO, fim de jogo!\n\n\n a palavra secreta era: %s",palavra);getchar();getchar();return 0;}

como eu posso arrumar isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui aparece um W ou um = no final hehehe... falta o '\' ja q eh um vetor de caracters. Depois de colocar os '_' tem q por o '\' pra indicar q a string acabou.

 

Bom, eu tambem tive q criar um jogo da forca esse semestre, e ja q você ja esta terminando o seu, vo postar o meu, caso queira alguma dica de algo, estamos ai http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Super_Forca

 

*** OBS

Onde esta escrito '\' leia-se BARRA ZERO (q maldição nao poder escrever um simples BARRA ZERO!!!!)

Compartilhar este post


Link para o post
Compartilhar em outros sites

é impressão minha ou o programa do amigo ali em cima ta incompleto?testei e quando você digita a palavra certa mesmo assim o programa n encerra..so encerra quando você perde as tentativas.. ae você sempre perde..o q teria q fazer para completá-lo?vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eita... com q palavra você testou? ou foi uma do banco de palavras? Eu mesmo baixei do link q coloquei e nao deu esse erro oO... Unico bug q reparei é as cores na entrada, nao era pra aparecer aquela faixa azul... mas isso eh soh tirar um sinal la. Bom, me diga qual é a palavra q voce testou, pq tentei algumas vezes e se acertava a palavra ele limpa a tela e mostra "Acertou!!! A palavra era (palavra)"

Compartilhar este post


Link para o post
Compartilhar em outros sites

não myho... o seu eu baixei e funcionou tudo certinho... ta muito bom..to falando do do Gudhu... compiliei o codigo dele e ta incompleto...da uma olhadinha no do gudhu e se tiver como você falar o q falta alí pra ficar completo...vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, beleza entao.Na época ele nao havia terminado mesmo o programa, e como nao postou mais ja deve ter acabado e completado ele. Realmente, olhando o ultimo codigo dele, nao existe nada q defina "vitoria", olhando bem por cima parece q se acertamos uma letra ela vai para a variavel lacuna, logo basta um strcmp(lacuna,palavra) se retornar q são iguais, coloca la um "Acertou"...Fui

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae..eu to acresncetando um ifnu caso:if(strcmp(lacuna,palavra)==0)printf("você acertou");so q ta indo n.. fico todo bugado o prog e imprimindo caracteres estranhos..tem como você fazer um exemplo ae n?se n for só com esse if...vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

if(!strcmp(palavra,lacuna))			 {				  cout << "\nAcertou\nA palavra era '"<< palavra <<"'\n";				  system("PAUSE");				  break;			 }

No programa q eu, fiz o teste de vitoria era simples daquele jeito. O break usei pra sair do laço das tentativas. Quanto aos caracteres bugados, falta o sinal de fim de string o '\' (BARRA ZERO). Ou você coloca ele no fim do vetor q quer mostrar, ou em vez de mostrar todo o vetor, mostra Caracter por caracter, limitado pelo tamanho da palavra secreta.

 

int size = strlen(palavra); for (int i = 0; i < size; i++) {	cout << lacuna[i] << " ";  }

size é uma variavel inteira q recebeu a tamanho da palavra secreta, achei mais pratico assim do q chamar a função a cada teste do for.

 

Foi meu primeiro programa em C++ essa forca, meu codigo ta feio d+, mas se mesmo assim quiser dar uma olhada... soh falar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Myho... Preciso desesperadamente de ajuda... Tenho q fazer um jogo da forca na biblioteca allegro pra entregar dia 18 e só consegui fazer o fundo da tela... to desesperada... Me ajude por favor... Obrigada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

da uma olhada no código do tópico "Erro com switch", o ultimo post foi em 29 de abril de 2010, la tem um jogo da forca pronto onde as palavras são colocadas em arquivo e carregadas em uma lista encadeada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.