Título: Colores random en C Publicado por: Locura_23 en 1 Mayo 2021, 21:38 pm Hola a todos!
Tengo una duda con este programita de C, es muy simple y básico, se genera un número aleatorio del 1 al 10 y lee un valor por carga de usuario. Si el usuario acierta, me gustaría hacer que la consola cambie de colores random diciendo "ACERTASTE"... Pero no se me ocurre cómo, pues la función system("color") está hecha para mantener un color fijo... Alguna idea? Yo sé que "código compartido es código a ser bastardeado" pero recién empiezo en esto xDD acepto críticas constructivas Código
MOD: El código debe estar publicado entre etiquetas de Código GeSHi. Título: Re: Colores random en C Publicado por: Danielㅤ en 2 Mayo 2021, 00:29 am Hola, en realidad el compartir, utilizar, aprender o modificar códigos ajenos no es ningún problema, el problema viene cuando se quitan los créditos/copyright o que la persona que lo publica dice que es suyo cuando esa misma persona sabe que no lo es.
Hace poco aquí en el foro pasó eso mismo que un usuario pedía ayuda diciendo que era su código, lo que él supuestamente llevaba hecho cuando no fue así, era de otro usuario que lo comentó en el tema que éste usuario abrió y por lo tanto se terminó cerrando el tema porque el autor del tema no tuvo ética ni respeto al publicar un código ajeno idéntico al copiado diciendo que era suyo, pero más allá de eso no hay ningún problema con usar códigos ajenos, y si el código no está bien creado o se lo puede mejorar, entonces para eso estamos nosotros para ayudar con nuestros conocimientos y consejos. Saludos Título: Re: Colores random en C Publicado por: Locura_23 en 2 Mayo 2021, 02:15 am Hola, en realidad el compartir, utilizar, aprender o modificar códigos ajenos no es ningún problema, el problema viene cuando se quitan los créditos/copyright o que la persona que lo publica dice que es suyo cuando esa misma persona sabe que no lo es. Mmm pues este programita lo hice yo, pero vi que un mod escribió que tengo que poner etiquetas geshi? Te referís a eso?Hace poco aquí en el foro pasó eso mismo que un usuario pedía ayuda diciendo que era su código, lo que él supuestamente llevaba hecho cuando no fue así, era de otro usuario que lo comentó en el tema que éste usuario abrió y por lo tanto se terminó cerrando el tema porque el autor del tema no tuvo ética ni respeto al publicar un código ajeno idéntico al copiado diciendo que era suyo, pero más allá de eso no hay ningún problema con usar códigos ajenos, y si el código no está bien creado o se lo puede mejorar, entonces para eso estamos nosotros para ayudar con nuestros conocimientos y consejos. Saludos Título: Re: Colores random en C Publicado por: K-YreX en 2 Mayo 2021, 13:42 pm Mmm pues este programita lo hice yo, pero vi que un mod escribió que tengo que poner etiquetas geshi? Te referís a eso? No, creo que [D]aniel ha sobreentendido, al parecer de forma errónea, el comentario de "código compartido" como que este era un código compartido que has encontrado por ahí.Lo de las etiquetas de Código GeSHi simplemente es para facilitar la lectura de código al resto de usuarios. Si con la función system() puedes poner un color a la consola, lo que puedes hacer es llamar varias veces a la función system() con diferentes colores. Si esto se hace de forma seguida no te dará tiempo a ver más que el último color por lo que tendrás que usar la función sleep() entre medias para crear un retardo. La función sleep(int segundos) para sistemas Unix se encuentra en <unistd.h> mientras que para Windows la función es Sleep(int milisegundos) y se encuentra en <windows.h>. Una forma de que el código funcione en ambos sistemas sería: Código
El problema del código anterior es que ocupa el hilo principal del programa. Si quieres una solución más compleja que vaya cambiando el color de la consola mientras, por ejemplo, esperas que el usuario introduzca una tecla para continuar; podrías utilizar hilos para ejecutar el código del cambio de color y el retardo en un hilo secundario mientras tú sigues ejecutando el código principal en el hilo principal. Pero como digo esto ya sería una solución más avanzada. Título: Re: Colores random en C Publicado por: Danielㅤ en 2 Mayo 2021, 15:04 pm No compañero, no entendí erróneamente.
Hay una confusión aquí y la aclaro, a lo que yo me referí en mí mensaje anterior es a esto: Citar "código compartido es código a ser bastardeado" Más que nada por ese comentario, por eso dije que no es problema que sea compartido, por lo que no tiene porqué ser "bastardeado", como si fuera un código críticado por ser compartido y por eso comente las razones por las que un código si puede ser criticado, pero éste no es el caso, solo fue un comentario. Mmm pues este programita lo hice yo, pero vi que un mod escribió que tengo que poner etiquetas geshi? Te referís a eso? Me alegro que sea tu propio código. A lo que el compañero K-YreX se refirió con las etiquetas de código GheShi es que cuando insertes código de programación debés ponerlo entre las etiquetas: [code]Tu código aquí[/code] Para que tú código sea mejor legible, esté mejor ordenado, se pueda ver la cantidad de líneas que tiene y pueda ser fácilmente copiado. Con respecto a lo que querés hacer, si es posible y podes usar la función system(): A continuación la lista de colores que podemos utilizar: 0 = Negro 1= Azul 2= Verde 3= Aguamarina 4= Rojo 5= Púrpura 6= Amarillo 7= Blanco 8= Gris 9= Azul Claro A= Verde Claro B= Aguamarina Claro C= Rojo Claro D= Púrpura Claro E= Amarillo Claro F= Blanco Brillante Por Ejemplo si queremos que a la hora de ejecutar un código de programa con fondo de color azul y texto de color rojo, ingresamos: Código: system(“color 14”); Donde el 1 sería para el fondo de color azul y el 4 para el texto de color rojo. Esto es para C++ pero también funciona en C. Fuente https://tutorialesgeek.wordpress.com/2013/05/24/cambia-el-color-del-texto-y-fondo-en-dev-c/ Aquí te dejo un video cambiando color de texto y fondo de la consola: Vr-zztgsJa8 Saludos Título: Re: Colores random en C Publicado por: Locura_23 en 2 Mayo 2021, 18:39 pm No, creo que [D]aniel ha sobreentendido, al parecer de forma errónea, el comentario de "código compartido" como que este era un código compartido que has encontrado por ahí. Lo pude solucionar, gracias! Tendré en cuenta lo de las etiquetas. Saludos.Lo de las etiquetas de Código GeSHi simplemente es para facilitar la lectura de código al resto de usuarios. Si con la función system() puedes poner un color a la consola, lo que puedes hacer es llamar varias veces a la función system() con diferentes colores. Si esto se hace de forma seguida no te dará tiempo a ver más que el último color por lo que tendrás que usar la función sleep() entre medias para crear un retardo. La función sleep(int segundos) para sistemas Unix se encuentra en <unistd.h> mientras que para Windows la función es Sleep(int milisegundos) y se encuentra en <windows.h>. Una forma de que el código funcione en ambos sistemas sería: Código
El problema del código anterior es que ocupa el hilo principal del programa. Si quieres una solución más compleja que vaya cambiando el color de la consola mientras, por ejemplo, esperas que el usuario introduzca una tecla para continuar; podrías utilizar hilos para ejecutar el código del cambio de color y el retardo en un hilo secundario mientras tú sigues ejecutando el código principal en el hilo principal. Pero como digo esto ya sería una solución más avanzada. No compañero, no entendí erróneamente. jaja lo de código bastardeado es de hecho, una frase de un profesor que tengo. En la clase el que es voluntario de mostrar su código, tendrá que explicar por qué hizo tal cosa y no esta otra, y si el código tiene ciclos de procesador demás (osea que puede ser mejorado) entonces se modifica el código en pos de eso. Hay una confusión aquí y la aclaro, a lo que yo me referí en mí mensaje anterior es a esto: Más que nada por ese comentario, por eso dije que no es problema que sea compartido, por lo que no tiene porqué ser "bastardeado", como si fuera un código críticado por ser compartido y por eso comente las razones por las que un código si puede ser criticado, pero éste no es el caso, solo fue un comentario. Me alegro que sea tu propio código. A lo que el compañero K-YreX se refirió con las etiquetas de código GheShi es que cuando insertes código de programación debés ponerlo entre las etiquetas: [code]Tu código aquí[/code] Para que tú código sea mejor legible, esté mejor ordenado, se pueda ver la cantidad de líneas que tiene y pueda ser fácilmente copiado. Con respecto a lo que querés hacer, si es posible y podes usar la función system(): A continuación la lista de colores que podemos utilizar: 0 = Negro 1= Azul 2= Verde 3= Aguamarina 4= Rojo 5= Púrpura 6= Amarillo 7= Blanco 8= Gris 9= Azul Claro A= Verde Claro B= Aguamarina Claro C= Rojo Claro D= Púrpura Claro E= Amarillo Claro F= Blanco Brillante Por Ejemplo si queremos que a la hora de ejecutar un código de programa con fondo de color azul y texto de color rojo, ingresamos: Código: system(“color 14”); Donde el 1 sería para el fondo de color azul y el 4 para el texto de color rojo. Esto es para C++ pero también funciona en C. Fuente https://tutorialesgeek.wordpress.com/2013/05/24/cambia-el-color-del-texto-y-fondo-en-dev-c/ Aquí te dejo un video cambiando color de texto y fondo de la consola: Vr-zztgsJa8 Saludos Gracias por tu comentario! Saludos MOD: Evitar varias respuestas seguidas. Responder a todos los mensajes en el mismo. (Para agregar algo cuando nadie más ha respondido, se debe modificar el último mensaje y no crear uno nuevo) Título: Re: Colores random en C Publicado por: K-YreX en 2 Mayo 2021, 19:15 pm Aunque está el tema solucionado, ya que se ha mencionado... Agrego unos últimos consejos para el código mostrado:
Código Una función que genera un número aleatorio entre 1 y 10. Está bien, funciona bien pero... ¿no sería mejor poder decidir tú el límite cada vez que la llamas? Así la función será más reutilizable. Código
Esto mismo con la función CargaNum(). ¿Y si puedes pasar el mensaje que quieras en cada ocasión? Además puedes dejar el buffer de entrada limpio siempre (lo que te ahorrará muchos quebraderos de cabeza cuando empieces a usar fgets() para pedir cadenas de texto al usuario, espero que os enseñen esta función en vez de gets() :silbar: :silbar:) Código
Y con esto ya podemos dar el tema por cerrado para no desviarnos más del tema principal. :-X |