Chat

vb:

#include <iostream.h>
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>

/*Definimos el puerto serie COM1*/
#define PUERTO 0x3F8

/*Declaramos la funcion margen para dibujar la pantalla*/
void margen();

/*La funcion inicializar se encarga de enviar todos los parametros necesarios para inicializar el puerto*/
void inicializar();

/*Inicio del programa*/
void main(void)
{

        unsigned char TECLA, CH;
        int i=3,j=3,m=3,f=14;
        clrscr();
        margen();//llamamos a la funcion margen para que dibuje la pantalla
        gotoxy(3,3);

        inicializar();//llamamos a la funcion inicializar para que prepare al puerto

        while (TECLA!=27)//Mientras no presionemos escape...
        {
                if (inportb(PUERTO+5)&#038;1)//
                {
                        CH=inportb(PUERTO);//guardo en CH el valor que esta en el puerto
                        //limpiamos el puerto
                        if (CH==13)//preguntamos si el caracter recibido es enter
                        {
                                i=3;
                                f++;//controla la posicion del cursor

                                if (f==23)
                                {
                                        window(3,14,77,22);
                                        delline();
                                        f=22;
                                        window(1,1,80,25);
                                        gotoxy(i,f);
                                }
                        }
                        if (CH!=NULL)//preguntamos si el caracter no es nulo
                        {
                                if(CH=='\r')//para que el cursor se mantenga siempre al final
                                CH='\n';
                                gotoxy(i,f);printf("%c",CH);//imprimimos el caracter
                                i++;
                                if (i==78)
                                {
                                        i=3;
                                        f++;
                                        if (f==23)
                                        {
                                                window(3,14,77,22);
                                                delline();
                                                f=22;
                                                window(1,1,80,25);
                                                gotoxy(i,f);
                                        }
                                }

                        }

                }
                if (kbhit())//preguntamos si se presiono alguna tecla
                {
                        gotoxy(j,m); //mandamos el cursor al final de cada caracter
                        j++;//con j escribimos la palabra
                        if (j==78)
                        {
                                j=3;
                                m++;
                                if (m==13)
                                {
                                        window(3,3,77,12);
                                        delline();
                                        m=12;
                                        window(1,1,80,25);
                                        gotoxy(j,m);
                                }
                        }
                        TECLA=getche();//guardamos la tecla presionada
                        if (TECLA==13)//preguntamos si la tecla presionada es un enter
                        {
                                gotoxy(3,m+1);printf("");//al apretar enter probocamos un salto de linea
                                j=3;
                                m++;
                                if (m==13)
                                {
                                        window(3,3,77,12);
                                        delline();
                                        m=12;
                                        window(1,1,80,25);
                                        gotoxy(j,m);
                                }
                        }
                        if (TECLA!=27)//preguntamos si es distinto de escape
                        {
                                while(!inportb(PUERTO+5)&#038;1);
                                outportb(PUERTO,TECLA);//enviamos el caracter al puerto
                        }
                }
        }
}


void margen ()
{
  int i;

  for (i = 1; i < 80; i++) //Dibujamos los margenes
  {
    gotoxy (i, 1); printf ("Û");
    gotoxy (i,24); printf ("Û");
  }

  for (i = 1; i < 80; i++)
  {
    gotoxy (i, 2); printf ("Ã?");
    gotoxy (i,23); printf ("Ã?");
  }

  for (i = 1; i < 80; i++)
  {
    gotoxy (i,13); printf ("Ã?");
  }

  for (i = 2; i < 24; i++)
  {
    gotoxy (1 ,i); printf ("Û");
    gotoxy (79,i); printf ("Û");
  }

  for (i = 2; i < 24; i++)
  {
    gotoxy (2 ,i); printf ("º");
    gotoxy (78,i); printf ("º");
  }
  gotoxy (2 , 2); printf ("É");
  gotoxy (2 ,23); printf ("È");
  gotoxy (78, 2); printf ("»");
  gotoxy (78,23); printf ("¼");
  gotoxy(3,2);printf("Escribiste:");
  gotoxy(3,13);printf("Recibiste:");
  gotoxy(64,24);printf("ESC -> Salir.");

}

void inicializar()
{
        outportb(PUERTO+1,0);//
        outportb(PUERTO+3,0x80);//
        outportb(PUERTO+0,0x0C);//
        outportb(PUERTO+1,0x00);//
        outportb(PUERTO+3,0x03);//
        outportb(PUERTO+2,0XC7);
        outportb(PUERTO+4,0X0B);

}
 
¿Ya le viste algún error? Dejanos tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress elimina los tags HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios.

Otro punto antes de comentar, Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:

De esta manera el código sale coloreado.

Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el último párrafo.

Para poner los símbolos de las librerías sin que desaparezcan, debes escribir los símbolos de mayor > y menor qué < con su entidad HTML correspondiente, así como el símbolo de &

Mis Algoritmos se reserva el derecho de alterar, publicar o no los comentarios así como cambiar estas reglas de uso.

Si estas de acuerdo, adelante puedes comentar :)

P.D. No le hago tareas a nadie, mejor hagan la mía :P