/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

como manejar las funciones de conio.h

 
      Índice del Foro elrincondelc.com -> Gráficos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
darkcrow



Registrado: 21 Jun 2011
Mensajes: 2

MensajePublicado: 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.

MensajePublicado: 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.

MensajePublicado: 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

MensajePublicado: 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.

MensajePublicado: 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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Gráficos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com