用C做的電子時鐘程式
效果圖
/*-----------------------------電子時鐘原始碼---------------------------------*/
/*------------------------------預處理----------------------------------------*/#include<graphics.h>
#include<math.h>
#include<dos.h>
#include<stdio.h>
/*-----------------------------巨集定義-----------------------------------------*/
#define PI 3.1415926
#define Up 0x4800
#define Down 0x5000
#define Tab 0xf09
#define Esc 0x11b
/*-----------------------------定義全域性變數-----------------------------------*/
double Hour,Minute,Second;
int Radius=130,Center_x=300,Center_y=265;
double Hour_x,Hour_y,Minute_x,Minute_y,Second_x,Second_y;
struct time Time[1];
/*-----------------------------函式的宣告-------------------------------------*/
void ColockHandle();
int DigitalHour(double Hour);
int DigitalMinute(double Minute);
int DigitalSecond(double Second);
void DigitalClock(int x,int y,int clock);
int Up_Key(int Count);
int Down_Key(int Count);
void ClearCursor(int Count);
void DrawCursor(int Count);
/*----------------------------主函式------------------------------------------*/
main()
{
/*--------------繪底板----------------------*/
int Driver,Mode;
int i,j;
Driver=DETECT;
initgraph(&Driver,&Mode,"");
setcolor(RED);
line(300,0,5,120);
line(300,0,595,120);
line(5,120,595,120);
setfillstyle(SOLID_FILL,RED);
floodfill(300,100,RED);
setcolor(BLUE);
line(65,120,535,120);
line(65,120,65,470);
line(535,120,535,470);
line(65,470,535,470);
line(125,120,125,470);
line(475,120,475,470);
line(125,410,475,410);
setfillstyle(SOLID_FILL,BLUE);
floodfill(80,130,BLUE);
setfillstyle(SOLID_FILL,BLUE);
floodfill(500,130,BLUE);
setfillstyle(SOLID_FILL,BLACK);
floodfill(300,450,BLUE);
/*-------------繪時間間隔符-----------------*/
for(i=275;i<=305;i=i+30)
{
for(j=434;j<=442;j=j+8)
{
setcolor(WHITE);
setlinestyle(0,0,3);
circle(i,j,1);
}
}
/*------------繪製游標----------------------*/
setcolor(WHITE);
line(270,430,270,445);
/*-------------繪製表軸---------------------*/
setlinestyle(0,0,3);
circle(Center_x,Center_y,1);
/*-------------繪製表框---------------------*/
setlinestyle(0,0,1);
circle(Center_x,Center_y,Radius+3);
/*--------------繪製分針刻度----------------*/
for(i=0,Minute=0;i<=59;i++,Minute++)
{
Minute_x=Center_x+Radius*sin(Minute/30*PI);
Minute_y=Center_y-Radius*cos(Minute/30*PI);
setlinestyle(0,0,1);
circle(Minute_x,Minute_y,1);
}
/*--------------繪製時針刻度----------------*/
setcolor(RED);
for(i=0,Hour=0,Minute=0;i<=11;i++,Hour++)
{
Hour_x=Center_x+Radius*sin((Hour*60+Minute)/360*PI);
Hour_y=Center_y-Radius*cos((Hour*60+Minute)/360*PI);
setlinestyle(0,0,3);
circle(Hour_x,Hour_y,1);
}
/*--------------新增文字--------------------*/
setcolor(GREEN);
outtextxy(283,50,"CLOCK");
outtextxy(320,110,"Designed by Zhang Cheng Jin");
outtextxy(80,130,"Help");
outtextxy(70,150,"Up:");
outtextxy(78,168,"Time++");
outtextxy(70,216,"Down:");
outtextxy(78,234,"Time--");
outtextxy(70,286,"Tab:");
outtextxy(78,304,"Move");
outtextxy(70,356,"Esc:");
outtextxy(78,374,"Exit");
outtextxy(500,190,"No");
outtextxy(490,215,"time");
outtextxy(490,240,"like");
outtextxy(495,265,"the");
outtextxy(480,290,"present");
outtextxy(500,315,"!");
/*----------呼叫函式-----------------------*/
ColockHandle();
/*-----------關閉圖形----------------------*/
closegraph();
/*-----------返回0,程式結束---------------*/
return 0;
}
/*---------------------------時鐘動畫處理函式---------------------------------*/
void ColockHandle()
{
int Key=0,Count;
setcolor(WHITE);
/*----------------獲取系統時間-------------*/
gettime(Time);
Hour=Time[0].ti_hour;
Minute=Time[0].ti_min;
/*----------------繪製分針-----------------*/
Minute_x=Center_x+100*sin(Minute/30*PI);
Minute_y=Center_y-100*cos(Minute/30*PI);
line(Center_x,Center_y,Minute_x,Minute_y);
/*----------------繪製時針-----------------*/
Hour_x=Center_x+80*sin((Hour*60+Minute)/360*PI);
Hour_y=Center_y-80*cos((Hour*60+Minute)/360*PI);
line(Center_x,Center_y,Hour_x,Hour_y);
/*----------------繪製數字時鐘-------------*/
DigitalClock(255,435,DigitalHour(Hour));
DigitalClock(285,435,DigitalMinute(Minute));
setwritemode(1);
for(Count=2;Key!=Esc;)
{
/*----------------繪製秒針-----------------*/
setcolor(RED);
Hour=Time[0].ti_hour;
Minute=Time[0].ti_min;
Second=Time[0].ti_sec;
Second_x=Center_x+120*sin(Second/30*PI);
Second_y=Center_y-120*cos(Second/30*PI);
line(Center_x,Center_y,Second_x,Second_y);
/*-----------------------------------------*/
while(Hour==Time[0].ti_hour&&Minute==Time[0].ti_min&&Second==Time[0].ti_sec)
{
gettime(Time);
if(bioskey(1)!=0)
{
Key=bioskey(0);
Count=KeyHandle(Key,Count);
if(Count==5)
Count=1;
}
}
/*----------繪製數字時鐘的秒---------------*/
setcolor(WHITE);
DigitalClock(315,435,DigitalSecond(Second)+1);
/*----------清除前一個秒針的圖形-----------*/
setcolor(RED);
Second_x=Center_x+120*sin(Second/30*PI);
Second_y=Center_y-120*cos(Second/30*PI);
line(Center_x,Center_y,Second_x,Second_y);
setcolor(WHITE);
/*---------對分針變化的處理----------------*/
if(Minute!=Time[0].ti_min)
{
Minute_x=Center_x+100*sin(Minute/30*PI);
Minute_y=Center_y-100*cos(Minute/30*PI);
line(Center_x,Center_y,Minute_x,Minute_y);
Minute=Time[0].ti_min;
DigitalClock(285,435,DigitalMinute(Minute));
Minute_x=Center_x+100*sin(Minute/30*PI);
Minute_y=Center_y-100*cos(Minute/30*PI);
line(Center_x,Center_y,Minute_x,Minute_y);
}
/*----------對時針變化的處理---------------*/
if(Hour!=Time[0].ti_hour)
{
Hour_x=Center_x+80*sin((Hour*60+Minute)/360*PI);
Hour_y=Center_y-80*cos((Hour*60+Minute)/360*PI);
line(Center_x,Center_y,Hour_x,Hour_y);
Hour=Time[0].ti_hour;
DigitalClock(255,435,DigitalHour(Hour));
Hour_x=Center_x+80*sin((Hour*60+Minute)/360*PI);
Hour_y=Center_y-80*cos((Hour*60+Minute)/360*PI);
line(Center_x,Center_y,Hour_x,Hour_y);
}
}
}
/*------------------------數字時鐘模組----------------------------------------*/
int DigitalHour(double Hour)
{
int h;
for(h=0;h<24;h++)
{
if(h==Hour)
{
return h;
}
}
}
int DigitalMinute(double Minute)
{
int m;
for(m=0;m<60;m++)
{
if(m==Minute)
{
return m;
}
}
}
int DigitalSecond(double Second)
{
int s;
for(s=0;s<60;s++)
{
if(s==Second)
{
return s;
}
}
}
void DigitalClock(int x,int y,int clock)
{
char buffer[10];
setfillstyle(0,2);
bar(x,y,x+14,449);
if(clock==60)
clock=0;
sprintf(buffer,"%d",clock);
outtextxy(x,y,buffer);
}
/*----------------------按鍵處理函式------------------------------------------*/
int KeyHandle(int Key,int Count)
{
switch(Key)
{
case Up: Up_Key(Count-1);
break;
case Down: Down_Key(Count-1);
break;
case Tab: ClearCursor(Count);
DrawCursor(Count);
Count++;
break;
}
return Count;
}
/*--------------------向上方向鍵函式------------------------------------------*/
int Up_Key(int Count)
{
if(Count==1)
{
Time[0].ti_hour--;
if(Time[0].ti_hour==24)
Time[0].ti_hour=0;
settime(Time);
}
if(Count==2)
{
Time[0].ti_min--;
if(Time[0].ti_min==60)
Time[0].ti_min=0;
settime(Time);
}
if(Count==3)
{
Time[0].ti_sec--;
if(Time[0].ti_sec==60)
Time[0].ti_sec=0;
settime(Time);
}
}
/*--------------------向下方向鍵函式------------------------------------------*/
int Down_Key(int Count)
{
if(Count==1)
{
Time[0].ti_hour++;
if(Time[0].ti_hour==24)
Time[0].ti_hour=0;
settime(Time);
}
if(Count==2)
{
Time[0].ti_min++;
if(Time[0].ti_min==60)
Time[0].ti_min=0;
settime(Time);
}
if(Count==3)
{
Time[0].ti_sec++;
if(Time[0].ti_sec==60)
Time[0].ti_sec=0;
settime(Time);
}
}
/*---------------------游標處理函式-------------------------------------------*/
void ClearCursor(int Count)
{ setcolor(WHITE);
switch(Count)
{
case 2: line(270,430,270,445);
break;
case 3: line(300,430,300,445);
break;
case 1: line(330,430,330,445);
break;
}
}
void DrawCursor(int Count)
{
switch(Count)
{
case 1: line(270,430,270,445);
break;
case 2: line(300,430,300,445);
break;
case 3: line(330,430,330,445);
break;
}
}
/*----------------------------------------------------------------------------*/
相關文章
- canvas實現的絢麗的電子時鐘效果Canvas
- C51-------時鐘程式(C語言編寫的微控制器時鐘)C語言
- 用Visual C++編寫電子郵件程式 (轉)C++
- 做C2C電子商務網站,只用Struts可以麼?網站
- javascript圓形電子鐘錶效果程式碼例項JavaScript
- 微課|中學生可以這樣學Python(例11.1):tkinter電子時鐘程式(1)Python
- 微課|中學生可以這樣學Python(例11.1):tkinter電子時鐘程式(2)Python
- 復工沒效率?用Python做個番茄工作時鐘吧!Python
- 3分鐘短文:用Laravel發一封“漂洋過海”的電子郵件Laravel
- 柔性振動盤為什麼要在汽車電子、3C製造珠寶、鐘錶等行業運用行業
- 電子程式單-萊斯
- 用 C++BUILDER 實現 POP3 電子郵件的接收 (轉)C++UI
- win10電腦桌面怎麼新增時鐘 win10如何把時鐘放在電腦桌面Win10
- 世界上最短的時鐘程式碼
- 實時變化的時鐘效果程式碼例項
- 百度電子書《用Python做HTTP介面測試》已上架PythonHTTP
- 表格技術七十二變|手把手教你用Canvas電子表格做電子簽名Canvas
- 繪製商場電子地圖軟體,商場導航圖用什麼做的地圖
- Qt啟動子程式,子程式關閉時通知主程式,實現主程式對子程式的管理QT
- 實時時鐘、系統時鐘和主機伺服器時鐘的區別伺服器
- 15分鐘,不,用模板做資料視覺化只需5分鐘視覺化
- 用 C++Builder 編寫傳送電子郵件軟體 (轉)C++UI
- 在喬治亞,做一款奇幻風格的電子遊戲遊戲
- 在.NET框架應用程式中傳送電子郵件框架
- 用4K電視做顯示器的程式設計師程式設計師
- 樹莓派+串列埠墨水電子螢幕+溫度溼度感測器打造專屬時鐘樹莓派串列埠
- 活動邀請函電子版怎麼做?如何建立一個H5形式的電子邀請函?H5
- 商場電子地圖怎麼做成的,立體佈局圖用什麼軟體做地圖
- 電子書下載:C語言程式開發範例寶典C語言
- 五分鐘教你建立有效的電子化客戶關係管理
- 電力GPS北斗衛星時鐘(NTP時鐘伺服器)同步技術淺談伺服器
- MES在電子工業PCBA的應用
- 電子沙盤的應用都有哪些功能
- 用英文寫電子郵件的常用句式
- MongoDB ODM: 用於電子商務的MongoDBMongoDB
- 中型電子商務應用的配置是______
- 為電子遊戲添“彩” ——色彩原理在電子遊戲中的應用與發展遊戲
- 關閉應用程式時如何關閉子執行緒執行緒