Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Fire544 en 6 Agosto 2012, 05:23 am



Título: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 6 Agosto 2012, 05:23 am
Hola a todos!! Desarrolle una calculadora, el objetivo del software es animar a los programadores iniciados/avanzados en C , ya que veo muchas dudas sobre con cual API para GUI necesitan, si QT, o GTK soporta perifericos, si es facil, etc. Muchas dudas, que me hicieron codear este ejemplo, esta hecho en puro C del estandar ANSI, claro la GUI la implemente con SDL, es multiplataforma, solo tienen que compilar en GNU/Linux o cualquier otro S.O y no necesita modificacion de codigo.

Tiene algunos errores, luego se daran cuenta, y tambien le falta los efectos cuando accionamos encima de los botones, pero si tienen los de acciones pulsados, y luego para la version 1.1 de este mismo ejemplo, les traere todo completo. Al que se animen a criticar y ayudar con el desarrollo de la libreria no hay problemas, esta todo el codigo, ejecutable, fonts, jpg, libs y makefile, generado por SDL.

Critiquen, posteen, desahogo total !!!  ;-)

Aqui les dejo el link de descarga:

Codigo: 2m1bdemf

http://uploading.com/files/get/2m1bdemf/Proyecto_Calc_C_SDL.rar (http://uploading.com/files/get/2m1bdemf/Proyecto_Calc_C_SDL.rar)


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: avesudra en 6 Agosto 2012, 14:12 pm
Está muy bien teniendo en cuenta que es con SDL , una cosa ¿porque solo puedo poner números con el numpad? Gracias por el aporte y por el código.
PD: De momento yo la llamaría sumadora jajaja.
¡Un saludo!


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Foxy Rider en 6 Agosto 2012, 14:44 pm
En principio habría que sacarle todas esas DLLs que tiene ahí, incluído el compilado ... o debería ir a un directorio aparte.
Pensá que en un proyecto se separa por un lado el código, por otro los resources (como los JPG y fuentes TrueType), y por otro los compilados.

Un esquema muy común es el de:
Citar
src/
include/
resources/
bin/

etc ... mientras no se mezclen todas las cosas en un directorio, cualquier esquema vale.
Siguiendo en las líneas de los ficheros, también hay que señalar que las extensiones son de C++ (cpp) y no de C (.c), pero no sólo eso ... el uso de una extensión diferente, altera el comportamiento del compilador, que usualmente se pasa a un modo C++ y muchas cosas cambian (pero C99 puede perdonarlas), siendo la más visible la de los comentarios de una sóla línea (C99 creo que los incorpora, pero son originarios de C++), por lo que te aconsejo compilar usando una extensión válida, y si te animás, el flag -ansi.

Otra cosa que "se vé feo" es incluir cpp, uno diferencia ficheros fuente (.c, .cpp, .cxx, .cc, etc ... siendo .c de C, y todo lo demás de C++)  de los ficheros de encabezado (.h, .hh, .hpp, etc .. siendo .h de C, y todo lo demás C++) por que tienen diferentes funciones ... pero es una convención más que un requisito (a pesar de ser convención informal, se puede alterar el comportamiento del compilador)

