Chat

 
#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)&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)&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);
 
}
 

¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.

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

  • Si es lenguaje C [c]Código en C[/c]
  • Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].

De esta manera el código coloreas el código.

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 con lo siguiente:

Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.

¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)