clock program in c using graphics

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#include<dos.h>
#include<time.h>
void sline(int,int,int,int,int,int,float,int,int);
void hline(int,int,int,int,int,int,float,int,int);
void mline(int,int,int,int,int,int,float,int,int);
void grid(int,int,int,int);
void main()
{
 int gd=DETECT,gm,maxx,maxy,midx,midy;
 int sincolor=4,soutcolor=0,hincolor=1,houtcolor=0,mincolor=13,moutcolor=0;
 int bakcolor=14;
 int gcolor=0,grad=3;

 float thita,X,Y,h,s,m;
 initgraph(&gd,&gm,"c:\\tc\\bgi");

 maxx=getmaxx();
 maxy=getmaxy();
 midx=maxx/2;
 midy=maxy/2;
 float phi=3.1423,degree,dh,dm;
 int rad=125;
 int HX,HY,MX,MY,SX,SY,ML=rad-25,SL=rad-20,HL=rad-55;
 char str[10];
 cleardevice();
  setfillstyle(1,bakcolor);
 circle(midx,midy,rad-10);
 floodfill(midx,midy,15);
  setfillstyle(1,1);
 circle(midx,midy,rad+10);
 floodfill(midx+rad+5,midy,15);
 for(thita=270+45;thita<=360+135;thita=thita+(180/60))
 {
   degree=((2*phi)/180)*thita;
   X=midx+rad*(cos(degree));
   Y=midy+rad*(sin(degree));
   itoa(degree,str,10);
   setfillstyle(1,4);
   circle(X,Y,1);
   floodfill(X,Y,15);
 }
  for(thita=270+45;thita<=360+135;thita=thita+(180/12))
  {
   degree=((2*phi)/180)*thita;
   X=midx+rad*(cos(degree));
   Y=midy+rad*(sin(degree));
   setfillstyle(1,4);
   circle(X,Y,3);
   floodfill(X,Y,15);
  }
  struct time t;
  gettime(&t);
   s=270+45+t.ti_sec*(180/60);
   h=270+45+t.ti_hour*(180/12)+((t.ti_min*(180/60)))/12;
   m=270+45+t.ti_min*(180/60)+((t.ti_sec*(180/60))/60);
   degree=((2*phi)/180)*s;
   dh=((2*phi)/180)*h;
   dm=((2*phi)/180)*m;
   SX=midx+SL*(cos(degree));
   SY=midy+SL*(sin(degree));
   HX=midx+HL*(cos(dh));
   HY=midy+HL*(sin(dh));
   MX=midx+ML*(cos(dm));
   MY=midy+ML*(sin(dm));
  while(!kbhit())
  {
   grid(midx,midy,grad,gcolor);
   sline(midx,midy,SX,SY,bakcolor,bakcolor,degree,rad,SL);
   circle(SX,SY,2);
   hline(midx,midy,HX,HY,bakcolor,bakcolor,dh,rad,HL);
   mline(midx,midy,MX,MY,bakcolor,bakcolor,dm,rad,ML);
   gettime(&t);
   if(t.ti_sec==0)
   {
    gotoxy(44,4);
    printf("0 ");
   }
   gotoxy(35,4);
   printf("%d : %d : %d",t.ti_hour,t.ti_min,t.ti_sec);
   s=270+45+t.ti_sec*(180/60);
   h=270+45+t.ti_hour*(180/12)+((t.ti_min*(180/60)))/12;
   m=270+45+t.ti_min*(180/60)+((t.ti_sec*(180/60))/60);
   degree=((2*phi)/180)*s;
   dh=((2*phi)/180)*h;
   dm=((2*phi)/180)*m;
   SX=midx+SL*(cos(degree));
   SY=midy+SL*(sin(degree));
   HX=midx+HL*(cos(dh));
   HY=midy+HL*(sin(dh));
   MX=midx+ML*(cos(dm));
   MY=midy+ML*(sin(dm));

   sline(midx,midy,SX,SY,sincolor,soutcolor,degree,rad,SL);
   circle(SX,SY,2);
   hline(midx,midy,HX,HY,hincolor,houtcolor,dh,rad,HL);
   mline(midx,midy,MX,MY,mincolor,moutcolor,dm,rad,ML);
   delay(1000);
  }
 getch();
}

void sline(int midx,int midy,int SX,int SY,int incolor,int outcolor,float degree,int rad,int SL)
{
 int lx,ly,rx,ry,mx,my;
 float phi=3.1423;
 float width=0.04;
 lx=midx+(SL-10)*(cos(degree+width));
 ly=midy+(SL-10)*(sin(degree+width));
 rx=midx+(SL-10)*(cos(degree-width));
 ry=midy+(SL-10)*(sin(degree-width));
 mx=midx+(rad/2)*(cos(degree));
 my=midy+(rad/2)*(sin(degree));
 setcolor(outcolor);
 line(midx,midy,lx,ly);
 line(midx,midy,rx,ry);
 line(lx,ly,SX,SY);
 line(rx,ry,SX,SY);
 setfillstyle(1,incolor);
 floodfill(mx,my,outcolor);
}
void mline(int midx,int midy,int SX,int SY,int incolor,int outcolor,float degree,int rad,int ML)
{
 int lx,ly,rx,ry,mx,my;
 float phi=3.1423;
 float width=0.07;
 lx=midx+(ML-20)*(cos(degree+width));
 ly=midy+(ML-20)*(sin(degree+width));
 rx=midx+(ML-20)*(cos(degree-width));
 ry=midy+(ML-20)*(sin(degree-width));
 mx=midx+(rad/2)*(cos(degree));
 my=midy+(rad/2)*(sin(degree));
 setcolor(outcolor);
 line(midx,midy,lx,ly);
 line(midx,midy,rx,ry);
 line(lx,ly,SX,SY);
 line(rx,ry,SX,SY);
 setfillstyle(1,incolor);
 floodfill(mx,my,outcolor);
 line(midx,midy,SX,SY);
}
void hline(int midx,int midy,int SX,int SY,int incolor,int outcolor,float degree,int rad,int HL)
{
 int lx,ly,rx,ry,mx,my;
 float phi=3.1423;
 float width=0.155;
 lx=midx+(HL-30)*(cos(degree+width));
 ly=midy+(HL-30)*(sin(degree+width));
 rx=midx+(HL-30)*(cos(degree-width));
 ry=midy+(HL-30)*(sin(degree-width));
 mx=midx+(rad/2)*(cos(degree));
 my=midy+(rad/2)*(sin(degree));
 setcolor(outcolor);
 line(midx,midy,lx,ly);
 line(midx,midy,rx,ry);
 line(lx,ly,SX,SY);
 line(rx,ry,SX,SY);
 setfillstyle(1,incolor);
 floodfill(mx,my,outcolor);
 line(midx,midy,SX,SY);
}
void grid(int midx,int midy,int grad,int gcolor)
{
 for(int i=1;i<=grad;i++)
 {
 setcolor(gcolor);
 circle(midx-1,midy+1,i);
 }
 //setfillstyle(1,gcolor);
 //floodfill(midx,midy,15);
}

No comments:

Post a Comment