使用graphics库函数制作模拟时钟
时间: 2024-02-28 18:54:20 浏览: 61
模拟时钟程序
4星 · 用户满意度95%
好的,下面是一个使用Graphic库函数制作模拟时钟的示例程序:
```
#include <graphics.h>
#include <math.h>
#include <time.h>
#define PI 3.14159265358979323846
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
int x0 = getmaxx() / 2; // 圆心的X坐标
int y0 = getmaxy() / 2; // 圆心的Y坐标
int r = 150; // 时钟的半径
while (1) {
// 获取当前时间
time_t t = time(NULL);
struct tm* tm = localtime(&t);
// 清空屏幕
cleardevice();
// 绘制表盘
setcolor(WHITE);
circle(x0, y0, r);
for (int i = 0; i < 12; i++) {
int x = x0 + r * sin(2 * PI * i / 12);
int y = y0 - r * cos(2 * PI * i / 12);
char str[2];
sprintf(str, "%d", i + 1);
outtextxy(x - 5, y - 5, str);
}
// 绘制时针
setcolor(YELLOW);
int xh = x0 + 0.5 * r * sin(2 * PI * (tm->tm_hour % 12) / 12 +
2 * PI * tm->tm_min / 720);
int yh = y0 - 0.5 * r * cos(2 * PI * (tm->tm_hour % 12) / 12 +
2 * PI * tm->tm_min / 720);
line(x0, y0, xh, yh);
// 绘制分针
setcolor(GREEN);
int xm = x0 + 0.8 * r * sin(2 * PI * tm->tm_min / 60);
int ym = y0 - 0.8 * r * cos(2 * PI * tm->tm_min / 60);
line(x0, y0, xm, ym);
// 绘制秒针
setcolor(RED);
int xs = x0 + 0.9 * r * sin(2 * PI * tm->tm_sec / 60);
int ys = y0 - 0.9 * r * cos(2 * PI * tm->tm_sec / 60);
line(x0, y0, xs, ys);
// 延时1秒
delay(1000);
}
getch();
closegraph();
return 0;
}
```
在这个示例程序中,我们首先调用`initgraph()`函数来初始化图形界面。然后,我们定义了圆心的X坐标、圆心的Y坐标和时钟的半径。
接着,我们进入一个无限循环,在每次循环中获取当前时间,并根据当前时间来绘制时针、分针和秒针。
首先,我们绘制表盘,使用`circle()`函数来绘制圆形,使用`sin()`和`cos()`函数来计算表盘上每个数字的位置,使用`outtextxy()`函数来在表盘上绘制数字。
然后,我们绘制时针,使用`line()`函数来绘制从圆心到时针末端的线段,使用`sin()`和`cos()`函数来计算时针的末端坐标。
接着,我们绘制分针和秒针,使用类似的方法来计算末端坐标。
最后,我们使用`delay()`函数来延时1秒,使得时钟的指针能够动起来。
希望这个示例程序能够帮助你了解如何使用Graphic库函数制作模拟时钟。如果你有任何问题,请随时问我。
阅读全文