| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
darkcrow
Registrado: 21 Jun 2011 Mensajes: 2
| Publicado: 21/06/2011 6:59 pm | | | Título: como manejar las funciones de conio.h |
| hola amigos,
ante todo les agradezco de antemano la ayuda que me puedan brindar con este proyecto que me ha sacado mas canas verdes de lo que piensan,
debo generar una pantalla que vaya mostrando caritas felices ":)"de colores en toda la pantalla a excepcion del medio de la pantalla donde debe aparecer un corazon "<3", estas caritas deben aparecer una por una, linea por linea de forma que se vea el efecto de relleno poco a poco, y para terminar se debe salir con la tecla escape.
buscando por internet esto es lo mas cerca que he estado,
#include <conio.h>
int main(void) { int i, j;
clrscr(); for (i=0; i<24; i++) { for (j=0; j<80; j++) cprintf("aqui debe ir el caracter de la carita feliz"); cprintf("\r\n"); textcolor(i+1); textbackground(i); }
return 0; }
pero como tambien he visto en varios sitios, tengo problemas con la libreria conio.h, y el problema es que solo debo usar esa libreria para este proyecto, ya se imaginaran mi frustracion.
si me pudieran ayudar estaria realmente agradecido. |
| | Volver arriba | |  | untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 22/06/2011 3:15 am | | | Título: |
| Hola,
2 preguntas:
1. ¿Para qué sistema debe de ser tu programa?
2. ¿Ha de utilizarse obligatoriamente conio.h, o es opcional? |
| | Volver arriba | |  | untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 22/06/2011 5:31 am | | | Título: |
| Hola, Si por casualidad, lo estás haciendo con Turbo C++, prueba el siguiente código:
| Código: | #include <conio.h> #include <stdlib.h> #include <time.h> #include <dos.h>
int main() { int fila, columna; _wscroll = 0; srand((int) time(0)); for(fila = 1; fila <= 25; fila++) { for(columna = 1; columna <= 80; columna++) { textbackground(rand() % 16); textcolor(rand() % 16); gotoxy(columna, fila); putch(2); delay(10); } } gotoxy(40, 13); putch(3); getch(); return 0; }
|
Tal vez me haya equivocado al copiarlo desde el emulador, por lo que pido que seas comprensivo con los errores mecanográficos.
Espero que te sea útil.
REEDITO:
La documentación acerca de conio.h, puedes consultarla, por ejemplo, en: http://poli.cs.vsb.cz/c/help/conio.htm _________________ Hago algo muy raro: primero leo las instrucciones. |
| | Volver arriba | |  | | darkcrow
Registrado: 21 Jun 2011 Mensajes: 2
| Publicado: 22/06/2011 7:27 am | | | Título: |
| | untio escribió: | Hola,
2 preguntas:
1. ¿Para qué sistema debe de ser tu programa?
2. ¿Ha de utilizarse obligatoriamente conio.h, o es opcional? |
Hola Untio, desgraciadamente si es obligatorio el uso de esta libreria, aunque no entiendo para que si he visto varios ejemplos de como hacerlo sin ella, pero donde manda capitan no manda marinero.
intente correr el codigo que me facilitaste pero aparece el ya conocido mensajito "call to undefined function "textbackground" in main function, tambien con la funcion "delay" y "textcolor"
respondiendo a tu otra pregunta, debe ser para windows xp, aunque yo tengo win 7 (no se si eso tenga algo que ver) ademas uso dos compiladores, el turbo C++ y el DEV C++, cual seguira siendo el problema???
gracias de nuevo por la orientacion que me puedan dar... |
| | Volver arriba | |  | untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 22/06/2011 10:07 am | | | Título: |
| Hola otra vez,
En fin, ahora te escribo una versión compatible con windows. A ver que te parece. Compila en WxDevC++ incluyendo la librería conio.h, que por cierto es bastante limitada:
| Código: | #include <windows.h> #include <stdio.h> #include <conio.h> #include <time.h>
void mierror(INT linea);
#define EJECUTARRET(ORDEN, ARETORNAR, RETERROR) (ARETORNAR) = (ORDEN); if((ARETORNAR) == (RETERROR)) mierror(__LINE__); #define EJECUTAR(ORDEN, VALERROR) if((ORDEN) == (VALERROR)) mierror(__LINE__);
int main() { HANDLE hconsola; CONSOLE_SCREEN_BUFFER_INFO csbi; INT filas, columnas, cx, cy, al, al2; COORD co; srand(time(NULL)); EJECUTARRET(GetStdHandle(STD_OUTPUT_HANDLE), hconsola, INVALID_HANDLE_VALUE); EJECUTAR(SetConsoleMode(hconsola, 0), 0); EJECUTAR(GetConsoleScreenBufferInfo(hconsola, &csbi), 0); columnas = csbi.srWindow.Right - csbi.srWindow.Left; filas = csbi.srWindow.Bottom - csbi.srWindow.Top;
for(cy = 0; cy <= filas; cy++) { for(cx = 0; cx <= columnas; cx++) { co.X = cx; co.Y = cy; EJECUTAR(SetConsoleCursorPosition(hconsola, co), 0); al2 = al = rand() % 8; while(al2 == al) al2 = rand() % 8; EJECUTAR(SetConsoleTextAttribute(hconsola, al | (al2 << 3)), 0); putch(2); Sleep(10); } } co.X = columnas / 2; co.Y = filas / 2; EJECUTAR(SetConsoleCursorPosition(hconsola, co), 0); al2 = al = rand() % 8; while(al2 == al) al2 = rand() % 8; EJECUTAR(SetConsoleTextAttribute(hconsola, al | (al2 << 3)), 0); putch(3); getch(); return 0; } //////////////////////////////////////////////////////// void mierror(INT linea) { CHAR cadena[500]; sprintf(cadena, "Ha ocurrido un error en la linea: %d", linea); MessageBox(NULL, cadena, "Error:", MB_ICONERROR | MB_OK); ExitProcess(1); }
|
Seguramente tendrá mil errores, pero puede servir como un principio.
Espero que sea útil. _________________ Hago algo muy raro: primero leo las instrucciones. |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7520 Ubicación: Mexico
| Publicado: 23/06/2011 5:36 pm | | | Título: |
| | darkcrow escribió: | | respondiendo a tu otra pregunta, debe ser para windows xp, aunque yo tengo win 7 (no se si eso tenga algo que ver) ademas uso dos compiladores, el turbo C++ y el DEV C++, cual seguira siendo el problema??? |
El primer programa de untio compila y ejecuta correctamente en Turbo-C++ 3.0 mientras que el segundo lo hace del mismo modo en Dev-C++.
Lo ideal seria evitar esa biblioteca, si no hay remedio se puede instalar en Dev-C++ siguiendo algunas de las guías que se encuentran en la red como:
Instalación de conio con Dev-C++ Emulación de conio de Borland® para Dev-C++
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | 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
|
|
| |