Nostagia ponto COM

Hoje resolvi procurar uma forma de rodar os antigos programas gráficos que eu havia feito há mais de 10 anos usando o Turbo C da Borland. Felizmente descobri que existe uma lib que abstrai as funções gráficas em funções da SDL.

Se você também já brincou com o Turbo C e deseja rodar seus programas no Linux então siga as intruções:
http://zaher14.blogspot.com/2007/01/graphicsh-in-linux.html

Este é o exemplo de um relógio que eu fiz usando o Turbo C e agora rodando com a libgraphic no Linux:

relogio

//----------------------------------------------------------------------------
//Programa: Relogio.c
//Autor: Alan Carvalho de Assis
//Compilador:Borland C++ Versao 2.0 ou 3.0
//Descricao:Exibe um relogio com os ponteiros de horas,minutos e segundos
//Compile: gcc relogio.c -o relogio -lgraph -lm
//-----------------------------------------------------------------------------
#include <stdlib.h>
#include <graphics.h>
#include <time.h>
#include <math.h>

#define	PI  3.14159265358979323846 //constante pi

float seno(int ang) //Calcula o seno recebendo como argumento o angulo em vez de radiano
{
  return sin(ang*PI/180);
}

float coseno(int ang) //Calcula o coseno recebendo como argumento o angulo em vez de radiano
{
  return cos(ang*PI/180);
}
int hora,minu,segu,seguant;
//struct  time t;
void main()
{
      int gdriver = DETECT, gmode=VGAMAX;
      float ang=0,xsegu=0,ysegu=0,xseguant,yseguant,xminu,yminu,xminuant,
	    yminuant,xhora=0,yhora=0,xhoraant,yhoraant,raio=100;
      char tempo[9];
      initgraph(&gdriver, &gmode, 0);
      circle(320,240,110);
      for(segu=0;segu<60;segu++)
      {
	ang = segu * 6;
	xsegu = coseno(ang) * 110;
	ysegu = seno(ang) * 110;
	setcolor(15);
	line(320,240,320+xsegu,240+ysegu);
      }
      setcolor(0);
      //setfillstyle(1,0);
      fillellipse(320,240,105,105);
      setcolor(15);
      outtextxy(310,120,"12");
      outtextxy(317,355,"6");
      outtextxy(200,235,"9");
      outtextxy(434,235,"3");
      outtextxy(374,133,"1");
      outtextxy(419,175,"2");
      outtextxy(419,293,"4");
      outtextxy(378,340,"5");
      outtextxy(260,342,"7");
      outtextxy(215,298,"8");
      outtextxy(206,179,"10");
      outtextxy(250,134,"11");
      while(1)
      {
       //gettime(&t);

       time_t t = time(NULL);
       struct tm tm = *localtime(&t);

       hora = tm.tm_hour;
       minu = tm.tm_min;
       segu = tm.tm_sec;

       ang = segu * 6 - 90;
       xsegu = coseno(ang) * raio;
       ysegu = seno(ang) * raio;
       setcolor(15);
       line(320,240,320+xsegu,240+ysegu);
       sprintf(tempo, "%02d:%02d:%02d",hora,minu,segu);

       ang = minu * 6 - 90;
       xminu = coseno(ang) * (raio - 10);
       yminu = seno(ang) * (raio - 10);
       setcolor(9);
       line(320,240,320+xminu,240+yminu);

       ang = ( (hora * 30) + (6 * (minu/12)) ) - 90;
       xhora = coseno(ang) * (raio - 20);
       yhora = seno(ang) * (raio - 20);
       setcolor(2);
       line(320,240,320+xhora,240+yhora);
       if(seguant != segu){
	 setcolor(0);
	 line(320,240,320+xhoraant,240+yhoraant);
	 line(320,240,320+xseguant,240+yseguant);
	 line(320,240,320+xminuant,240+yminuant);
         setcolor(0);
         fillellipse(315,415,105,10);
	 setcolor(15);
	 outtextxy(290,410,tempo);
	}
       seguant = segu;
       xseguant = xsegu;
       yseguant = ysegu;
       xminuant = xminu;
       yminuant = yminu;
       xhoraant = xhora;
       yhoraant = yhora;
      }
      closegraph();
}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s