Y las funciones:
Código C:
Ver originalvoid EliminarPalabra(ListaPalabras *Lista,int pos)
{
int i;
if(pos < Lista->nEncontradas-1 && pos > 0)
for(i=Lista->nEncontradas-1;i>pos;i--)
memcpy(&Lista
->Palabras
[i
-1],&Lista
->Palabras
[i
],sizeof(Palabra
)); Lista->nEncontradas--;
}
//-----------------------------------------------------------------------------
int ShowFirst(char *word)
{
char cadena[MIN_LEVEL+1];
printf("Juega a 'Adivina la palabra'\n"); printf("Introduce '0' y pulsa intro para salir del juego en cualquier momento.\n"); printf("======================================================================\n\n");
do{
RandomCharsOfWord(word,cadena,MIN_LEVEL);
}while(strcmp(cadena
,word
)==0);
printf ("La palabra desordenada es: %s\n",cadena
); return 0;
}
//-----------------------------------------------------------------------------
void ShowMask(char *word,int length,int posCharExtra,int nCaracteresAMostrar)
{
int i;
for(i=0;i<length;i++)
if(i==posCharExtra)
else if(nCaracteresAMostrar > 0){
nCaracteresAMostrar--;
}else
}
//-----------------------------------------------------------------------------
void RandomCharsOfWord(char *word,char *result,int length)
{
int a,i,posRand;
char aux;
for(a=0;a<length;a++){
for(i=0;i<length-(1+a);i++){
aux=result[i];
result[i]=result[posRand];
result[posRand]=aux;
}
}
}
//-----------------------------------------------------------------------------
int SearchNextWords(char *word,int length,ListaPalabras *Lista)
{
char cadena[SIZE],salida[SIZE];
char nameFile[13]={0};
char aux;
int a,i,contador,retval;
FILE *archivo;
sprintf(nameFile
,"%i_Letras.txt",length
+1); archivo
=fopen(nameFile
,"r");
if(archivo != NULL){
if(Lista->nEncontradas !=0){
Lista->nEncontradas=0;
}
do{
retval
=fread(cadena
,SIZE
,1,archivo
); contador=length;
for(a=0;a<length;a++){
for(i=0;i<=contador;i++){
if(word[a]==cadena[i])
{
aux=cadena[i];
cadena[i]=cadena[contador];
cadena[contador]=aux;
contador--;
break;
}
}
}
if(contador==0){
Lista->nEncontradas++;
Lista
->Palabras
= realloc(Lista
->Palabras
,Lista
->nEncontradas
*sizeof(Palabra
)); strcpy(Lista
->Palabras
[Lista
->nEncontradas
-1].
Palabra,salida
); Lista
->Palabras
[Lista
->nEncontradas
-1].
PosCaracterExtra=(int)strchr(Lista
->Palabras
[Lista
->nEncontradas
-1].
Palabra,cadena
[0])-(int)Lista
->Palabras
[Lista
->nEncontradas
-1].
Palabra; }
retval=Lista->nEncontradas;
}else{
retval=-1;
}
return retval;
}
//-----------------------------------------------------------------------------
int SearchFirstWord(char *word)
{
int retval,nPalabras,posPalabra;
FILE *archivo;
char nameFile[13]={0};
char palabra[SIZE];
sprintf(nameFile
,"%i_Letras.txt",MIN_LEVEL
); archivo
=fopen(nameFile
,"r"); if(archivo != NULL){
fseek(archivo
,0,SEEK_END
); nPalabras
=ftell(archivo
)/SIZE
; posPalabra
=rand()%nPalabras
; fseek(archivo
,posPalabra
*SIZE
,SEEK_SET
); retval
=fread(palabra
,SIZE
,1,archivo
); if(retval==1)
}else{
retval=-1;
}
return retval;
}
//-----------------------------------------------------------------------------