Don't like ads? PRO users don't see any ads ;-)
Guest

Jogo da Forca

By: a guest on Aug 21st, 2012  |  syntax: None  |  size: 6.97 KB  |  hits: 19  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. # include <stdio.h>
  2. # include <stdlib.h>
  3. # include <conio.h>
  4. # include <string.h>
  5. # include <ctype.h>
  6.  
  7. /*
  8. Jogo da Forca 1.0
  9. descrição: Jogo da Forca onde o objetivo é adivinhar qual a palavra escondida atrás das barras.
  10. O jogador deve informar uma letra onde na qual acha que possa conter na palavra secreta.
  11. */
  12.  
  13. char letras_usadas (char arquivo[20], int i_arquivo);
  14. void mostra_forca (char corpo[20], int credito);
  15. void mostra_achou (char achou[20], int tam_palavra);
  16.  
  17. int main () {
  18.     char jogador[20], palavra[20], dica[20], corpo[20], achou[20], arquivo[20], aux_letra[20], letra;  
  19.     int creditos, pontos, flag, tam_palavra, tam_letra, i_arquivo, i;
  20.    
  21.     /*
  22.     Índice de Variáveis
  23.     jogador: Nome do participante
  24.     palavra: Palavra chave do jogo
  25.     dica: Dica relacionada a palavra
  26.     corpo: Recebe as partes do corpo do boneco
  27.     achou: Letras acertadas pelo jogador
  28.     arquivo: Letras usadas pelo jogador
  29.     aux_letra: Válida se a letra que o jogador usou é válida na rodada
  30.     letra: Letra que o jogador usou na rodada
  31.     créditos: Inicia-se com 6, se igual a 0 índica que o jogador perdeu o jogo
  32.     pontos: Soma as letras que já foram acertadas
  33.     flag: Se flag igual a 1 índica que jogador errou ou a letra digitada não é válida, se 0 índica que acertou
  34.     tam_palavra: Tamanho da Palavra
  35.     tam_letra: Tamanho da Letra
  36.     i_arquivo: índice do arquivo
  37.     i: contador
  38.     */
  39.    
  40.     // Apresentação
  41.     printf("\n\n");  
  42.     printf("         XXXXX    XXXXX     XXXX     XXXXX       XXXX       XXXXX     \n");
  43.     printf("            XX   XX   XX   XX       XX   XX      XX   X    XX   XX    \n");
  44.     printf("            XX   XX   XX   XX       XX   XX      XX    X   XX   XX    \n");
  45.     printf("            XX   XX   XX   XX       XX   XX      XX    X   XXXXXXX    \n");
  46.     printf("            XX   XX   XX   XX  XX   XX   XX      XX    X   XX   XX    \n");
  47.     printf("        X   XX   XX   XX   XX   X   XX   XX      XX   X    XX   XX    \n");
  48.     printf("         XXXX     XXXXX     XXXX     XXXXX       XXXX      XX   XX    \n");
  49.     printf("\n");    
  50.     printf("               XXXXXXX    XXXXX    XXXXX      XXXX    XXXXX           \n");
  51.     printf("               XX        XX   XX   XX   X    XX      XX   XX          \n");
  52.     printf("               XX        XX   XX   XX   X   XX       XX   XX          \n");
  53.     printf("               XXXXXXX   XX   XX   XXXXX    XX       XXXXXXX          \n");
  54.     printf("               XX        XX   XX   XX X     XX       XX   XX          \n");
  55.     printf("               XX        XX   XX   XX  X     XX      XX   XX          \n");
  56.     printf("               XX         XXXXX    XX   X     XXXX   XX   XX          \n");
  57.     printf("\n\n");
  58.     printf("\n\n");
  59.     printf ("                                 START");
  60.     getch ();
  61.    
  62.     system ("cls");
  63.     printf ("JOGO DA FORCA 1.0\n\n");
  64.     printf("\n\n");
  65.     printf("\n\n");
  66.     printf ("               NOME DO JOGADOR: ");
  67.     gets (jogador);
  68.     printf("\n\n");
  69.     printf ("               PE%cA PARA ALGUEM DIGITAR OS SEGUINTES ITENS ABAIXO!", 128);
  70.     getch ();
  71.     printf("\n\n\n");
  72.     printf ("               PALAVRA CHAVE: ");
  73.     gets (palavra);
  74.     printf("\n\n");
  75.     printf ("               DICA: ");
  76.     gets (dica);
  77.     printf("\n\n");
  78.    
  79.     // Reset de variáveis
  80.     i_arquivo=0;
  81.     creditos=6;
  82.     pontos=0;
  83.     tam_palavra=strlen(palavra);
  84.     for (i=0; i<tam_palavra; i++) {
  85.        if (palavra[i]==' ') {
  86.           achou[i]=' ';
  87.           pontos++;
  88.        }
  89.        else {
  90.           palavra[i]=toupper(palavra[i]);
  91.           achou[i]='_';
  92.        }
  93.     }  
  94.     for (i=0; i<20; i++) {
  95.        arquivo[i]=' ';
  96.     }
  97.     for (i=0; i<6; i++) {
  98.        corpo[i]=' ';
  99.     }
  100.     for (i=0; jogador[i]!='\0'; i++) {
  101.        jogador[i]=toupper(jogador[i]);
  102.     }
  103.     for (i=0; dica[i]!='\0'; i++) {
  104.        dica[i]=toupper(dica[i]);
  105.     }
  106.    
  107.     system ("cls");
  108.     printf ("JOGO DA FORCA 1.0\n\n");
  109.     mostra_forca(corpo, creditos);
  110.     printf ("\n\n");
  111.     mostra_achou(achou, tam_palavra);
  112.     printf ("\n\n");
  113.     puts (dica);
  114.     printf ("\n");
  115.    
  116.     while ((creditos>0)&&(pontos<tam_palavra)) {
  117.        flag=0;
  118.        printf ("LETRA: ");
  119.        gets (aux_letra);
  120.        tam_letra=strlen(aux_letra);
  121.        if (tam_letra!=1) {
  122.           printf ("DIGITE \"UMA\" LETRA!\n");
  123.           getch ();
  124.           flag=1;
  125.        }
  126.        else {
  127.           letra=toupper(aux_letra[0]);  
  128.           arquivo[i_arquivo]=letra;
  129.           if (letras_usadas (arquivo, i_arquivo)) {
  130.              printf ("ESTA LETRA JA FOI!");
  131.              getch ();
  132.              arquivo[i_arquivo]=' ';
  133.              flag=1;
  134.           }
  135.           else {
  136.              arquivo[i_arquivo]=letra;
  137.              i_arquivo++;  
  138.              for (i=0; i<tam_palavra; i++) {
  139.                 if (letra==palavra[i]) {
  140.                    achou[i]=letra;
  141.                    flag=1;
  142.                    pontos++;
  143.                 }
  144.              }
  145.           }
  146.        }
  147.        
  148.        if (flag==0) {
  149.           printf ("ESTA LETRA NAO TEM!", jogador);
  150.           getch ();
  151.           creditos--;
  152.           switch (creditos) {
  153.              case 0: corpo[0]='\\'; break;
  154.              case 1: corpo[1]='/'; break;
  155.              case 2: corpo[2]='-'; break;
  156.              case 3: corpo[3]='-'; break;
  157.              case 4: corpo[4]='|'; break;
  158.              case 5: corpo[5]='O'; break;  
  159.           }
  160.        }
  161.        
  162.        //Status do jogo
  163.        system ("cls");
  164.        printf ("JOGO DA FORCA 1.0\n\n");
  165.        mostra_forca(corpo, creditos);
  166.        printf ("\n\n");
  167.        mostra_achou(achou, tam_palavra);
  168.        printf ("\n\n");
  169.        puts (dica);
  170.        printf ("\n");
  171.        printf ("LETRAS JA USADAS: ");
  172.        for (i=0; i<=i_arquivo; i++) {
  173.           printf ("%c ", toupper(arquivo[i]));
  174.        }  
  175.        printf ("\n\n");
  176.        
  177.        //Resultado Final  
  178.        if (pontos==tam_palavra) {
  179.           printf ("%s, VOCE GANHOU!\n", jogador);
  180.        }
  181.        if (creditos==0) {
  182.           printf ("%s, VOCE PERDEU!\n", jogador);
  183.           printf ("A PALAVRA ERA ");
  184.           puts (palavra);
  185.           printf ("\n");
  186.        }
  187.     }
  188.     getch ();
  189. }      
  190.        
  191. char letras_usadas (char arquivo[20], int i_arquivo) {
  192.    int i;
  193.    for (i=0; i<i_arquivo; i++) {
  194.       if (arquivo[i_arquivo]==arquivo[i]) {
  195.          return (true);
  196.       }      
  197.    }
  198.    return (false);
  199. }
  200.  
  201.  
  202. void mostra_forca (char corpo[20], int credito) {
  203.      printf ("  _ _ \n");
  204.      printf (" |   |\n");
  205.      printf (" |   %c\n", corpo[5]);
  206.      printf (" |  %c", corpo[3]);
  207.      printf ("%c", corpo[4]);
  208.      printf ("%c \n", corpo[2]);
  209.      printf (" |  %c", corpo[1]);
  210.      printf (" %c \n", corpo[0]);
  211.      printf ("_|_   \n");
  212. }                        
  213.  
  214. void mostra_achou (char achou[20], int tam_palavra) {
  215.      int i;
  216.      for (i=0; i<tam_palavra; i++) {
  217.         printf ("%c ", achou[i]);
  218.      }
  219. }