Ver Mensaje Individual
  #19  
Antiguo 27-11-2014
jcdca jcdca is offline
Miembro
NULL
 
Registrado: nov 2014
Posts: 15
Reputación: 0
jcdca Va por buen camino
bueno aquí esta el código

Código PHP:
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

void desarrollo(int cantidadint i);

struct nodo 

  
char palabra[30]; 
  
struct nodo*sig
}; 

typedef struct nodo listaPalabra

char variable[30];

listaPalabra crearLista(listaPalabra *inicio

   
inicio=NULL
   return 
inicio


listaPalabra *insertarEnLista(char palabra[30],listaPalabra *inicio

       
listaPalabra *nuevoNodo
       
listaPalabra *aux
        
       
nuevoNodo=(listaPalabra*)malloc(sizeof(listaPalabra)); 
       
strcpy(nuevoNodo->palabra,palabra);
       
nuevoNodo->sig=NULL;     
        
       if (
inicio == NULL
       { 
             
inicio=nuevoNodo;                   
       } 
       else 
       { 
           
aux=inicio
            
           while (
aux->sig !=NULL
           { 
                 
aux=aux->sig;                  
           }            
           
aux->sig=nuevoNodo;            
       }   
       return 
inicio;     


void imprimir (listaPalabra *lista

     
listaPalabra *auxiliar
     
auxiliar=lista;       
     while (
auxiliar!=NULL
     { 
           
printf("%s \n",auxiliar->palabra); 
           
auxiliar=auxiliar->sig
     } 


listaPalabra *buscarPalabra (listaPalabra *lista)
{
     if (
lista != NULL)
     {                   
            
listaPalabra *auxiliar;                   
            
auxiliar lista;                   
            
strcpy(variable,lista->palabra);                   
            
lista lista->sig;
     }       
     return 
lista;     
}

void Jugar()
 { 
     
system ("color b"); 
     
system("cls"); 
     
int cantidad,i,j,aux,x,indice,z
     
char caracter,palabra[30];    
     
printf("\n\n\t\tCon cuantas palabras desea jugar? (3 a 10)\n");   
     
scanf("%d",&cantidad); 
     do
     {
        if((
cantidad<3) || (cantidad>10))
        {
           
system("cls"); 
           
printf("\n\n\n\t\tCon cuantas palabras desea jugar? (3 a 10)");  
           
printf("\n\n\t   Debe introducir un numero comprendido entre 3 y 10 \n"); 
           
scanf("%d",&cantidad);    
        }
     }while((
cantidad<3) || (cantidad>10));
     
x=1i=1j=0
     
listaPalabra*lista
     
lista=crearLista(lista); 
     while (
i<=cantidad
     { 
       
FILE *archivo
       
archivofopen("prueba.txt","r");  
       if (
archivo== NULL
       { 
            
printf("El archivo no se encuentra");
       } 
            else 
            {                           
                while (
feof(archivo)==0
                { 
                     do 
                     {  
                      
caracter=fgetc(archivo); 
                     }while(
caracter=='\n'); 
                      
                    if (
caracter!=';'
                    {                       
                       
palabra[j]=caracter
                       
j++; 
                    } 
                   else 
                   { 
                      
caracter=fgetc(archivo); 
                      
aux= (int)(caracter-48);                      
                      if (
aux==i
                      {                                                          
                         
lista=insertarEnLista(palabra,lista); 
                      }                                           
                      
indice=0
                      while (
indice<20
                      { 
                          
palabra[indice]=0
                          
indice++; 
                      } 
                      
j=0;                        
                   }  
                }   
                
close(archivo); 
            }          
       
i++; 
     }      
    for(
1<=cantidadz++)
    {
         
lista=buscarPalabra(lista);
         
desarrollo(cantidad,z);         
    }
     
getch();     
 } 

void desarrollo(int cantidadint i)
{
    
int vidas=6,cont=0,indice=0,contador=0,adivino;
    
char letra,palabra[30],introducidas[52],restantes[52],aux[52]="A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z";
    
printf("%s\n",variable);
    while (
indice < (strlen(variable))*2)
    {
        
palabra[indice]='_';
        
palabra[indice+1]=' '
        
indice+=2;
    }
    
indice=0;
    while (
indice<52
    { 
         
introducidas[indice]=0
         
indice++; 
    } 
    
indice=0;
    
strcpy(restantes,aux);
      while((
vidas 0) && (cont strlen(variable)))
    {       
        
system("cls");
        
printf("%s",variable);
        
printf("\n\n\n      %s \n\n",palabra);        
        
printf("\n\n     Letras introducidas= %s",introducidas);
        
printf("\n\n     Letras restantes= %s",restantes); 
        
printf("\n\n     palabra %i de %i ",i,cantidad);
        
printf("\n\n\n     Vidas(%i)= ",vidas);
        
contador=0;        
        while (
contador<vidas)
        {
            
printf(" * "); 
            
contador++;
        }        
        
printf("\n\n\n     Salir de la partida tecla(0)");
        
printf("\n\n\n\n\t                          Ingrese letra\n");
        
scanf("%c",&letra);
        
adivino=0;
        
contador=0;
        while (
contador strlen(variable))
        {         
           if(
letra==variable[contador])
           {
                  
palabra[contador*2]=letra
               
adivino=1;
               break;        
           }           
           
contador++;
        }
        if (
adivino==0)
        {
            
vidas--;
        }
        
introducidas[indice]=letra;
        
introducidas[indice+1]="-";
        
indice+=2;
        
cont++;
    }    
}

void menu() 
{
char resp
  do 
  { 
system ("color b");  
       
system("cls"); 
    
printf("\n\n\t\t\t* * * * * MENU DE OPCIONES * * * * *"); 
    
printf("\n\t\t---------------------------------------------------"); 
    
printf("\n\t\t\t  Juego de el ahorcado "); 
    
printf("\n\t\t---------------------------------------------------\n\n\n\n"); 
    
printf("\t\t\t\t (1) Jugar \n"); 
    
printf("\t\t\t\t (0) salir\n"); 
    do 
      
resp=getch(); 
      while (
resp<'0' || resp>'1'); 
      switch(
resp
      { 
          case 
'1'Jugar(); 
                    break; 
          case 
'0':  
                    break; 
      } 
  } 
  while(
resp!='0'); 

    
int main() 

    
menu(); 
    return(
0); 

eso es lo que tengo por ahora, todavía le faltan algunas cosas y acomodar algunos detalles, ahora les dijo mis dudas e inconvenientes, en la función desarrollo, tengo declarado la variable vidas, y le puse un valor de 6, cuando realmente son 5 vidas, porque hice eso? porque depure el código y fui paso a paso a ver porque fallaba y resulta que la primera vez que pasa por estas instrucciones:

Código PHP:
   printf("\n\n\n\n\t                          Ingrese letra\n");
        
scanf("%c",&letra);
        
adivino=0;
        
contador=0
no se detiene a esperar a que el usuario introduzca una letra, si no que sigue de largo y lógicamente me quita una vida,y ademas me llena de basura la variable introducidas, porque letra no tiene ningún valor, la segunda vez que pasa si se detiene, pensé que solo era al principio y ya, pero lo hace cada vez que introduzco una letra... entonces adivine o no la letra me quita una vida, porque pasa dos veces antes de detenerse a leer la letra y no entiendo porque, y estoy completamente seguro que sigue de largo la primera vez porque como dije lo depure y vi paso por paso y vi como siguió de largo, como si la primera vez no existiera el scanf, entonces esa es mi primera duda.. alguien sabe porque pasa eso?... realmente esto es solo por curiosidad, porque igual eso lo pondré en un ciclo que me valide que el usuario introduzca letras y no números o otros caracteres, pero igual me surge la curiosidad jeje, porque me parece raro que haga eso.... y la segunda duda es que cuando introduzco una letra en mayúscula si me la detecta en la palabra, pero si la pongo en minúscula no, es decir si la palabra es HORMIGA e introduzco H me la escribe, si introduzco h no me la escribe, porque las palabras del documento.txt están en mayúsculas, hay alguna función que me pueda pasar la letra que introduce el usuario a mayúscula? así introduzca la letra en minúscula o mayúscula de todas forma me la detectaría.... y tercera y ultima duda jeje, quiero pasar un valor por referencia en este caso es el valor de la variable vidas, porque? porque si la declaro dentro de esa función cada vez que sea una nueva palabra me la va a volver a poner en 6, y en el enunciado que les mande dice que no puedo hacer eso, que las vidas no se reinician, que son para toda la partida, yo crei que era asi:

Código PHP:
 void desarrollo(int *vidas){códigos}  //declaración de la función

int main(){int vidas=6;   desarrollo(&vidas)} // llamado de la función 
pasandole a la función la dirección, y que esta tomara el valor que esta dentro de esta dirección, pero me da error, no es así como se hace?
podría declarar la variable fuera de todas las funciones y me serviría, pero no quiero eso, quiero pasarla por referencia, porque ya lo he intentado varias veces y no me sale...

bueno esas son mis tres dudas por ahora, porque ignora el scanf la primera vez, como paso minusculas a mayusculas y como paso por referencia..
y desde ya, gracias por la ayuda
Responder Con Cita