Ver Mensaje Individual
  #11 (permalink)  
Antiguo 19/11/2015, 07:39
aguml
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 10 meses
Puntos: 3
Respuesta: problema con juego de palabras

Y las funciones:
Código C:
Ver original
  1. void EliminarPalabra(ListaPalabras *Lista,int pos)
  2. {
  3.    int i;
  4.    if(pos < Lista->nEncontradas-1 && pos > 0)
  5.       for(i=Lista->nEncontradas-1;i>pos;i--)
  6.          memcpy(&Lista->Palabras[i-1],&Lista->Palabras[i],sizeof(Palabra));
  7.    Lista->nEncontradas--;
  8. }
  9. //-----------------------------------------------------------------------------
  10.  
  11. int ShowFirst(char *word)
  12. {
  13.    char cadena[MIN_LEVEL+1];
  14.  
  15.    printf("Juega a 'Adivina la palabra'\n");
  16.    printf("Introduce '0' y pulsa intro para salir del juego en cualquier momento.\n");
  17.    printf("======================================================================\n\n");
  18.  
  19.    do{
  20.       RandomCharsOfWord(word,cadena,MIN_LEVEL);
  21.    }while(strcmp(cadena,word)==0);
  22.  
  23.    printf ("La palabra desordenada es: %s\n",cadena);
  24.    return 0;
  25. }
  26. //-----------------------------------------------------------------------------
  27.  
  28. void ShowMask(char *word,int length,int posCharExtra,int nCaracteresAMostrar)
  29. {
  30.    int i;
  31.    for(i=0;i<length;i++)
  32.       if(i==posCharExtra)
  33.          printf("%c ",word[i]);
  34.       else if(nCaracteresAMostrar > 0){
  35.          printf("%c ",word[i]);
  36.          nCaracteresAMostrar--;
  37.       }else
  38.          printf("_ ");
  39.    printf("\n");
  40. }
  41. //-----------------------------------------------------------------------------
  42.  
  43. void RandomCharsOfWord(char *word,char *result,int length)
  44. {
  45.    int a,i,posRand;
  46.    char aux;
  47.  
  48.    strcpy(result,word);
  49.    for(a=0;a<length;a++){
  50.       for(i=0;i<length-(1+a);i++){
  51.          posRand=rand()%length;
  52.          aux=result[i];
  53.          result[i]=result[posRand];
  54.          result[posRand]=aux;
  55.       }
  56.    }
  57. }
  58. //-----------------------------------------------------------------------------
  59.  
  60. int SearchNextWords(char *word,int length,ListaPalabras *Lista)
  61. {
  62.    char cadena[SIZE],salida[SIZE];
  63.    char nameFile[13]={0};
  64.    char aux;
  65.    int a,i,contador,retval;
  66.    FILE *archivo;
  67.  
  68.    sprintf(nameFile,"%i_Letras.txt",length+1);
  69.    archivo=fopen(nameFile,"r");
  70.  
  71.    if(archivo != NULL){
  72.       if(Lista->nEncontradas !=0){
  73.          free(Lista->Palabras);
  74.          Lista->nEncontradas=0;
  75.       }
  76.       do{
  77.          retval=fread(cadena,SIZE,1,archivo);
  78.          strcpy(salida,cadena);
  79.          contador=length;
  80.          for(a=0;a<length;a++){
  81.             for(i=0;i<=contador;i++){
  82.                if(word[a]==cadena[i])
  83.                {
  84.                   aux=cadena[i];
  85.                   cadena[i]=cadena[contador];
  86.                   cadena[contador]=aux;
  87.                   contador--;
  88.                   break;
  89.                }
  90.             }
  91.          }
  92.          if(contador==0){
  93.             Lista->nEncontradas++;
  94.             Lista->Palabras = realloc(Lista->Palabras,Lista->nEncontradas*sizeof(Palabra));
  95.             strcpy(Lista->Palabras[Lista->nEncontradas-1].Palabra,salida);
  96.             Lista->Palabras[Lista->nEncontradas-1].PosCaracterExtra=(int)strchr(Lista->Palabras[Lista->nEncontradas-1].Palabra,cadena[0])-(int)Lista->Palabras[Lista->nEncontradas-1].Palabra;
  97.          }
  98.       }while(!feof(archivo));
  99.       retval=Lista->nEncontradas;
  100.       fclose(archivo);
  101.    }else{
  102.       retval=-1;
  103.    }
  104.    return retval;
  105. }
  106. //-----------------------------------------------------------------------------
  107.  
  108. int SearchFirstWord(char *word)
  109. {
  110.    int retval,nPalabras,posPalabra;
  111.    FILE *archivo;
  112.    char nameFile[13]={0};
  113.    char palabra[SIZE];
  114.  
  115.    sprintf(nameFile,"%i_Letras.txt",MIN_LEVEL);
  116.    archivo=fopen(nameFile,"r");
  117.    if(archivo != NULL){
  118.       fseek(archivo,0,SEEK_END);
  119.       nPalabras=ftell(archivo)/SIZE;
  120.       posPalabra=rand()%nPalabras;
  121.       fseek(archivo,posPalabra*SIZE,SEEK_SET);
  122.       retval=fread(palabra,SIZE,1,archivo);
  123.       if(retval==1)
  124.          strcpy(word,palabra);
  125.       fclose(archivo);
  126.    }else{
  127.       retval=-1;
  128.    }
  129.    return retval;
  130. }
  131. //-----------------------------------------------------------------------------