Agenda en C + grafica con SDL.

Iniciado por ThePinkPanther, 7 Mayo 2013, 19:38 PM

0 Miembros y 1 Visitante están viendo este tema.

ThePinkPanther

Imagen menu :


http://www.subirimagenes.net/i/130429121437279172.png


Descarga compilado + codigo fuente :

http://www.mediafire.com/?dacycftiq50j8dq


PD : Compilado y probado en wxp sp2 32 bits.

Saludos.

Stakewinner00


ThePinkPanther

En C , colge con el titulo perdón.

amchacon

#3
Bueno el binario me da problemas (cuando pongo el nombre del nuevo contacto, no puedo continuar.

Otra cosa es, que SDL es una librería multiplataforma. Ergo puedes compilarlo en linux sin necesidad de maquinas virtuales ni nada, o en todo caso hacer una versión para linux al menos.

El código parece que tiene mucho trabajo, pero la presentación es muy fea. Tienes que poner espacios y indentar. El siguiente código:

if(strcmp(nomb,primero->nombre)==0)
{
if(primero->siguiente==NULL)
{
free(primero);
registrono=1;
}
primero=primero->siguiente;

free(mueveagenda);
ncont=0; // se va a agregar un nuevo contacto
return ;
} //fin if
else // si no
{
while(mueveagenda->siguiente!=NULL)
{
if(strcmp(nomb,mueveagenda->nombre)==0)
{
borra=mueveagenda;
encontradob=1;
break;
}//fin if
mueveagenda=mueveagenda->siguiente;
} //fin while
if(strcmp(nomb,mueveagenda->nombre)==0)
{
borra=mueveagenda;
encontradob=1;
} //fin if
}//fin else


Se puede indentar así


if(strcmp(nomb,primero->nombre)==0)
{
   if(primero->siguiente==NULL)
   {
       free(primero);
       registrono=1;
   }

   primero=primero->siguiente;

   free(mueveagenda);
   ncont=0; // se va a agregar un nuevo contacto
   return ;
}
else
{
   while(mueveagenda->siguiente!=NULL)
   {
       if(strcmp(nomb,mueveagenda->nombre)==0)
       {
           borra=mueveagenda;
           encontradob=1;
           break;
       }

       mueveagenda=mueveagenda->siguiente;
   }

   if(strcmp(nomb,mueveagenda->nombre)==0)
   {
       borra=mueveagenda;
       encontradob=1;
   }
}


Más elegante, y se ve a que corresponde cada llave.

También hay muchas líneas que se pueden abreviar. Hay un caso como este:

Código (cpp) [Seleccionar]
if(event.type==SDL_KEYDOWN)
           {
               if((ACCION==9 && eventos.siguien==0) || (ACCION==3 && eventos.siguienb==0) || (ACCION==4 && eventos.siguienbo==0) || ACCION==5 || ACCION==10) //Carga vector nombre
               {
                   if(event.key.keysym.sym==SDLK_BACKSPACE) //borra un caracter.
                   {
                       if(eventos.tamcont>=0)
                       {
                           nomb[eventos.tamcont-1]=0;
                           eventos.tamcont--;
                       }

                   }
                     
                   f(event.key.keysym.sym==SDLK_SPACE)
                   {
                       if(eventos.tamcont<50)
                       {
                           nomb[eventos.tamcont]=' ';
                           eventos.tamcont--;
                       }

                   }
                     f(event.key.keysym.sym==SDLK_a)
                   {
                       if(eventos.tamcont<50)
                       {
                           nomb[eventos.tamcont]='a ';
                           eventos.tamcont--;
                       }

                   }
        //...


Miles de líneas... Puede resumirse a:

if(eventos.tamcont<50)
{
   switch(event.key.keysym.sym)
   {
   case SDLK_SPACE:
               nomb[eventos.tamcont]=' ';
               break;
   case SDKL_a:
               nomb[eventos.tamcont]='a';
               break;
   case SDKL_b:
               nomb[eventos.tamcont]='b';
               break;
   case SDKL_c:
               nomb[eventos.tamcont]='c';
               break;
 
  //...

   default:
               nomb[eventos.tamcont]='?';
   }
 
   eventos.tamcont++;
}


Mucho más escueto.

Otra cosa es que dejes de usar el Devcpp y uses algun IDE más moderno... Fijate como veo yo el archivo de graficos.h:



Mucho más elegante, si quiero ver alguna función en particular:



Te subo el código indentado, te falta por completar el switch de antes:
https://dl.dropboxusercontent.com/u/69551225/agenda.zip

Cuando termine de comer te digo más cosas ;)
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar