martes, 29 de noviembre de 2011

Sopa de letras en C

La sopa de letras fue un trabajo prático que tuve que realizar en el transcurso del laboratorio de C. Es muy simple. El objetivo del juego es encontrar todas las palabras sin equivocarse en ninguna. Por cada acierto son 5 puntos a favor y por cada error 5 en contra. Más que un proyecto es una prática, donde se puede ver en acción el uso de las sentencias strcmp, el ciclo Do..While y los condicionales If-elseif-else entre otras cosas.

Capturas

Problemas (a resolver)
  1. Poder ingresar el texto en minúscula y que lo pase a mayúscula y viceversa.
  2. Mejorar la intefaz (algunos cuadritos, letras y palabras mal escritas).
  3. Posible consumo de más de memoria dado por el system("pause");
Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. int op, puntos, oportunidades;
  5. int palabra1=0,palabra2=0,palabra3=0,palabra4=0;//0=disponible||1=ocupada
  6. char s[20];
  7. main(){
  8.        do{
  9.           system("cls");
  10.           printf("1- Jugar\n");
  11.           printf("2- Instrucciones\n");
  12.           printf("3- Puntos\n");
  13.           printf("4- Salir\n");
  14.           do{scanf("%i", & op);}while(op<0||op>4);
  15.           switch(op){
  16.                      case 1:
  17.                           oportunidades=4;
  18.                           puntos=0;
  19.                           palabra1=0;palabra2=0;palabra3=0;palabra4=0;
  20.                           do{
  21.                              system("cls");
  22.                              printf("Puntaje           : %i\n", puntos);
  23.                              printf("Intentos restantes: %i\n", oportunidades);
  24.                              printf("\nt a t u o m b m i k n a k m i b k n g a\n");
  25.                              printf("\nh a j f n b r j b s j m e n y b m i n u\n");
  26.                              printf("\ng h x f s v t e w b y h j r f r d s f u\n");
  27.                              printf("\nl r f i d v h y f d r w f b o j u b m o\n");
  28.                              printf("\nñ j n j m l j l a u t o b u s u n l g b\n");
  29.                              printf("\ni u b e s t a c i o n a m i e n t o u u\n");
  30.                              printf("\nl r f s d v h y f d r w f b h j u b m l\n");
  31.                              printf("\ne o t r e u p o r e a j t r w v k b k j\n");
  32.                              printf("\ni u b d t e s v l m g o i e a w n i i u\n");
  33.                           printf("\n\nPalabra:");
  34.                           scanf("%s", & s);
  35.                           if(strcmp(s, "PALABRA1")==0&&palabra1==0){
  36.                                        printf("Palabra encontrada! 5 puntos\n");
  37.                                        puntos=puntos+5;
  38.                                        oportunidades=oportunidades-1;
  39.                                        palabra1=1;
  40.                                        system("pause");
  41.                                        }else if(strcmp(s, "PALABRA2")==0&&palabra2==0){
  42.                                              printf("Palabra encontrada! 5 puntos\n");
  43.                                              puntos=puntos+5;
  44.                                              oportunidades=oportunidades-1;
  45.                                              palabra2=1;
  46.                                              system("pause");
  47.                                              }else if(strcmp(s, "PALABRA3")==0&&palabra3==0){
  48.                                                    printf("Palabra encontrada! 5 puntos\n");
  49.                                                    puntos=puntos+5;
  50.                                                    oportunidades=oportunidades-1;
  51.                                                    palabra3=1;
  52.                                                    
  53.                                                    }else if(strcmp(s, "PALABRA4")==0&&palabra4==0){
  54.                                                          printf("Palabra encontrada! 5 puntos\n");
  55.                                                          puntos=puntos+5;
  56.                                                          oportunidades=oportunidades-1;
  57.                                                          palabra4=1;
  58.                                                          }else{
  59.                                                                printf("\n\nIncorrecto. Ya la escribiste!\n");
  60.                                                                oportunidades=oportunidades-1;
  61.                                                                system("pause");
  62.                                                                }
  63.                                                          }while(oportunidades!=0);
  64.                                                          //Mostrar el 'gano!'
  65.                                                          system("cls");
  66.                                                          printf("Juego acabado!\n");
  67.                                                          printf("\nTus puntos: %i\n", puntos);
  68.                                                          system("pause");
  69.                                                          break;
  70.                      
  71.                      case 2:
  72.                           //Instrucciones
  73.                           system("cls");
  74.                           printf ("instrucciones\n");
  75.                           printf ("\n1. decifre las palabras escondidas entre las letras.");
  76.                           printf ("\n2. haga una lista introduciendo las palabras que encontro, el mismo programa resolvera sus asiertos y sus errores.");
  77.                           printf ("\n3. por cada asierto se sumaran puntos y por cada error se restarán los mismos.");
  78.                           printf ("\n4. cuando se acaben los intentos , el juego finalizara y obtendra el puntaje final.\n");
  79.                           system("pause");
  80.                           break;
  81.                      case 3:
  82.                           //Puntos
  83.                           system("cls");
  84.                           printf("Puntos\n");
  85.                           if(puntos!=0){
  86.                           printf("El ultimo puntaje grabado fue de: %i\n", puntos);
  87.                           printf("Vas a poder superarlo?\n");
  88.                           }else{
  89.                                 printf("No hay puntajes grabados. Juega una partida para grabarlo.\n");
  90.                           system("pause");
  91.                           }
  92.                           break;
  93.                           }
  94.                           }while(op!=4);
  95.                           }         

2 comentarios: