| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
serpastor
Registrado: 05 Oct 2012 Mensajes: 1
| Publicado: 05/10/2012 9:44 am | | | Título: Hacer un programa de consola que mueva una letra |
| Tengo varios problemas, y quiero enumerarlos pero también ir por partes  Problema principal: Quiero aprender acerca del manejo de gráficos en c/c++ para desarrollar, más que todo juegos. Quiero hacer un juego de culebrita. Primero en la consola y luego en interfaz usando GTK. Pero, como dije, hay que ir por partes, y en este momento no sé nada ni de GTK ni de OpenGL, ni de nada. Sé a duras penas imprimir en la consola, y con eso debo lidiar justo ahora.
Tengo un problema por ahora: Cómo hago para que el C escriba donde yo le digo y que escriba lo que quiero. Logré hacer una especie de Timer con usleep() de unistd.h, pero siempre que le digo que me escriba no escribe nada. Se queda pegado esperando a que acabe el programa. Entonces, yo espero que escriba 1, 2, 3, 4, 5, ... , 20 al principio de la linea no escribe nada, y se queda pegado....
Quisiera que me ayudaran con eso, y si pueden con un tuto donde vea cómo desarrollar un juego pequeño en c/c++ para coger cancha y mandármele al juego de culebrita 
Adjunto el código. Gracias por su atención
| Código: | #include <stdio.h> #include <time.h> #include <string.h> #include <stdlib.h> #include <unistd.h>
int main() { int cuenta=0; for(int i=0;i<20;i++) {
printf("%d\r",cuenta); cuenta++; usleep(100000); } }
|
Nota: Estoy usando Debian GNU/Linux con el compilador GCC Nota2: Gracias por mover el tema a donde correspondía  |
| | Volver arriba | |  | Sorancio

Registrado: 29 May 2009 Mensajes: 1157 Ubicación: España
| Publicado: 05/10/2012 10:55 am | | | Título: |
| Deberías echar un vistazo a ncurses. Es una librería de Linux para hacer "aplicaciones con interfaz rica" en consola. De alguna forma interesante, tiene soporte para coloreado, botones cutres y demás parafernalia.
http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/helloworld.html
Mucha suerte. Cualquier duda para eso estamos. _________________ Mi página web (en inglés): |
| | Volver arriba | |  | digies

Registrado: 18 Nov 2005 Mensajes: 998 Ubicación: Blumenau (Br)
| Publicado: 26/12/2012 6:21 pm | | | Título: |
| Hola. Contesto esta pregunta porque recién la veo.
serpastor, antes de pasarte de lleno a la programación gráfica en C con GTK+, primero aprende bien el C Estándar y el uso de funciones implementadas en los headers que te brinda -en tu caso- GNU/Linux.
En el caso del código que expones, no necesitas usar la cabecera time.h porque ya tienes unistd de *NIX, tampoco string.h porque no usas sus funciones.
La función printf() no escribe directamente en la pantalla (salida estándar) sino en una memoria intermedia llamada buffer. El contenido (cadena) de printf() envía a la pantalla cuando recién el buffer se llena o cuando encuentra el carécter de nueva línea '\n'. En tu caso debes usar la función fflush(stdout) para que éste envíe a la salida estándar todo lo que hay en el buffer.
| Código: | #include <unistd.h> #include <stdio.h> #include <stdlib.h>
int main(void) { int cuenta = 0; int i;
for (i = 0; i < 20; i++) { printf("%d\r", cuenta++); fflush(stdout); usleep(100000); }
return EXIT_SUCCESS; } |
Supongo que lo que tu quieres es hacer algo como una barra de progreso, entonces como dijo Sorancio, utiliza la biblioteca NCurses. Ejemplo:
| Código: | #include <ncurses.h> #include <stdlib.h>
void printporc(int n);
int main(void) { int i;
initscr();
curs_set(0);
addstr("BARRA DE PROGRESO:\n\n"); for (i = 0; i < 101; i++) { printporc(i); napms(200); } addstr("\n\nCOMPLETO.\nPulse una tecla para finalizar: "); refresh(); curs_set(1); getch();
endwin();
return EXIT_SUCCESS; }
void printporc(int n) { int av;
addstr("\r"); for (av = 0; av < 34; av++) { addch(ACS_CKBOARD); if (av == 16 && n != 100) printw("%02d%%", n); } addstr("\r"); for (av = 0; av < n/3; av++) { addch(ACS_BLOCK); if (av == 16) printw("%02d%%", n); } refresh();
return; } |
Un saludo _________________ With enough eyes, all bugs are easy to find.
Eric S. Raymond |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |