當前位置:編程學習大全網 - 編程語言 - C語言編圖形時鐘

C語言編圖形時鐘

給妳2個選吧,都是原創:

第1個:

#include<graphics.h>

#include<math.h>

#include<dos.h>

#define pi 3.1415926

#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;

#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;

#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)

void init()

{int i,l,x1,x2,y1,y2;

setbkcolor(1);

circle(300,240,200);

circle(300,240,205);

circle(300,240,5);

for(i=0;i<60;i++)

{if(i%5==0) l=15;

else l=5;

x1=200*cos(i*6*pi/180)+300;

y1=200*sin(i*6*pi/180)+240;

x2=(200-l)*cos(i*6*pi/180)+300;

y2=(200-l)*sin(i*6*pi/180)+240;

line(x1,y1,x2,y2);

}

}

main()

{

int x,y;

int gd=VGA,gm=2;

unsigned char h,m,s;

struct time t[1];

initgraph(&gd,&gm,"d:\\tc");

init();

setwritemode(1);

gettime(t);

h=t[0].ti_hour;

m=t[0].ti_min;

s=t[0].ti_sec;

setcolor(7);

d(150,h,30);

setcolor(14);

d(170,m,6);

setcolor(4);

d(190,s,6);

while(!kbhit())

{while(t[0].ti_sec==s)

gettime(t);

sound(400);

delay(70);

sound(200);

delay(30);

nosound();

setcolor(4);

d(190,s,6);

s=t[0].ti_sec;

d(190,s,6);

if (t[0].ti_min!=m)

{

setcolor(14);

d(170,m,6);

m=t[0].ti_min;

d(170,m,6);

}

if (t[0].ti_hour!=h)

{ setcolor(7);

d(150,h,30);

h=t[0].ti_hour;

d(150,h,30);

sound(1000);

delay(240);

nosound();

delay(140);

sound(2000);

delay(240);

nosound();

}

}

getch();

closegraph();

}

第2個:

#include<graphics.h>

#include<math.h>

#include<dos.h>

#define PI 3.1415926

#define x0 320 /*定義鐘表中心坐標*/

#define y0 240

void DrawClock(int x,int y,int color) /*畫表盤*/

{ int r=150; /*表盤的半徑*/

float th;

setcolor(color);

circle(x,y,r);

circle(x,y,2);

}

void DrawHand(int x,int y,float th,int l,int color)

{

int x1,y1;

x1=x+l*sin(th);

y1=y-l*cos(th);

setcolor(color);

line(x,y,x1,y1);

}

void main()

{int gdriver=DETECT,gmode;

struct time curtime;

float th_hour,th_min,th_sec;

initgraph(&gdriver,&gmode,"");

setbkcolor(0);

while(! kbhit())

{

DrawClock(x0,y0,14);

gettime(&curtime); /*得到當前系統時間*/

gotoxy(35,20); /*定位輸出位置*/

if((float)curtime.ti_hour<=12) /*午前的處理*/

{printf("AM ");

if((float)curtime.ti_hour<10) printf("0"); /*十點之前在小時數前加零*/

printf("%.0f:",(float)curtime.ti_hour);

}

else /*午後的處理*/

{printf("PM ");

if((float)curtime.ti_hour-12<10) printf("0");

printf("%.0f:",(float)curtime.ti_hour-12);

}

if((float)curtime.ti_min<10) printf("0");

printf("%.0f:",(float)curtime.ti_min);

if((float)curtime.ti_sec<10) printf("0");

printf("%.0f",(float)curtime.ti_sec);

/*以下三行計算表針轉動角度,以豎直向上為起點,順時針為正*/

th_sec=(float)curtime.ti_sec*0.1047197551; /*2π/60=0.1047197551*/

th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0;

th_hour=(float)curtime.ti_hour*0.523598775+th_min/12.0; /* 2π/12=0.5235987755 */

DrawHand(x0,y0,th_hour,70,2); /*畫時針*/

DrawHand(x0,y0,th_min,110,3); /*分針*/

DrawHand(x0,y0,th_sec,140,12); /*秒針*/

sleep(1); /*延時壹秒後刷新*/

cleardevice();

}

closegraph();

}

  • 上一篇:電池反應式書寫規則
  • 下一篇:流氓編程
  • copyright 2024編程學習大全網