C語言實現實時鐘表
本文實例為大傢分享瞭C語言實現實時鐘表的具體代碼,供大傢參考,具體內容如下
一、最終效果展示
效果圖如下:
二、繪制靜態秒針
代碼如下:
#include<graphics.h> #include<conio.h> #include<math.h> #define High 480 //遊戲畫面尺寸 #define Width 640 int main(void) { initgraph(Width,High);//初始化繪圖窗口 int center_x,center_y;//中心點的坐標,也是鐘表的坐標 center_x=Width/2; center_y=High/2; int secondLength;//秒針的長度 secondLength=Width/5; int secondEnd_x,secondEnd_y;//秒針的終點 secondEnd_x=center_x+secondLength; secondEnd_y=center_y; //畫秒針 setlinestyle(PS_SOLID,2);//畫實線,寬度為兩個像素 setcolor(WHITE); line(center_x,center_y,secondEnd_x,secondEnd_y); getch(); closegraph();//關閉繪圖窗口 return 0; }
效果圖如下:
三、繪制動態秒針
代碼如下:
#include<graphics.h> #include<conio.h> #include<math.h> #define High 480 //遊戲畫面尺寸 #define Width 640 #define PI 3.14159 int main(void) { initgraph(Width,High);//初始化繪圖窗口 int center_x,center_y;//中心點的坐標,也是鐘表的坐標 center_x=Width/2; center_y=High/2; int secondLength;//秒針的長度 secondLength=Width/5; int secondEnd_x,secondEnd_y;//秒針的終點 float secondAngle=0;//秒針對應的角度 while(1) { //由角度決定的秒針終點坐標 secondEnd_x=center_x+secondLength*sin(secondAngle); secondEnd_y=center_y-secondLength*cos(secondAngle); //畫秒針 setlinestyle(PS_SOLID,2);//畫實線,寬度為兩個像素 setcolor(WHITE); line(center_x,center_y,secondEnd_x,secondEnd_y); Sleep(1000);//1秒 setcolor(BLACK); line(center_x,center_y,secondEnd_x,secondEnd_y);//隱藏前一幀的秒針 //秒針角度的變化 secondAngle=secondAngle+2*PI/60; //一圈一共2*PI,一圈60秒,一秒鐘秒針走過的角度為2*PI/60 } getch(); closegraph();//關閉繪圖窗口 return 0; }
效果圖如下:
四、根據實際時間轉動秒針
代碼如下:
#include<graphics.h> #include<conio.h> #include<math.h> #define High 480 //遊戲畫面尺寸 #define Width 640 #define PI 3.14159 int main(void) { initgraph(Width,High);//初始化繪圖窗口 int center_x,center_y;//中心點的坐標,也是鐘表的坐標 center_x=Width/2; center_y=High/2; int secondLength;//秒針的長度 secondLength=Width/5; int secondEnd_x,secondEnd_y;//秒針的終點 float secondAngle=0;//秒針對應的角度 SYSTEMTIME ti;//定義保存當前時間的變量 while(1) { GetLocalTime(&ti);//獲取當前時間 //秒針角度的變化 secondAngle=ti.wSecond*2*PI/60; //一圈一共2*PI,一圈60秒,一秒鐘秒針走過的角度為2*PI/60 //由角度決定的秒針終點坐標 secondEnd_x=center_x+secondLength*sin(secondAngle); secondEnd_y=center_y-secondLength*cos(secondAngle); //畫秒針 setlinestyle(PS_SOLID,2);//畫實線,寬度為兩個像素 setcolor(WHITE); line(center_x,center_y,secondEnd_x,secondEnd_y); Sleep(1000);//1秒 setcolor(BLACK); line(center_x,center_y,secondEnd_x,secondEnd_y);//隱藏前一幀的秒針 } getch(); closegraph();//關閉繪圖窗口 return 0; }
五、添加時針分針
代碼如下:
#include<graphics.h> #include<conio.h> #include<math.h> #define High 480 //遊戲畫面尺寸 #define Width 640 #define PI 3.14159 int main(void) { initgraph(Width,High);//初始化繪圖窗口 int center_x,center_y;//中心點的坐標,也是鐘表的坐標 center_x=Width/2; center_y=High/2; int secondLength=Width/7;//秒針的長度 int minuteLength=Width/6;//分針的長度 int hourLength=Width/5;//時針的長度 int secondEnd_x,secondEnd_y;//秒針的終點 int minuteEnd_x,minuteEnd_y;//分針的終點 int hourEnd_x,hourEnd_y;//時針的終點 float secondAngle=0;//秒針對應的角度 float minuteAngle=0;//分針對應的角度 float hourAngle=0;//時針對應的角度 SYSTEMTIME ti;//定義保存當前時間的變量 while(1) { GetLocalTime(&ti);//獲取當前時間 //秒針角度的變化 secondAngle=ti.wSecond*2*PI/60; //一圈一共2*PI,一圈60秒,一秒鐘秒針走過的角度為2*PI/60 //由角度決定的秒針終點坐標 //分針角度的變化 minuteAngle=ti.wMinute*2*PI/60; //一圈一共2*PI,一圈60分,一分鐘秒針走過的角度為2*PI/60 //時針角度的變化 hourAngle=ti.wHour*2*PI/12; //一圈一共2*PI,一圈12時,一小時時針走過的角度為2*PI/12 //由角度決定的秒針終點坐標 secondEnd_x=center_x+secondLength*sin(secondAngle); secondEnd_y=center_y-secondLength*cos(secondAngle); //由角度決定的分針終點坐標 minuteEnd_x=center_x+minuteLength*sin(minuteAngle); minuteEnd_y=center_y-minuteLength*cos(minuteAngle); //由角度決定的時針終點坐標 hourEnd_x=center_x+hourLength*sin(hourAngle); hourEnd_y=center_y-hourLength*cos(hourAngle); //畫秒針 setlinestyle(PS_SOLID,2);//畫實線,寬度為兩個像素 setcolor(WHITE); line(center_x,center_y,secondEnd_x,secondEnd_y); //畫分針 setlinestyle(PS_SOLID,4);//畫實線,寬度為4個像素 setcolor(BLUE); line(center_x,center_y,minuteEnd_x,minuteEnd_y); //畫時針 setlinestyle(PS_SOLID,6);//畫實線,寬度為6個像素 setcolor(RED); line(center_x,center_y,hourEnd_x,hourEnd_y); Sleep(1000);//1秒 setcolor(BLACK); setlinestyle(PS_SOLID,2); line(center_x,center_y,secondEnd_x,secondEnd_y);//隱藏前一幀的秒針 setlinestyle(PS_SOLID,4); line(center_x,center_y,minuteEnd_x,minuteEnd_y);//隱藏前一幀的分針 setlinestyle(PS_SOLID,6); line(center_x,center_y,hourEnd_x,hourEnd_y);//隱藏前一幀的時針 } getch(); closegraph();//關閉繪圖窗口 return 0; }
效果圖如下:
六、添加表盤 刻度
代碼如下:
#include<graphics.h> #include<conio.h> #include<math.h> #define High 480 //遊戲畫面尺寸 #define Width 640 #define PI 3.14159 int main(void) { initgraph(Width,High);//初始化繪圖窗口 int center_x,center_y;//中心點的坐標,也是鐘表的坐標 center_x=Width/2; center_y=High/2; int secondLength=Width/7;//秒針的長度 int minuteLength=Width/6;//分針的長度 int hourLength=Width/5;//時針的長度 int secondEnd_x,secondEnd_y;//秒針的終點 int minuteEnd_x,minuteEnd_y;//分針的終點 int hourEnd_x,hourEnd_y;//時針的終點 float secondAngle=0;//秒針對應的角度 float minuteAngle=0;//分針對應的角度 float hourAngle=0;//時針對應的角度 SYSTEMTIME ti;//定義保存當前時間的變量 BeginBatchDraw(); while(1) { //繪制一個簡單的表盤 setlinestyle(PS_SOLID,1);//設置表盤邊的粗細 setcolor(WHITE);//設置表盤邊的顏色 circle(center_x,center_y,Width/4);//畫表盤 //畫刻度 int x,y,i; for(i=0;i<60;i++) { x=center_x+int(Width/4.3*sin(PI*2*i/60)); y=center_y+int(Width/4.3*cos(PI*2*i/60)); if(i%15==0) bar(x-5,y-5,x+5,y+5); else if(i%5==0) circle(x,y,3); else putpixel(x,y,WHITE); } outtextxy(center_x-25,center_y+Width/6,"我的時鐘"); outtextxy(center_x-120,High-60,"[時針: 紅色] [分針: 藍色] [秒針: 白色]"); GetLocalTime(&ti);//獲取當前時間 //秒針角度的變化 secondAngle=ti.wSecond*2*PI/60; //一圈一共2*PI,一圈60秒,一秒鐘秒針走過的角度為2*PI/60 //由角度決定的秒針終點坐標 //分針角度的變化 minuteAngle=ti.wMinute*2*PI/60; //一圈一共2*PI,一圈60分,一分鐘秒針走過的角度為2*PI/60 //時針角度的變化 hourAngle=ti.wHour*2*PI/12; //一圈一共2*PI,一圈12時,一小時時針走過的角度為2*PI/12 //由角度決定的秒針終點坐標 secondEnd_x=center_x+secondLength*sin(secondAngle); secondEnd_y=center_y-secondLength*cos(secondAngle); //由角度決定的分針終點坐標 minuteEnd_x=center_x+minuteLength*sin(minuteAngle); minuteEnd_y=center_y-minuteLength*cos(minuteAngle); //由角度決定的時針終點坐標 hourEnd_x=center_x+hourLength*sin(hourAngle); hourEnd_y=center_y-hourLength*cos(hourAngle); //畫秒針 setlinestyle(PS_SOLID,2);//畫實線,寬度為兩個像素 setcolor(WHITE); line(center_x,center_y,secondEnd_x,secondEnd_y); //畫分針 setlinestyle(PS_SOLID,4);//畫實線,寬度為4個像素 setcolor(BLUE); line(center_x,center_y,minuteEnd_x,minuteEnd_y); //畫時針 setlinestyle(PS_SOLID,6);//畫實線,寬度為6個像素 setcolor(RED); line(center_x,center_y,hourEnd_x,hourEnd_y); FlushBatchDraw(); Sleep(1000);//1秒 setcolor(BLACK); setlinestyle(PS_SOLID,2); line(center_x,center_y,secondEnd_x,secondEnd_y);//隱藏前一幀的秒針 setlinestyle(PS_SOLID,4); line(center_x,center_y,minuteEnd_x,minuteEnd_y);//隱藏前一幀的分針 setlinestyle(PS_SOLID,6); line(center_x,center_y,hourEnd_x,hourEnd_y);//隱藏前一幀的時針 } EndBatchDraw(); getch(); closegraph();//關閉繪圖窗口 return 0; }
效果圖如下:
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持LevelAH。