Título: Para que dejeis de preguntar de una vez por los menus Publicado por: do-while en 3 Diciembre 2009, 19:58 pm MODIFICADO
Añadido: ---------- - portabilidad - texto centrado Ya se que todo el codigo que viene a continuacion es una morcilla de las de Burgos, pero si mirais el ejemplo que hay al final, vereis como se simplifica todo a la hora de utilizar los menus. Menu.h Código
menu.c Código
ejemplo: (tener en cuenta que menu.h y menu.c tienen que estar en el mismo directorio donde este el fichero con la funcion principal) Código
En lo que es el menu, me gustaria completar alguna opcion mas, pero el codigo ya es funcional. Si el codigo no funciona, avisad, ya que es una adaptacion del codigo que realmente tengo guardado. Lo he puesto asi para evitar incluir mas headers y mas codigo. El codigo de ejemplo lo he imprivosado sobre la marcha. Si hubiese algun error revisad el codigo, que no creo que haya darle muchas vueltas. Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: Littlehorse en 4 Diciembre 2009, 22:03 pm Esta bastante bien el codigo, como consejo te diria que en vez de pensar en sumarle opciones le mejores la portabilidad. No tiene sentido que sea exclusivo de Windows solamente por system y fflush ;D.
Un saludo! Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: ^Winder^ en 4 Diciembre 2009, 23:22 pm Ahora solo falta ponerle una chincheta al tema ;D
Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: do-while en 5 Diciembre 2009, 02:29 am Jajajaja!
Lo de la portabilidad ya lo estaba pensando, al codigo ya tiene algunos mesecillos y ultimamente he estado pensando en la portabilidad. Lo de system("PAUSE"), tiene facil solucion, para lo del fflush(stdin) ya tengo una alternativa y una solucion, pero lo de limpiar la pantalla... me parece que no hay ningun equivalente estandar para limpiarla, ¿no? Le hecho un vistazo y a ver que sale. ¡Hasta luego! Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: Eternal Idol en 5 Diciembre 2009, 02:32 am Ahora solo falta ponerle una chincheta al tema ;D Para eso estan los privados ;) do-while: con compilacion condicional (http://msdn.microsoft.com/en-us/library/ew2hz0yd%28VS.80%29.aspx) podes hacerlo. Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: do-while en 5 Diciembre 2009, 03:07 am bueno, ya estan los cambios, he incluido un header y un fichero fuente mas, porque ahi esta la funcion que evita el fflush(stdin) antes de la lectura de un dato entero. (a parte creo que tambien hay funciones que pueden resultar utiles...) Tambien he eliminado las llamadas a system, ahora no queda tan bonito, pero esportable.
EI, si quieres completar el codigo con la compilacion condicional... yo desconozco las ordenes equivalentes en otros systemas operativos, asi que sirectamente evito utilizarlas, y tampoco he utilizado la compilacion condicional mas que para comprobar errores con printf's para ver los valores de las variables. :silbar: Asi contribuimos a mejorar el codigo un poco entre todos. ¡Hasta luego! He eliminado los dos ficheros añadidos. (por una sola funcion era meter demasiado codigo que no venia a cuento) Ultima modificacion: Código
¿Es correcto? Para los mac's y otros sistemas operativos no conozco analogos, pero sigo buscando. Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: Littlehorse en 5 Diciembre 2009, 06:05 am Si, asi es correcto. Podes usar un else para luego poner el codigo para MAC.
clear podria funcionar pero de seguro trae problemas por el tema de la consola. Yo dejaria el codigo asi para mantenerlo limpio. Eso si, las llamadas a system no me gustan para nada, pero si lo queres estandar solo puedes codificar tus propias funciones, y de seguro agregas codigo que tal vez sea innecesario. Evitar la compilacion condicional de seguro es complicado si queres una funcion estandar para limpiar la pantalla. Me refiero a algo asi con el tema de la pausa: Código
Esto lo digo como detalle, como ya dije, para tareas como esa llamar a system no es un problema importante. Un saludo! Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: do-while en 5 Diciembre 2009, 08:18 am Ok. Pues, de momento asi lo dejo. Ahora me queda algun detalle sobre la presentacion (alineacion delos textos) y pulir los flags, que los puse a ultima hora.
Hasta luego! Bueno, creo que mas o menos ya esta. Si hay alguna idea, bienvenida sea. Hasta luego! EI: juntando mensajes. ¡Hola a todos! Despues de la ultima modificacion, la funcion mostrarMenu, producia un error en tiempo de ejecucion, devido a un error que cometi. Ya esta corregido, y el codigo es funcional. ¡Hasta luego! Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: D4RIO en 2 Enero 2010, 04:48 am Hola, de vuelta al foro (por ahora que estoy de vacaciones aunque sea) y un intento de cooperación un mes después del ultimo comentario, espero que valga, a ver:
Respecto a la función de limpiar la pantalla: En un entorno Windows: Citar To accomplish this task for a Win32 console application, use one of the following methods: - Use a system function. - Write a function that will programmatically clear the screen. La primera seria un system("cls"), que es lo que usa ahora, y la segunda opción: Código
Fuente: http://support.microsoft.com/kb/99261 (http://support.microsoft.com/kb/99261) ... también vi por ahi implementaciónes en inline ASM con llamadas de DOS, pero no las encuentro ahora. Ahora bien, falta la implementación UNIX, que resulta ser un poco más... amena ;D: Código Fuentes: http://www.programmersheaven.com/mb/beginnercpp/137205/137377/re-clear--screen/ (http://www.programmersheaven.com/mb/beginnercpp/137205/137377/re-clear--screen/) http://homepages.cwi.nl/~tromp/tetris.html (http://homepages.cwi.nl/~tromp/tetris.html) http://196.1.111.155/download_util/download/MODIFY07.txt?id=uniqueid (http://196.1.111.155/download_util/download/MODIFY07.txt?id=uniqueid) http://okmij.org/ftp/packages/tournament-sched.c (http://okmij.org/ftp/packages/tournament-sched.c) http://www.geekinterview.com/question_details/16718 (http://www.geekinterview.com/question_details/16718) ... Y demás fuentes gratuitos que obtuve por ahi, en fin, el hecho es que funciona Ok, y debería funcionar Ok en cualquier terminal UNIX que use secuencias de Escape (desde LINUX, por los BSDes, AIX... bla bla bla) Ahora bien, otro tema es que esta parte del code... Código
...resulta bastante "sucia" por así llamarle (y con todo respeto), ya que existen macros dadas para cada sistema (ver fuente http://msdn.microsoft.com/en-us/library/b0084kay.aspx (http://msdn.microsoft.com/en-us/library/b0084kay.aspx)), con lo que puedes usar _WIN32 y _WIN64 para definir un Windows, y cualquier otro sistema usara la secuencia de escape (si sale un Bug por ahi se solucionará, pero esa secuencia debe funcionar hasta en un BeOS) Espero haber aportado suficiente Un saludo Gente, Feliz 2010 @EI, rato que no me pasaba por aqui, un saludo! Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: .;. en 22 Enero 2010, 13:04 pm Ahora ya si que anda perfecto .
Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: AxXioma en 7 Noviembre 2010, 21:47 pm Bastante bueno el código. ;)
Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: Exheon en 14 Diciembre 2010, 02:09 am ;-) a favoritos al toke!!! ;-)
Título: Re: Para que dejeis de preguntar de una vez por los menus Publicado por: marcewar en 24 Octubre 2011, 14:40 pm Excelente la exposición del código, pero yo optaría (y esto es algo meramente personal y a modo de contribución) por utilizar librerías multiplataforma, tales como wxWidgets o Gtkmm. En código es menos extenso y algo más fácil de programar, que en la api misma, a la hora de diseñar GUI's.
Saludos Marcelo W - EI: SPAM DESTRUIDO. |