Tendrías que repasar tus textos en cuanto a eso.
Revisar definición, declaracion, etc (acá tenés una ayuda (http://www.cprogramming.com/declare_vs_define.html)) .... y entender que en  los encabezados van las declaraciones y los .c van las definiciones (en general)

Entendido eso, como lectura sugerida te daría este texto → http://www.thegeekstuff.com/2011/10/c-program-to-an-executable/
Para que vayas conectando las piezas en tu cabeza y veas uno de los "porqué" de esta convención.

Pasemos a compilar:
Citar
alex@Sylbit:~/Downloads/Calculadora_con_SDL_puro_C$ clang Untitled1.cpp
Untitled1.cpp:3:10: fatal error: 'SDL.h' file not found
#include <SDL.h>
         ^
1 error generated.

En mi caso, el encabezado SDL.h está en /usr/include/SDL, así que tengo que cambiarlo a esto:

Código
  1. #include <SDL/SDL.h>

Como verás, el código no es portable ... báh, el código y el sistema con el que se compila (no lo hay), por lo que deberías usar un IDE que lidie con el tema de los encabezados y ajuste eso o mejor, usar algo como cmake que es mucho más configurable y multiplataforma .... pero pensá de este párrafo como algo opcional que sumaría mucho a la calidad del paquete, pero que no es obligatorio.

Citar
alex@Sylbit:~/Downloads/Calculadora_con_SDL_puro_C$ clang Untitled1.cpp  -lSDL -lSDL_ttf -lSDL_image

Genial, compila !!! (compilado como código C puro  .... no compila)
En principio sería eso, la sumadora está bien ... no opiné sobre el código fuente por que se hace muy denso (memory leaks, identado, nombrado de variables y funciones, valores sin inicializar,  uso abusivo de else if en vez de switchs, falta despedazar algunas funciones en otras más chicas y así así así así ) y largo esto, pero tratá de corregir lo que señalé acá primero

Saludos.


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 6 Agosto 2012, 15:57 pm
Hola buenas, Alex Mtx : Si comprendo perfectamente, pierde portabilidad por los linkeos y la inclusion de las libs, por no poner enfasis en su uso "SDL\SDL.h, etc".  Pero si te fijas solo tienes que linkear y ya esta, muy bien la correccion, sobre el uso de "else if" si tengo que optar por el uso de "switch" a si optimizo mas el codigo, tambien las declaraciones de variables abusivas dentro del mismo "main.c" hace el codigo imposible de leer, en el caso de las variables no inicializadas eso si lo tube en cuenta lo unico que se me paso, sobre la distribucion de ficheros incluyendo "libs, T Fonts, .jpg, .h, .c y .exe" si deberian ir, en directorios a partes. Muy buena tu correccion gracias Alex Mtx  ;-)

EI: juntando mensajes.

Está muy bien teniendo en cuenta que es con SDL , una cosa ¿porque solo puedo poner números con el numpad? Gracias por el aporte y por el código.
PD: De momento yo la llamaría sumadora jajaja.
¡Un saludo!

Hola avesudra: Si tienes razon, no gestiona los eventos del teclado numerico secundario (teclado numerico por debajo de las teclas F0-F12), esto pasa por que aun no gestiono, esos tipos de eventos, pero ya para otras versiones estara completo. Gracias por tu observacion avesudra  ;-)


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Foxy Rider en 6 Agosto 2012, 16:57 pm
Citar
Hola buenas, Alex Mtx : Si comprendo perfectamente, pierde portabilidad por los linkeos y la inclusion de las libs
En realidad desde que tenés que tipear el comando para compilar ... SDL es bastante multiplataforma como para que robe portabilidad :D
El hecho de tener que tipear un comando, roba comodidad y portabilidad .... pero que no tengas algo que lidie con que si es SDL.h o SDL/SDL.h es algo que también roba portabilidad (los otros .h están bajo SDL/ también), depende de cómo lo veas, es un proyecto chiquito igual, no es tanto drama ... pero la idea es que te agarres costumbre con la "forma correcta" para cuando te toquen proyectos más grandes :)

Citar
Muy buena tu correccion gracias Alex Mtx

Así se aprende, programando y mirando código de otros !!
Seguí programando, programando y programando ... compartí tu código y vamos a ir limando asperezas.

Suerte y no desanimes !

Saludos.

P.S → Agregar los otros eventos y otros operadores es un segundito, lo "más importante" ya está.


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 6 Agosto 2012, 19:23 pm
He aqui la version 1.1 del software (tipo: Calculadora suma), esta ya incorporada con la gestion de eventos (teclado numerico numpad) ya que la version 1.0 solo tenia knumpad, ahora todo organizado con respecto a la inundacion de ficheros que abian, las libs .h, .c, .jpg, .fonts, etc, bien distribuidas no olviden copiar los .dll a c:\windows\system32\, es una compilacion multiarchivo y no olviden tener las carpetas en un mismo directorio.

No utilice la funcion "switch" por que se complica mas la gestion de eventos, ya que cada vez que gestiono un evento, tambien se tiene que verificar si se dejo de pulsar la tecla, pero luego optimizare mas el codigo, para lograr esto de la gestion con "switch".

Con relacion a los includes tambien para una implementacion del codigo, intentare hacer una programacion condicional, dicho a si "Todos los ficheros cabeceras, se incluiran en la ejecucion, de a cuerdo con la plataforma corrida (S.O)".

Puede ser algo como esto:
Código:
#ifdef __UNIX__
#include <usr/lib/.h> || include <lib/.h>
else
#include <lib/.h> //siendo lib el directorio original de SDL
#endif

Salvedad:La carpeta bin, no va en los directorios borrar por favor antes de ejecutar/compilar y otras cosa. Si quieres modificar el tamaño de los botones intenta de no pasarte de un rango de dimensiones 114 x 39, ya que el tamaño de los botones es independiente del codigo, pero no de modificaciones no soportadas por este rando, ya intentare implementar la libreria components.h para que soporte todo esto. Fue muy buena colaboracion de todos, sigan colaborando y aprenderemos mas aun !!  ;-)


Aqui en link con el software actualizado a 1.1  ;-)

codigo: bc29d5f8

http://uploading.com/files/get/bc29d5f8/Proyecto_Calc_C_SDL.rar (http://uploading.com/files/get/bc29d5f8/Proyecto_Calc_C_SDL.rar)


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: dato000 en 7 Agosto 2012, 01:29 am
Aqui en link con el software actualizado a 1.1  ;-)

codigo: bc29d5f8

http://uploading.com/files/get/bc29d5f8/Proyecto_Calc_C_SDL.rar (http://uploading.com/files/get/bc29d5f8/Proyecto_Calc_C_SDL.rar)


Perdonen la pregunta, soy novato comparado con uds, pero como hago para abrir esto en linux sin tener que copiar cada archivo??


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 7 Agosto 2012, 04:56 am
Perdonen la pregunta, soy novato comparado con uds, pero como hago para abrir esto en linux sin tener que copiar cada archivo??

Hola dato000: Primeramente tendrias que especificar sobre que distribucion GNU\Linux andas, y claro su version. Pero lo normal es que sea alguna distro Linux mas usual, la compilacion normal con GCC bajo la terminal, o cualquier IDE que utilize el compilador GCC, lo unico que tienes que añadirle a tu compilacion seria un linkeo precedido de -l si esta en el directorio actual, en este caso no es asi, entonces se recurre a -L usr\lib SDL, cuando me refiero a "lib" es el directorio donde se encuentran los lib.o/a de tu libreria SDL.

Ejemplo:
Código:
gcc main.c -o salida -L usr/lib/sdl/sdl.h -L usr/lib/sdl/sdl_ttf.h -L usr/lib/sdl/sdl_image.h -L usr/lib/sdl/sdl_main.h

Salvedad: Tienes que primero instalar los libs de SDL, al igual que sus libs auxiliares como lo son: SDL_image, SDL_ttf, etc, con ayuda de sudo apt-get install xxx o algun otro repositorio de instalacion !!


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: dato000 en 7 Agosto 2012, 05:01 am
Hola dato000: Primeramente tendrias que especificar sobre que distribucion GNU\Linux andas, y claro su version. Pero lo normal es que sea alguna distro Linux mas usual, la compilacion normal con GCC bajo la terminal, o cualquier IDE que utilize el compilador GCC, lo unico que tienes que añadirle a tu compilacion seria un linkeo precedido de -l si esta en el directorio actual, en este caso no es asi, entonces se recurre a -L usr\lib SDL, cuando me refiero a "lib" es el directorio donde se encuentran los lib.o/a de tu libreria SDL.

Ejemplo:
Código:
gcc main.c -o salida -L usr/lib/sdl/sdl.h -L usr/lib/sdl/sdl_ttf.h -L usr/lib/sdl/sdl_image.h -L usr/lib/sdl/sdl_main.h

Salvedad: Tienes que primero instalar los libs de SDL, al igual que sus libs auxiliares como lo son: SDL_image, SDL_ttf, etc, con ayuda de sudo apt-get install xxx o algun otro repositorio de instalacion !!

Si señor, uso gcc en linux mint debian. Ummm no me ha servido de mucho...

Citar
root@datohost:/home/dato000/Documentos/c++/calculadora/calculadora# gcc main.c -o salida -L usr/lib/sdl/sdl.h -L usr/lib/sdl/sdl_ttf.h -L usr/lib/sdl/sdl_image.h -L usr/lib/sdl/sdl_main.h
gcc: error: main.c: No existe el fichero o el directorio
gcc: fatal error: no input files
compilation terminated.

Como instalo las librerias si no es mucho pedir???


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 7 Agosto 2012, 05:06 am
Si señor, uso gcc en linux mint debian. Ummm no me ha servido de mucho...

Como instalo las librerias si no es mucho pedir???

Mira estas especificando el archivo de entrada para gcc con el mismo ejemplo, cambia main.c por el nombre de tu .c principal, si aun conservas los mismos nombres de el .c en el proyecto de la calculadora, entonces intenta gcc Untitled1.c -o salida.exe luego los linkeos !! Suerte  :laugh:


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: dato000 en 7 Agosto 2012, 05:23 am
howto dummies jejeja

Citar
root@datohost:/home/dato000/Documentos/c++/calculadora/calculadora#  gcc Untitled1.c -o salida.exe
gcc: error: Untitled1.c: No existe el fichero o el directorio
gcc: fatal error: no input files
compilation terminated.

Luego me fije, y el archivo es .cpp

Citar
root@datohost:/home/dato000/Documentos/c++/calculadora/calculadora# g++ Untitled1.cpp -o calc
Untitled1.cpp:3:17: fatal error: SDL.h: No existe el fichero o el directorio
compilation terminated.
root@datohost:/home/dato000/Documentos/c++/calculadora/calculadora#

sdl, como carajos lo instalo???


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 7 Agosto 2012, 05:37 am
howto dummies jejeja

Luego me fije, y el archivo es .cpp

sdl, como carajos lo instalo???


Mira googlea un poco, aqui esta lo que buscas,  descomprime e instala o intenta sudo apt-get install sdl1.x.x

http://www.libsdl.org/download-1.2.php (http://www.libsdl.org/download-1.2.php)


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: dato000 en 7 Agosto 2012, 05:52 am
Vale lo instale aparte y le di ademas:

Código:
sudo aptitude install libsdl-image1.2-dev
sudo apt-get install libsdl-ttf2.0-dev

Y pues ya no me salen problemas con las librerias.
Ahora me sale esto...


Citar
root@datohost:/home/dato000/Documentos/c++/calculadora/calculadora# g++ Untitled1.cpp -o calc
/tmp/ccXQpwd2.o: In function `create_button(int, int, char const*, int, int)':
Untitled1.cpp:(.text+0xe): undefined reference to `IMG_Load'
Untitled1.cpp:(.text+0x5e): undefined reference to `TTF_OpenFont'
Untitled1.cpp:(.text+0x8c): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0xba): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0xe8): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x116): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x144): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x16a): undefined reference to `SDL_UpperBlit'
Untitled1.cpp:(.text+0x18d): undefined reference to `SDL_UpperBlit'
Untitled1.cpp:(.text+0x19a): undefined reference to `SDL_Flip'
Untitled1.cpp:(.text+0x1a5): undefined reference to `SDL_FreeSurface'
Untitled1.cpp:(.text+0x1b0): undefined reference to `SDL_FreeSurface'
/tmp/ccXQpwd2.o: In function `create_label(int, int, char const*, int, int)':
Untitled1.cpp:(.text+0x1e5): undefined reference to `TTF_OpenFont'
Untitled1.cpp:(.text+0x213): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x241): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x26f): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x29d): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x2cb): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x2f1): undefined reference to `SDL_UpperBlit'
Untitled1.cpp:(.text+0x2fe): undefined reference to `SDL_Flip'
Untitled1.cpp:(.text+0x309): undefined reference to `SDL_FreeSurface'
/tmp/ccXQpwd2.o: In function `create_texbox(int, int)':
Untitled1.cpp:(.text+0x337): undefined reference to `IMG_Load'
Untitled1.cpp:(.text+0x35d): undefined reference to `SDL_UpperBlit'
Untitled1.cpp:(.text+0x36a): undefined reference to `SDL_Flip'
Untitled1.cpp:(.text+0x375): undefined reference to `SDL_FreeSurface'
/tmp/ccXQpwd2.o: In function `SDL_printf(int, int, char const*, int, int)':
Untitled1.cpp:(.text+0x3aa): undefined reference to `TTF_OpenFont'
Untitled1.cpp:(.text+0x3d8): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x406): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x434): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x462): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x490): undefined reference to `TTF_RenderText_Blended'
Untitled1.cpp:(.text+0x4b6): undefined reference to `SDL_UpperBlit'
Untitled1.cpp:(.text+0x4c3): undefined reference to `SDL_Flip'
Untitled1.cpp:(.text+0x4ce): undefined reference to `SDL_FreeSurface'
/tmp/ccXQpwd2.o: In function `create_button_efecto(int, int)':
Untitled1.cpp:(.text+0x4fc): undefined reference to `IMG_Load'
Untitled1.cpp:(.text+0x522): undefined reference to `SDL_UpperBlit'
Untitled1.cpp:(.text+0x52f): undefined reference to `SDL_Flip'
Untitled1.cpp:(.text+0x53a): undefined reference to `SDL_FreeSurface'
/tmp/ccXQpwd2.o: In function `crear_pantalla(int, int, char const*, char const*)':
Untitled1.cpp:(.text+0x561): undefined reference to `SDL_Quit'
Untitled1.cpp:(.text+0x56b): undefined reference to `TTF_Init'
Untitled1.cpp:(.text+0x577): undefined reference to `SDL_Init'
Untitled1.cpp:(.text+0x582): undefined reference to `IMG_Load'
Untitled1.cpp:(.text+0x5a7): undefined reference to `SDL_SetVideoMode'
Untitled1.cpp:(.text+0x5bf): undefined reference to `SDL_WM_SetCaption'
Untitled1.cpp:(.text+0x5e2): undefined reference to `SDL_UpperBlit'
Untitled1.cpp:(.text+0x5ef): undefined reference to `SDL_Flip'
/tmp/ccXQpwd2.o: In function `cursor_atras(int, int)':
Untitled1.cpp:(.text+0x639): undefined reference to `SDL_MapRGB'
Untitled1.cpp:(.text+0x653): undefined reference to `SDL_FillRect'
Untitled1.cpp:(.text+0x695): undefined reference to `SDL_MapRGB'
Untitled1.cpp:(.text+0x6af): undefined reference to `SDL_FillRect'
Untitled1.cpp:(.text+0x6f4): undefined reference to `SDL_MapRGB'
Untitled1.cpp:(.text+0x70e): undefined reference to `SDL_FillRect'
Untitled1.cpp:(.text+0x71b): undefined reference to `SDL_Flip'
/tmp/ccXQpwd2.o: In function `cursor_negro(int, int)':
Untitled1.cpp:(.text+0x765): undefined reference to `SDL_MapRGB'
Untitled1.cpp:(.text+0x77f): undefined reference to `SDL_FillRect'
Untitled1.cpp:(.text+0x78c): undefined reference to `SDL_Flip'
/tmp/ccXQpwd2.o: In function `cursor_blanco(int, int)':
Untitled1.cpp:(.text+0x7d6): undefined reference to `SDL_MapRGB'
Untitled1.cpp:(.text+0x7f0): undefined reference to `SDL_FillRect'
Untitled1.cpp:(.text+0x7fd): undefined reference to `SDL_Flip'
/tmp/ccXQpwd2.o: In function `cursor(int, int)':
Untitled1.cpp:(.text+0x847): undefined reference to `SDL_MapRGB'
Untitled1.cpp:(.text+0x861): undefined reference to `SDL_FillRect'
Untitled1.cpp:(.text+0x86e): undefined reference to `SDL_Flip'
/tmp/ccXQpwd2.o: In function `accion_boton_nuevo_calculo()':
Untitled1.cpp:(.text+0xa7a): undefined reference to `SDL_Delay'
/tmp/ccXQpwd2.o: In function `accion_boton_sumar()':
Untitled1.cpp:(.text+0xb6e): undefined reference to `SDL_Delay'
/tmp/ccXQpwd2.o: In function `main':
Untitled1.cpp:(.text+0x1df6): undefined reference to `SDL_WaitEvent'
collect2: ld returned 1 exit status

Algo minimo, es solo una molestia, pero si se puede compilar en linux, o es obligado el uso en visual studio??


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 7 Agosto 2012, 06:03 am
Vale lo instale aparte y le di ademas:

Código:
sudo aptitude install libsdl-image1.2-dev
sudo apt-get install libsdl-ttf2.0-dev

Y pues ya no me salen problemas con las librerias.
Ahora me sale esto...


Algo minimo, es solo una molestia, pero si se puede compilar en linux, o es obligado el uso en visual studio??


No mira Visual Studio uff estoy lejos de el, pero fijate puedes compilar en cualquier distro de Linux, lo unico que falta en tu codigo es los linkeos, intenta colgar g++ Untitled1.cpp -o salida.exe -lSDLmain -lSDL -lSDL_image -lSDL_ttf


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: dato000 en 7 Agosto 2012, 06:19 am
En linux no me sirven los .exe

Citar
root@datohost:/home/dato000/Documentos/c++/calculadora/calculadora# g++ Untitled1.cpp -o salida -lSDLmain -lSDL -lSDL_image -lSDL_ttf

funciono de perlas!!!!

hey vas volando amigo!!!!! a mi me funciona tanto el alfanumerico como el alternativo!! muy bueno.

DEjo una captura de que si sirve, falta mucho, pero viejo, estas en otro nivel, vas a lo que yo aspiro!!

 (http://thumbs.subefotos.com/456b14321c4674574ca6dddae5fc1c9do.jpg) (http://subefotos.com/ver/?456b14321c4674574ca6dddae5fc1c9do.png)


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 7 Agosto 2012, 06:29 am
M
En linux no me sirven los .exe

funciono de perlas!!!!

hey vas volando amigo!!!!! a mi me funciona tanto el alfanumerico como el alternativo!! muy bueno.

DEjo una captura de que si sirve, falta mucho, pero viejo, estas en otro nivel, vas a lo que yo aspiro!!

 (http://thumbs.subefotos.com/456b14321c4674574ca6dddae5fc1c9do.jpg) (http://subefotos.com/ver/?456b14321c4674574ca6dddae5fc1c9do.png)

ira no te esta cargando la imagen pricipal de la ventana, verifica que en tu directorio images este un .jpg llamado nave.jpg y que este tenga una dimension 640 x 440, sino es a si entonces extrae nuevamente la carpeta images a tu directorio donde estan todas extraidas !! Suerte  :laugh:


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: dato000 en 7 Agosto 2012, 14:08 pm
pues ni idea, las imagenes estan ahi, y no se en que linea se accesa a tal carpeta.

Editado:

UPS!! ya lo encontre:

Citar
crear_pantalla(300, 220, "images/nave.jpg", "Calculadora Suma");

Lo cambie a:
Citar
crear_pantalla(640, 480, "images/nave.jpg", "Calculadora Suma");

La ruta de la imagen parece estar bien, no comprendo que pasa.

vuelvo con:
Citar
root@datohost:/home/dato000/Documentos/c++/calculadora/calculadora# g++ Untitled1.cpp -o salida -lSDLmain -lSDL -lSDL_image -lSDL_ttf

Podrias explicarme como es el funcionamiento de este comando, lo que viene después de "salida"

-------------------------------------------

Ya descubri el fallo en la imagen, hay que modificar la linea, cambiarle el tamaño a 640x480 y ponerle la extensión correctamente con esto:

Citar
crear_pantalla(640, 480, "images/nave.JPG", "Calculadora Suma");

Ya cambio!!! ahora se ve la imagen! buen trabajo viejo!!

 (http://thumbs.subefotos.com/77ac2ef536cea14ce611ea376a638dceo.jpg) (http://subefotos.com/ver/?77ac2ef536cea14ce611ea376a638dceo.png)


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 7 Agosto 2012, 16:52 pm
No mira aun sigues con el error, carga la imagen, el problema aqui es de dimensiones, ajusta las dimensiones de la funcion crear_pantalla(argc1,argc2,argc3,argc-n), mira intenta esto:

Código:
crear_pantalla(300, 220, "images/nave.jpg", "Calculadora Suma");

y antes verifica que la imagen nave.jpg este con dimensiones 300,220, es error de programacion y va de mi parte, mala mia. Tambien puedes optar por editar tu mismo la imagen, agrandandola al tamaño requerido, intenta esto, y listo.

Tambien veo que las cajas de textos no te cargan, verifica las llamadas en los directorios, eso esta en el cabecera "components.h".

Y sobre los enlaces o linkeos de librerias ya sean dinamicas o estaticas, precedidas de -l o -L son para linkear con dichas librerias especificadas, ya que si no le dices al compilador donde buscar las .a\.o entonces, te dira que no haces referencias a dichas librerias y es como si no la encontrara en tu directorio, ya que estas utilizando librerias no pertenecientes al estandar C ANSI, por eso debes de indicar que has instalado nuevas libs.

Salvedad: Al igual puedes dejar la imagen intacta, y solo cambiar los parametros 1 y 2 de tu funcion crear_pantalla() a 300 y 220. Eso si no es recomendable por el uso no aducuado de la imagen, consumiria mas recursos, pero tambien vale !! Suerte  :xD

Mira tiene que quedar asi:

 (http://thumbs.subefotos.com/5cd095170a1e463c94fa494fe3e1643bo.jpg) (http://subefotos.com/ver/?5cd095170a1e463c94fa494fe3e1643bo.jpg)


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: dato000 en 7 Agosto 2012, 18:08 pm
 (http://thumbs.subefotos.com/b06b7b7773164b6e03c75bbd320cc4d4o.jpg) (http://subefotos.com/ver/?b06b7b7773164b6e03c75bbd320cc4d4o.png)

Solo habia que modificar las extensiones del archivo "components.cpp"

Citar
L7          #define BOTON "images/boton.JPG"
L152      texbox = IMG_Load("images/texbox.JPG");
L233      boton_efecto = IMG_Load("images/boton_efecto.JPG");


Ummm tambien veo que la fuente es diferente, pero es que seguramente no hay esa fuente en linux, al menos no esta instalada por defecto en linux mint debian, aunque no es tan determinante.

Viejo muy bueno todo, muy bueno, avisa cuando dejes las otras operaciones. Sigue dandole va genial, algún dia yo hare algo así. Tengo pensado un tetris pero estoy capacitandome.


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Puntoinfinito en 8 Agosto 2012, 17:11 pm
Has de arreglar a tu "sumadora" que no solo se puedan poner números de numpad.

Saludos


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 8 Agosto 2012, 21:52 pm
Has de arreglar a tu "sumadora" que no solo se puedan poner números de numpad.

Saludos

A ver no entiendo, que quieres decir, que gestiona otros eventos, a parte de los numericos ?


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: X3R4CK3R en 8 Agosto 2012, 22:02 pm
A ver no entiendo, que quieres decir, que gestiona otros eventos, a parte de los numericos ?

Supongo que se referirá a usar los números "de arriba" del teclado, pongamos de ejemplo los portátiles, no todos tienen pad numérico.

Saludos


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 8 Agosto 2012, 22:11 pm
Hola !! Hago referencia al primer post, del tema, donde expongo el link de descarga, para colgar el software (Calculadora "Sumadora"), ya todo bien definido, organizado y algunos errores corregidos !!

he aqui el link:

Codigo:2m1bdemf


http://uploading.com/files/get/2m1bdemf/Proyecto_Calc_C_SDL.rar (http://uploading.com/files/get/2m1bdemf/Proyecto_Calc_C_SDL.rar)


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Puntoinfinito en 9 Agosto 2012, 11:47 am
Supongo que se referirá a usar los números "de arriba" del teclado, pongamos de ejemplo los portátiles, no todos tienen pad numérico.

Saludos

Exacto;)


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 9 Agosto 2012, 17:16 pm
Aaa ya comprendo, mira descarga la version, que postee posteriormente, porque tube que modificar el codigo, ya que no gestionaba, esos eventos, tu descargaste la version 1.0, la version 1.1 esta ya mejorada. Este es mira:


Codigo:2m1bdemf


http://uploading.com/files/get/2m1bdemf/Proyecto_Calc_C_SDL.rar (http://uploading.com/files/get/2m1bdemf/Proyecto_Calc_C_SDL.rar)


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Foxy Rider en 17 Agosto 2012, 23:49 pm
A ver ...

  • El cambio de directorios en principio está bien, lo que no es que los encabezados (.h) estén en el mismo lugar que los ficheros con fuente (.cpp) ... crearía una carpeta src para eso, pero se perdona en cierta forma (no hay ni makefiles, ni algun script que compile ni ná de na ... por lo que es más práctico tener todo junto)
  • El tema de separar declaraciones (no definiciones, guarda ahí con la terminología) de la definición o implementación, no mejoró ... un "g++ suma.cpp components.cpp" no genera un binario, sino que se queja de que faltan cosas ... te diría que repases el link que te dejé, por que me parece que no entendiste la diferencia entre ambos conceptos.
  • Otra cosa que no cambiaste es que en el título de este tema dice "C" y la extensión es cpp (de C++)

Antes de seguir hablando del código, estaría bueno pulir eso.


Título: Re: Calculadora con Interfaz Grafica (C/SDL) !!
Publicado por: Fire544 en 20 Agosto 2012, 22:12 pm
Alex Mtx: Comprendo tus aclaraciones, lo unico que no resolvi los errores en cuanto se refiere a conceptos (c o c++), pero lo tengo claro para la proxima, xDDD Gracias Alex Mtx !!  :xD