Ver la versión completa : programacion. como atajar los problemas
No estoy seguro de que este sea el sitio adecuado para poner esto, aunque todo parece indicar que sí. Que así sea >_<
A ver, resulta que en temas de programación, yo, poquito. C lo conozco, la teoría, pero a la hora de llevarlo a la práctica es cuando me lio. No sé como atajar los problemas.
Me remito a lo que me pasa ahora mismo. Para practicar, y que a su vez sea un programa práctico, estoy empezando un programa que vendría a ser como un "remake pixel perfect" del menu de la consola, pero para que se vea en PC linux/windows. ¿Para que? Pues para probrar los skins mientras se están diseñando sin tener que meter éstos en la consola. En general, para ayudarte a crear un skin.
Pero bueno empiezo a pensar en como se desarrollaría el programa pero aqui es donde no tengo ni **** idea. No se como tratar por ejemplo cada pantalla ¿cuando cambio de pantalla borro todo y hago que se cambie al modo(pantalla nueva)?¿O simplemente superpongo la nueva? ¿Como trato a los textos que representan los nombres de fichero, como se cual esta seleccionado, etc,etc. Estos son solo ejemplo de las paranoyas que me entran y no encuentro solucion :confused:
Y lo del bucle principal no lo acabo de pillar :loco: (que cortito soy)
No sabréis de alguna web, tutoriales, lo que sea, donde expliquen este tipo de cosas
gracias neng ^_^
buff ... espero que de mayor no te quieras ganar la vida programando porque de momento lo llevas muy crudo :D :D
pero no te desanimes ;) buscate un tuto facilillo porque todo lo que preguntas son preguntas sobre cosas sencillas. y la respuesta final es: que lo haras como mas te guste, pero teniendo las nociones claras. ya sabes que en programacion hay 100 formas de hacer las cosas :D ;)
Aiken
NoobLuck
22/11/2005, 01:31
Pues si no usas unas librerias genéricas como las SDL o la libreria standard de C, en cada sistema va de una manera...
Pues si no usas unas librerias genéricas como las SDL o la libreria standard de C, en cada sistema va de una manera...
Se me ha olvidado decirlo. Claro, voy a usar SDL, por lo de multiplataforma
(como buen linuxero que soy, el tema de la multiplataforma me llega al alma [wei4] )
Wild[Kyo]
22/11/2005, 04:08
Quieres webs?
http://www.gp32spain.com/foros/showthread.php?s=&threadid=23569
Pero bueno empiezo a pensar en como se desarrollaría el programa pero aqui es donde no tengo ni **** idea. No se como tratar por ejemplo cada pantalla ¿cuando cambio de pantalla borro todo y hago que se cambie al modo(pantalla nueva)?¿O simplemente superpongo la nueva? ¿Como trato a los textos que representan los nombres de fichero, como se cual esta seleccionado, etc,etc. Estos son solo ejemplo de las paranoyas que me entran y no encuentro solucion :confused:
Y lo del bucle principal no lo acabo de pillar :loco: (que cortito soy)
Respecto a lo de cada pantalla y el cambio, desde SDL puedes cargar todas las imágenes de una tacada al principio, y luego en función de en qué menú estás, mostrar una u otra (función "SDL_BlitSurface", para más señas).
Como dices que al menos conoces la teoría de C, sabrás que existe la instrucción "switch" que te permite ejecutar un código u otro en función del valor de una variable. Pues bien, la idea, a grandes rasgos, sería tener una variable ("int estado", o mejor "Uint8 estado", por ejemplo) que te indique en qué menú te encuentras. En función de cuál sea el menú, deberías decidir qué muestras en pantalla y como se traducen los eventos de teclado (por decir algo, cursor a la derecha ilumina el icono inmediatamente a la derecha del actual).
Y en el programa principal tendrás el bucle principal, que lo que hace básicamente es:
- esperar eventos (de teclado en tu caso)
- y actuar en consecuencia, que traducido quiere decir:
actualizar los datos del programa
pintar en función de esos datos
Y eso lo hace continuamente hasta que ocurre un evento que hace finalizar el programa (pulsar ESC, por ejemplo).
Te pongo como ejemplo el código de un juego que ya he acabado (listo para Windows y para Linux) y que estoy esperando a poder compilar para GP2X:
Este es el bucle principal:
salir = 0;
while (!salir)
{
GestionaInput(); <-- detección de eventos de teclado (y de ratón, joystick, etc., si hace falta)
Actualiza();
Pinta();
}
Desde GestionaInput() se detectan eventos, como ya he dicho, y si se cierra la ventana (un evento) o se pulsa ESC (otro evento), salir pasa a valer 1, con lo cual sale del bucle y del programa.
No sé si te voy a liar aún más... :) En cualquier caso, mejor empieza por un tutorial sencillito y intenta hacer un juego simple (el Pong, por ejemplo) y verás cómo se pinta, cómo se actualiza, y cómo se gestionan los eventos. Suerte.
La idea de un editor de skins me parece co**nuda. Estaría bien que además de presentar la vista preliminar, lo empaquetase de alguna forma en un único archivo instalador o algo así.
Lo que yo no le veo demasiado sentido es unar SDL para este tipo de aplicaciones, ya que creo que en el aspecto de interfaz de usuario (botones, enventos, desplegables, etc.) está bastante verde. Que alguien me corrija si me equivoco.
Unas buenas librerías gráfiicas para este tipo de interfaces son las GTK+ (http://www.gtk.org/), que también son libres y multiplataforma. Pero yo no te podría ayudar, porque la verdad es que nunca he programado con ellas :rolleyes:
hectorblanco
22/11/2005, 06:00
O las wxwidgets, que pueden trabajar con casi cualquier gestor de escritorio.
Lo que yo no le veo demasiado sentido es unar SDL para este tipo de aplicaciones, ya que creo que en el aspecto de interfaz de usuario (botones, enventos, desplegables, etc.) está bastante verde. Que alguien me corrija si me equivoco.
Yo había entendido que se trataba de una aplicación para ver los skins tal cuál se verán en la consola y no tener que moverlos de Linux/Windows a GP2X para ver el resultado, y no de un editor. Si es lo primero, y más si como parece no está muy puesto en programación, creo que con usar cuatro funciones de SDL y C le basta. Si es lo segundo, entonces sí que necesita una librería para el interfaz gráfico.
Unas buenas librerías gráfiicas para este tipo de interfaces son las GTK+ (http://www.gtk.org/), que también son libres y multiplataforma. Pero yo no te podría ayudar, porque la verdad es que nunca he programado con ellas :rolleyes:
En caso de que necesite algo así, yo también tiraría de wxWidgets en lugar de GTK+. A pesar de que he usado las primeras, pero no las segundas, me da la impresión que estas últimas son de más bajo nivel, aunque no lo puedo asegurar al 100%.
Ah bueno, en ese caso con SDL le vale. La verdad es que no he trabajado ni con unas ni con otras, por lo que mejor no opino. :chupete:
Yo personalmente lo haría en Java, que es lo que más acostumbrado estoy... :cool:
NoobLuck
22/11/2005, 08:32
Yo habia dejado un programa de ejemplo en estos foros con lo básico de carga de imágenes con SDL, con SDL_image y va bastante bien, con los controles de errores, bastaria con cnmbiar cuatro cosas. Como el código al principio es básico y no tiene misterio lo puedes gastar.
En la página de la SDL puedes mirar la introducción, que mola bastante.
http://www.libsdl.org/intro.es/toc.html
Yo me apunto al carro del programa, por que tb estoy empezando, asi que si lo hacen dos personas mejor que una.
VOTO POR SDL QUE VAN EN TODO, ADEMAS NO HACE FALTA UNA GUI MUY REBUSCADA Y YA TIENEN CONTROL DE EVENTOS DE RATON Y TODO PARA SIMULAR LAS COSAS. CUANTAS MENOS LIBRERIAS MEJOR, MENOS LIO.
Para empezar bien el programa de simulación de skins, vamos a hacerlo serio. Discutamos los requerimientos básicos y las funciones que va a realizar, y lo guardamos en un fichero de texto. Despues decidiremos el como.
---------------------------
Requerimientos
---------------------------
Imágenes a mostrar, que sean del tamanyo y resolucion que las de la GP.
Imágenes feas por defecto a mostrar si falta alguna de las nuestras, para que los links sigan funcionando y veamos la carencia.
Control de eventos de raton.
Control de algunos eventos por teclado para abrir cerrar o cargar los paquetes de imagenes del programa. (Interfaz que puede ser no gráfica al principio)
Animaciones? (Hay algo animado, barra de bateria de carga...)
Creo que ya, me dejo algo? Ponedlo. Tenemos que dejar bien claros los requisitos, lo que requiere el programa para ejecutarse.
-----------------------------
Una vez hechos bien los requisitos yo pasaria a los detalles implementación de las estructuras de memoria para cargar las imágenes, de cara a que sea usado por el simulador de interfaz. Un vector? una estructura? una lista enlazada? Seguro que hay codigo que ya hemos hecho. Es discutirlo y poner el codigo, elegir y por que.
Yo le pondria licencia GNU/GPL. Je, je, asi todos pueden disfrutarlo
Tb habria que hacer unas imagenes que pusiera no file found asi cutres para cargarlas por defecto si falta alguna.
HACEDME CASO Y PONGAMOS LAS COSAS CLARAS, SI NO TRABAJAMOS ASI TODAS LAS COSAS SE QUEDARAN A MEDIAS, O SOLO LAS HARÁ UNO O NO SE HARÁN BIEN.
Yo me apunto al carro del programa, por que tb estoy empezando, asi que si lo hacen dos personas mejor que una.
Le iba a comentar a Efegea que si lo que quería era el programa y no tener que hacerlo igual me ofrecía, pero veo que ya no hace falta... :)
Para cargar todas las imágenes que hacemos?
¿Qué quieres decir? Si te refieres a cómo programarlo en SDL, yo de vosotros recurriría a la librería SDL_image (http://www.libsdl.org/projects/SDL_image/). La función "IMG_Load" es capaz de leer varios formatos (PNG entre ellos, que creo que es el de los skins) y devuelve un puntero a una superfície estándar SDL (SDL_Surface). A partir de ahí, se pinta mediante "SDL_BlitSurface" y se acabó.
Imágenes feas por defecto a mostrar si falta alguna de las nuestras, para que los links sigan funcionando y veamos la carencia.
O quizás mejor una imagen en blanco con un texto que diga algo como "pendiente". Así os ahorráis hacer una por cada medida de imagen.
Una vez hechos bien los requisitos yo pasaria a los detalles implementación de las estructuras de memoria para cargar las imágenes, de cara a que sea usado por el simulador de interfaz. Un vector? una estructura? una lista enlazada?
Yo como mucho tiraría de un vector, pero así de entrada no veo necesario usar una lista enlazada.
HACEDME CASO Y PONGAMOS LAS COSAS CLARAS, SI NO TRABAJAMOS ASI TODAS LAS COSAS SE QUEDARAN A MEDIAS, O SOLO LAS HARÁ UNO O NO SE HARÁN BIEN
Bueno, falta que Efegea quiera compartir proyecto contigo. :) Igual quiere aprender por su cuenta... O igual no...
NoobLuck
22/11/2005, 08:53
¿Qué quieres decir? Si te refieres a cómo programarlo en SDL, yo de vosotros recurriría a la librería SDL_image (http://www.libsdl.org/projects/SDL_image/). La función "IMG_Load" es capaz de leer varios formatos (PNG entre ellos, que creo que es el de los skins) y devuelve un puntero a una superfície estándar SDL (SDL_Surface). A partir de ahí, se pinta mediante "SDL_BlitSurface" y se acabó.
Yo como mucho tiraría de un vector, pero así de entrada no veo necesario usar una lista enlazada.
Bueno, falta que Efegea quiera compartir proyecto contigo. :) Igual quiere aprender por su cuenta... O igual no...
El codigo de "programa básico con SDL usa la SDL_image y ya tiene el make file y todo.
No es el momento de debatir vectores estamos con los requisitos :-). No pero igual un vector para iconos otro para fondos ...
Pues si no quiere que no sea ****** y que libere el código, asi será sujeto a criticas constructivas.
VOTO POR SDL QUE VAN EN TODO, ADEMAS NO HACE FALTA UNA GUI MUY REBUSCADA Y YA TIENEN CONTROL DE EVENTOS DE RATON Y TODO PARA SIMULAR LAS COSAS. CUANTAS MENOS LIBRERIAS MEJOR, MENOS LIO.
Si quereis usar las SDL porque las quereis aprender, me parece genial. Pero no me vengas con que son la solución a todos los problemas y lo más facil de usar porque no es verdad.
Para una aplicación como el previsualizador de skins se puede utilizar unas librerías de más alto nivel y no tienes que estar liándote con surfaces, modos de video y rollos de esos...
NoobLuck
22/11/2005, 18:06
Es para aprender, y el modo de video seria uno, el de la gp2x.
Por mi no hay problema en usar otras librerias.
No se puede usar gtk y sdl, o sdl y qt?
jaaja esto podria ser un flame que no veas... :canon2:
yo que se, por mi haria algo en sdl y luego le pondria los menus y eso con las otras, pero igual no se puede...
buenas..
Primero de nada muchisimas gracias a todos, gracias a vuestros comentarios he podido comenzar el proyecto y lo llevo bastante avanzado. miq01 tu comentario me ha sido de muchísima ayuda
Es un visualizador de skins para PC. Nada de editar, nada de menús. Lo único que le voy a añadir es una opción para empaquetar la skin en un zip y poder distribuirla, para luego meterla en la SD y cargarla un un "skin manager" que voy a hacer para nuestra gepesita quisdos wei :D
Los que querian colaborar conmigo, lo agradezo mucho pero estoy intentando aprender por mi cuenta.
La verdad es que lo más difícil ya esta hecho. Ahora mismo el programa carga, muestra la pantalla principal de la GP2X, permite cambiar entre iconos pulsando izquierda o derecha y entra en el menu seleccionado pulsando intro. Lo único que no tiene son los selectores de archivos y el reproductor de musica. PEro ahora estoy en ello :D
Una cosa curiosa que he encontrado, es que las skins, al menos en la que viene por defecto ¡no tiene imagenes para el visor de fotos! Supongo que usara una imagen "neutral" que hay en la carpeta common
EDIT: he cambiado la captura por una mas chingona wei [wei4]
NoobLuck
22/11/2005, 19:14
Pues yo uso el emacs...
Si dentro del case metes otro case para case "SDLK_UP:" case "SDLK_DOWN:" te sale más ordenado.
Pues yo uso el emacs...
A la batalla VIM vs EMACS se le une un nuevo contendiente: KATE
:D :D :D :D
NoobLuck
22/11/2005, 19:18
Ya te digo, si quieres que ayude en algo... libera el código... :brindis:
Hay una función que se llama SDL_noseque_caption que pone título a la ventana y al icono.
Primero de nada muchisimas gracias a todos, gracias a vuestros comentarios he podido comenzar el proyecto y lo llevo bastante avanzado. miq01 tu comentario me ha sido de muchísima ayuda
Me alegro... :brindis:
A la batalla VIM vs EMACS se le une un nuevo contendiente: KATE
:D :D :D :D
Ni idea de VIM, pero sí que he trabajado con Emacs y Kate. Y aunque probablemente Emacs haga maravillas, lo de que use combinaciones de teclado no estándar no me convence. Ya se que hay una versión para X y que tiene menú, pero para hacer una aplicación relativamente sencilla me quedo a saco con Kate. De hecho, el código de mi juego (¡¡¡que ganas tengo de pasarlo a GP2X!!!) lo he hecho desde Code::Blocks en Windows y luego lo intenté compilar en Linux. Primero usé KDevelop, pero a pesar de que lo conseguí, me superó. Acabé pasándome a Kate, y escribiendo un Makefile sencillito.
Hay una función que se llama SDL_noseque_caption que pone título a la ventana y al icono.
void SDL_WM_SetCaption(const char *title, const char *icon);
NoobLuck
22/11/2005, 20:41
Yo lo uso por el tema de que te ordena todas las lineas automáticamente, y si las teclas no estandar son un rollazo.
jojojo de **** madre
acabo de instalar el mingw32 y trasteando he conseguido sacar un .exe para windows..¡sin tocar el codigo! ¡compilado DESDE linux! viva las SDL y su portabilidad!
Ahora podre sacar a la vez version pa linux y pa windows.
Toy feliz [wei4][wei4][wei4]
NoobLuck
24/11/2005, 07:00
Estas librerias son una GUI de alto nivel que esta basada en la SDL.
http://www.bms-austria.com/projects/paragui/
O sea que son portables. Además tienen la misma licencia que la SDL.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.