C语言程序设计:图形时钟

Python011

C语言程序设计:图形时钟,第1张

/* Note:Your choice is C IDE */

#include "stdio.h"

#include "graphics.h"

#include "math.h"

#include "time.h"

#include "dos.h"

#include "stdlib.h"

#include "conio.h"

#define R 200

#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(void)

void draw_bp(void)

void close(void)

void draw_kt(void)

int main(void)

{

int x,y,hc=0

int bx,by,ax,ay

int h,m,s

struct time t[1]

init()

draw_bp()

draw_kt()

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,h,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

setfillstyle(SOLID_FILL,13)

floodfill(1,380,14)

setcolor(4)

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()

}

setcolor(hc++)

if(hc==12) hc=0

ellipse(300,300,160,340,23,23)

ellipse(220,170,0,360,23,65)

ellipse(380,170,0,360,23,65)

ellipse(300,180,0,180,23,23)

ellipse(380,180,0,180,23,23)

arc(150,80,20,250,59)

}

close()

return 0

}

void init(void)

{

int driver,mode

driver=DETECT

initgraph(&driver,&mode,"c:\\tc")

cleardevice()

}

void draw_bp(void)

{

int x=300,y=240,i,n,l,ax,ay,bx,by

for(n=0n<27n++)

printf("\n")

for(n=0n<29n++)

printf(" ")

setbkcolor(0)

setcolor(14)

circle(x,y,R)

setcolor(12)

circle(x,y,190)

setfillstyle(SOLID_FILL,14)

floodfill(x,y,12)

setfillstyle(SOLID_FILL,13)

floodfill(1,1,14)

setcolor(2)

circle(x,y,2)

circle(x,y,5)

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

{

if(i%5==0)

l=15

else

l=5

ax=200*cos(i*6*PI/180)+300

ay=200*sin(i*6*PI/180)+240

bx=(200-l)*cos(i*6*PI/180)+300

by=(200-l)*sin(i*6*PI/180)+240

line(ax,ay,bx,by)

}

settextstyle(3,0,5)

outtextxy(260,380,"MADEIN CHINA")

}

void draw_kt(void)

{

int x=300,y=240

ellipse(x-80,y-70,0,360,23,65)

ellipse(x+80,y-70,0,360,23,65)

ellipse(x-80,y-60,0,180,23,23)

setfillstyle(SOLID_FILL,0)

floodfill(x-80,y-60,2)

ellipse(x+80,y-60,0,180,23,23)

setfillstyle(SOLID_FILL,0)

floodfill(x+80,y-70,2)

setcolor(5)

circle(150,80,60)

setfillstyle(SOLID_FILL,14)

floodfill(150,80,5)

circle(450,80,60)

setfillstyle(SOLID_FILL,14)

floodfill(450,80,5)

setcolor(14)

arc(150,80,0,360,60)

arc(450,80,0,360,60)

setcolor(0)

ellipse(x,y+60,160,340,23,23)

circle(x+120,y+10,23)

setfillstyle(SOLID_FILL,12)

floodfill(x+120,y+10,0)

setcolor(14)

circle(x+120,y+10,23)

setcolor(0)

circle(x-120,y+10,23)

setfillstyle(SOLID_FILL,12)

floodfill(x-120,y+10,0)

setcolor(14)

circle(x-120,y+10,23)

ellipse(x,y+60,0,180,23,23)

}

void close(void)

{

getch()

closegraph()

}

给你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=0i<60i++)

{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()

}

//图形库是EGE,下载后配置一下

#include <iostream>

#include "graphics.h"

#include <math.h>

#include <time.h>

#include <windows.h>

#define x0 210.0

#define y0 210.0

#define r 200.0

POINT pt[60],pt_s[60],pt_m[60],pt_h[60],pt1[60]

using namespace std

int main()

{

initgraph(420,420)

setfillcolor(0xffccff)

setcolor(0xffccff)

fillellipse(x0,y0,10,10)

int s=45,m,h,n=0

while(n<60)

{

pt_s[s].x=x0+(int)((r-20)*cos((n-90)*3.1415926/30.0))

pt_s[s].y=y0+(int)((r-20)*sin((n-90)*3.1415926/30.0))

pt_m[s].x=x0+(int)((r-50)*cos((n-90)*3.1415926/30.0))

pt_m[s].y=y0+(int)((r-50)*sin((n-90)*3.1415926/30.0))

pt_h[s].x=x0+(int)((r-80)*cos((n-90)*3.1415926/30.0))

pt_h[s].y=y0+(int)((r-80)*sin((n-90)*3.1415926/30.0))

pt[s].x=x0+(int)(r*cos((n-90)*3.1415926/30.0))

pt[s].y=y0+(int)(r*sin((n-90)*3.1415926/30.0))

fillellipse(pt[s].x,pt[s].y,2,2)

n++

s++

if(s>=60)

{

s=0

}

}

for(int i=0i<12i++)

{

fillellipse(pt[i*5].x,pt[i*5].y,5,5)

}

int xs,ys,xm=-1,ym=-1,xh=-1,yh=-1

while(1)

{

int n,m

SYSTEMTIME st={0}

GetLocalTime(&st)

setcolor(0xffccff)

line(x0,y0,pt_s[st.wSecond].x,pt_s[st.wSecond].y)

xs=pt_s[st.wSecond].x

ys=pt_s[st.wSecond].y

if(pt_m[st.wMinute].x!=xm && pt_m[st.wMinute].y!=ym)

{

setcolor(0)

line(x0,y0,xm,ym)

xm=pt_m[st.wMinute].x

ym=pt_m[st.wMinute].y

setcolor(0xffccff)

}

line(x0,y0,pt_m[st.wMinute].x,pt_m[st.wMinute].y)

if(st.wHour>12)

{

n=st.wHour-12

}

else

{

n=st.wHour

}

m=(n*60+st.wMinute)/12

line(x0,y0,pt_h[m].x,pt_h[m].y)

Sleep(1000)

setcolor(0x0)

line(x0,y0,xs,ys)

fillellipse(x0,y0,10,10)

}

closegraph()

return 0

}