elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Agenda en C + grafica con SDL.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Agenda en C + grafica con SDL.  (Leído 2,594 veces)
ThePinkPanther

Desconectado Desconectado

Mensajes: 82



Ver Perfil
Agenda en C + grafica con SDL.
« en: 7 Mayo 2013, 19:38 pm »

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.


« Última modificación: 8 Mayo 2013, 03:43 am por ThePinkPanther » En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Agenda en C++ + grafica con SDL.
« Respuesta #1 en: 7 Mayo 2013, 19:57 pm »

esta en c o c++?


En línea

ThePinkPanther

Desconectado Desconectado

Mensajes: 82



Ver Perfil
Re: Agenda en C++ + grafica con SDL.
« Respuesta #2 en: 8 Mayo 2013, 03:43 am »

En C , colge con el titulo perdón.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Agenda en C + grafica con SDL.
« Respuesta #3 en: 8 Mayo 2013, 15:24 pm »

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:

Código
  1. if(strcmp(nomb,primero->nombre)==0)
  2. {
  3. if(primero->siguiente==NULL)
  4. {
  5. free(primero);
  6. registrono=1;
  7. }
  8. primero=primero->siguiente;
  9.  
  10. free(mueveagenda);
  11. ncont=0; // se va a agregar un nuevo contacto
  12. return ;
  13. } //fin if
  14. else // si no
  15. {
  16. while(mueveagenda->siguiente!=NULL)
  17. {
  18. if(strcmp(nomb,mueveagenda->nombre)==0)
  19. {
  20. borra=mueveagenda;
  21. encontradob=1;
  22. break;
  23. }//fin if
  24. mueveagenda=mueveagenda->siguiente;
  25. } //fin while
  26. if(strcmp(nomb,mueveagenda->nombre)==0)
  27. {
  28. borra=mueveagenda;
  29. encontradob=1;
  30. } //fin if
  31. }//fin else
  32.  

Se puede indentar así

Código
  1. if(strcmp(nomb,primero->nombre)==0)
  2. {
  3.    if(primero->siguiente==NULL)
  4.    {
  5.        free(primero);
  6.        registrono=1;
  7.    }
  8.  
  9.    primero=primero->siguiente;
  10.  
  11.    free(mueveagenda);
  12.    ncont=0; // se va a agregar un nuevo contacto
  13.    return ;
  14. }
  15. else
  16. {
  17.    while(mueveagenda->siguiente!=NULL)
  18.    {
  19.        if(strcmp(nomb,mueveagenda->nombre)==0)
  20.        {
  21.            borra=mueveagenda;
  22.            encontradob=1;
  23.            break;
  24.        }
  25.  
  26.        mueveagenda=mueveagenda->siguiente;
  27.    }
  28.  
  29.    if(strcmp(nomb,mueveagenda->nombre)==0)
  30.    {
  31.        borra=mueveagenda;
  32.        encontradob=1;
  33.    }
  34. }
  35.  

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
  1. if(event.type==SDL_KEYDOWN)
  2.            {
  3.                if((ACCION==9 && eventos.siguien==0) || (ACCION==3 && eventos.siguienb==0) || (ACCION==4 && eventos.siguienbo==0) || ACCION==5 || ACCION==10) //Carga vector nombre
  4.                {
  5.                    if(event.key.keysym.sym==SDLK_BACKSPACE) //borra un caracter.
  6.                    {
  7.                        if(eventos.tamcont>=0)
  8.                        {
  9.                            nomb[eventos.tamcont-1]=0;
  10.                            eventos.tamcont--;
  11.                        }
  12.  
  13.                    }
  14.  
  15.                    f(event.key.keysym.sym==SDLK_SPACE)
  16.                    {
  17.                        if(eventos.tamcont<50)
  18.                        {
  19.                            nomb[eventos.tamcont]=' ';
  20.                            eventos.tamcont--;
  21.                        }
  22.  
  23.                    }
  24.                      f(event.key.keysym.sym==SDLK_a)
  25.                    {
  26.                        if(eventos.tamcont<50)
  27.                        {
  28.                            nomb[eventos.tamcont]='a ';
  29.                            eventos.tamcont--;
  30.                        }
  31.  
  32.                    }
  33.         //...

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

Código
  1. if(eventos.tamcont<50)
  2. {
  3.    switch(event.key.keysym.sym)
  4.    {
  5.    case SDLK_SPACE:
  6.                nomb[eventos.tamcont]=' ';
  7.                break;
  8.    case SDKL_a:
  9.                nomb[eventos.tamcont]='a';
  10.                break;
  11.    case SDKL_b:
  12.                nomb[eventos.tamcont]='b';
  13.                break;
  14.    case SDKL_c:
  15.                nomb[eventos.tamcont]='c';
  16.                break;
  17.  
  18.   //...
  19.  
  20.    default:
  21.                nomb[eventos.tamcont]='?';
  22.    }
  23.  
  24.    eventos.tamcont++;
  25. }

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 ;)
« Última modificación: 8 Mayo 2013, 15:28 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
ThePinkPanther

Desconectado Desconectado

Mensajes: 82



Ver Perfil
Re: Agenda en C + grafica con SDL.
« Respuesta #4 en: 8 Mayo 2013, 18:28 pm »

bueno gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Agenda bat V1 by my
Scripting
J3FFR3Y .4 C3D3Ñ0 0 3,743 Último mensaje 17 Diciembre 2006, 21:46 pm
por J3FFR3Y .4 C3D3Ñ0
[Source] Agenda Gráfica « 1 2 »
Java
[Zero] 13 12,205 Último mensaje 31 Enero 2010, 21:41 pm
por vanbuuren
Grafica integrada + grafica dedicada, es tirar el dinero?
Hardware
hobuss 8 14,683 Último mensaje 2 Febrero 2011, 03:30 am
por Aprendiz-Oscuro
Problemón con T.Gráfica y ¿Recomendación de nueva tarjeta gráfica? « 1 2 3 4 »
Hardware
Eleкtro 31 26,529 Último mensaje 27 Febrero 2013, 21:54 pm
por simorg
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines