Advertisement
fenix15100

Ahorcado 3.0

Mar 12th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.65 KB | None | 0 0
  1. //Ahorcado 3.0 Izar Mula soria y Francisco José Camacho Maya
  2. //M3 Programacion DAW Institut Badia del Valles
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <time.h>
  7.  
  8. #define TAM 100
  9. //Prototipos de funciones
  10.     //Retorna un menu de presentacion.
  11.  
  12. void menu();
  13.  
  14.     /*
  15.     Recibe el vector palabra, elije una palabra del diccionario y la copia en el vector palabra por referencia
  16.     Ademas retorna la longitud de la palabra elgida
  17.     */
  18. int Escogepalabra(char *x);
  19.  
  20.     //Recibe por referencia vector secreta y por valor longitud y llena vector con guiones hasta longitud.
  21. void LlenarVectorSecreto(char *x,int y);
  22.  
  23.     //Recibe por valor intentos segun estos dibujara el monigote del ahorcado
  24.  
  25. void monigote(int x);
  26.  
  27.     //Recibe por valor palabra y por referencia secreta ademas de recibir por valor longitud de palabra
  28. void Motor(char x[TAM],char *y,int l);
  29.  
  30.  
  31. void main(){
  32.     char palabra[TAM],secreta[TAM];
  33.     int longitud=0;
  34.    
  35.  
  36.     longitud=Escogepalabra(&palabra[0]);
  37.  
  38.     LlenarVectorSecreto(&secreta[0],longitud);
  39.  
  40.     Motor(palabra,&secreta[0],longitud);
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47. }
  48.  
  49. void menu(){
  50.    
  51.    printf("    ______  _                                   _      _\n");
  52.    printf("    | ___ %c(_)                                 (_)    | |\n",92);
  53.    printf("    | |_/ / _   ___  _ __  __   __  ___  _ __   _   __| |  ___\n");
  54.    printf("    | ___ %c| | / _ %c| '_ %c %c %c / / / _ %c| '_ %c | | / _` |/ _ %c\n",92,92,92,92,92,92,92,92);
  55.    printf("    | |_/ /| ||  __/| | | | %c V / |  __/| | | || || (_| || (_) |%c\n",92,92);
  56.    printf("    %c____/ |_| %c___||_| |_|  %c_/   %c___||_| |_||_| %c__,_| %c___/%c\n",92,92,92,92,92,92,92);
  57.    printf("                                                       \n");
  58.    printf("                                                                \n");
  59.    printf("                              ___   _                           \n");
  60.    printf("                             / _ %c | |\n",92);
  61.    printf("                            / /_%c %c| |\n",92,92);
  62.    printf("                            |  _  || |\n");
  63.    printf("                            | | | || |\n");
  64.    printf("                            %c_| |_/|_|\n",92);
  65.  
  66.    printf("                                        \n");
  67.    printf("      ___   _                                    _\n");
  68.    printf("     / _ %c | |                                  | |\n",92);
  69.    printf("    / /_%c %c| |__    ___   _ __   ___   __ _   __| |  ___\n",92,92);
  70.    printf("    |  _  || '_ %c  / _ %c | '__| / __| / _` | / _` | / _ %c\n",92,92,92);
  71.    printf("    | | | || | | || (_) || |   | (__ | (_| || (_| || (_) |\n");
  72.    printf("    %c_| |_/|_| |_| %c___/ |_|    %c___| %c__,_| %c__,_| %c___/\n",92,92,92,92,92,92);
  73.    printf("    \n");
  74.     printf("    \n");
  75.     printf("    \n");
  76.     printf("    \n");
  77.    
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87. }
  88. int Escogepalabra(char *x){
  89.     char dicionario [10][10]={{"maria"},{"casa"},{"pera"},{"nabos"},{"moroso"},{"perro"},{"ojo"},{"carro"},{"cancer"},{"flora"}};
  90.     int len=0,r=0,i=0;
  91.  
  92.     //Semilla para el random
  93.     srand(time(NULL));
  94.     //Guardamos en r un numero entero del 0 al 9
  95.     r=((rand()%10));
  96.  
  97.  
  98.  
  99.  
  100.     //Calculo de longitud de la palabra elegida
  101.     while(dicionario[r][len]!='\0'){
  102.         len++;
  103.     }
  104.     len=len+1; //len+1 para guardar el \0 en vector x
  105.  
  106.     //Llenamos por referencia el vector x= a puntero de vector palabra
  107.     for(i=0;i<len;i++){
  108.         x[i]=dicionario[r][i];
  109.     }
  110.  
  111.  
  112.  
  113.     //Retornamos la longitud de la cadena
  114.     return len;
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121. }
  122.  
  123. void LlenarVectorSecreto(char *x,int y){
  124.     int i=0;
  125.  
  126.  
  127.     for(i=0;i<y;i++){
  128.         x[i]='?';
  129.         if(y-i==1){ //El ultimo valor de la cadena sera \0 para que no salga un interrogante de mas ya que y=palabra+\0
  130.             x[i]='\0';
  131.         }
  132.     }
  133.  
  134. }
  135.  
  136. void monigote(int x){
  137.     if(x==6) {
  138.         printf("________________\n");
  139.         printf("| /\n");
  140.         printf("|/\n");
  141.         printf("|\n");
  142.         printf("|\n");
  143.         printf("|\n");
  144.         printf("|\n");
  145.         printf("|\n");
  146.         printf("|\n");
  147.         printf("|_______________\n");
  148.     }
  149.  
  150.     else if(x==5){
  151.         printf("________________\n");
  152.         printf("| /           |\n");
  153.         printf("|/            |\n");
  154.         printf("|            ( )\n");
  155.         printf("|             |\n");
  156.         printf("|\n");
  157.         printf("|\n");
  158.         printf("|\n");
  159.         printf("|\n");
  160.         printf("|______________\n");
  161.  
  162.  
  163.  
  164.     }
  165.  
  166.  
  167.     else if(x==4){
  168.         printf("________________\n");
  169.         printf("| /           |\n");
  170.         printf("|/            |\n");
  171.         printf("|            ( )\n");
  172.         printf("|             |\n");
  173.         printf("|             |\n");
  174.         printf("|\n");
  175.         printf("|\n");
  176.         printf("|\n");
  177.         printf("|______________\n");
  178.  
  179.  
  180.  
  181.     }
  182.  
  183.  
  184.     else if(x==3){
  185.         printf("________________\n");
  186.         printf("| /           |\n");
  187.         printf("|/            |\n");
  188.         printf("|            ( )\n");
  189.         printf("|           / |\n");
  190.         printf("|             |\n");
  191.         printf("|\n");
  192.         printf("|\n");
  193.         printf("|\n");
  194.         printf("|______________\n");
  195.  
  196.  
  197.  
  198.     }
  199.  
  200.     else if(x==2){
  201.         printf("________________\n");
  202.         printf("| /           |\n");
  203.         printf("|/            |\n");
  204.         printf("|            ( )\n");
  205.         printf("|           / | %c\n",92); //  92=\ En ASCII
  206.         printf("|             |\n");
  207.         printf("|\n");
  208.         printf("|\n");
  209.         printf("|\n");
  210.         printf("|______________\n");
  211.  
  212.  
  213.  
  214.     }
  215.  
  216.     else if(x==1){
  217.         printf("________________\n");
  218.         printf("| /           |\n");
  219.         printf("|/            |\n");
  220.         printf("|            ( )\n");
  221.         printf("|           / | %c\n",92);
  222.         printf("|             |\n");
  223.         printf("|            / \n");
  224.         printf("|\n");
  225.         printf("|\n");
  226.         printf("|______________\n");
  227.  
  228.  
  229.  
  230.     }
  231.  
  232.     else if(x==0){
  233.         printf("________________\n");
  234.         printf("| /           |\n");
  235.         printf("|/            |\n");
  236.         printf("|            ( )\n");
  237.         printf("|           / | %c\n",92);
  238.         printf("|             |\n");
  239.         printf("|            / %c\n",92);
  240.         printf("|\n");
  241.         printf("|\n");
  242.         printf("|______________\n");
  243.  
  244.  
  245.  
  246.     }
  247.         //Esto solo pasa si se recibe la variable ganar en vez de intentos
  248.     else if(x==-1){
  249.  
  250.         printf("\n");
  251.         printf("\n");
  252.         printf("              (**)\n");
  253.         printf("             //||%c%c\n",92,92);
  254.         printf("               ||\n");
  255.         printf("              // %c%c\n",92,92);
  256.         printf("_______________________________________");
  257.         printf("\n");
  258.         printf("\n");
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.     }
  266.  
  267.  
  268.  
  269. }
  270.  
  271. void Motor(char x[TAM],char *y,int l){
  272.  
  273.     int intentos=7;
  274.     int i=0,j=0,ganar=0;
  275.     char letra=' ';
  276.     char aux_secreta[TAM];
  277.  
  278.  
  279.     //Bucle principal, parara cuando no queden intentos
  280.    while(intentos>0) {
  281.        menu();
  282.  
  283.        //Copio contenido de secreta(y) en aux_secreta(TY Izar :))
  284.        for (i = 0; i < l; i++) {
  285.            aux_secreta[i] = y[i];
  286.        }
  287.  
  288.        //Imprimo los intentos actuales, monigote, el vector secreta, pido letra al usuario y limpio buffer
  289.  
  290.        printf("Tienes %i intentos\n", intentos);
  291.  
  292.        monigote(intentos);
  293.  
  294.        printf("\n%s\n", y);
  295.  
  296.        printf("Dime una letra:\n");
  297.        scanf("%c",&letra);
  298.        fflush(stdin);
  299.        system("CLS");
  300.  
  301.        /*
  302.        Bucle que recorrera hasta longitud de palabra(x) y comparara caracter a caracter
  303.        si letra se encuentra en el vector palabra si es asi se sustituira el ? de secreta por letra
  304.  
  305.       */
  306.        for (j = 0; j < l; j++) {
  307.  
  308.            if (y[j] == '?' && x[j] == letra) {
  309.                y[j] = x[j];
  310.            }
  311.  
  312.  
  313.        }
  314.  
  315.  
  316.        //Si aux_secreta y secreta(y) siguen siendo igual letra no se encuentra en palabra y se resta 1 intento.
  317.        if (strcmp(aux_secreta,y)==0){
  318.            printf("\nLastima Fallate\n");
  319.            intentos--;
  320.  
  321.  
  322.  
  323.        }
  324.        //Si secreta(y) y palabra(x) son iguales el usuario ha acertado y cortamos el bucle,usamos una flag para usarla despues
  325.        if (strcmp(x,y)==0){
  326.  
  327.            ganar=-1;
  328.            break;
  329.  
  330.  
  331.        }
  332.    }
  333.  
  334.   if(ganar==-1){
  335.  
  336.       printf("Has ganado Enhorabuena (De momento....)\n");
  337.       monigote(ganar);
  338.       system("PAUSE");
  339.   }
  340.  
  341.   else if(intentos==0){
  342.       system("CLS");
  343.       printf("Has perdido, te has quedado sin intentos y por lo tanto estas muerto\n");
  344.       monigote(intentos);
  345.       printf("\n");
  346.       system("PAUSE");
  347.   }
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement