帮我写C++ 时钟的代码
时间: 2023-03-20 07:02:47 浏览: 75
当然可以帮您写C时钟的代码,以下是一个简单的例子:
```
#include <stdio.h>
#include <time.h>
int main() {
time_t t;
struct tm* local;
while (1) {
// 获取当前时间
t = time(NULL);
local = localtime(&t);
// 输出时间
printf("%02d:%02d:%02d\n", local->tm_hour, local->tm_min, local->tm_sec);
// 延时一秒
sleep(1);
}
return 0;
}
```
这个程序会不断地输出当前的时分秒,并每隔一秒钟更新一次。如果您想要更复杂的时钟程序,可以进一步修改这个代码。
相关问题
帮我写一个时钟 C++代码
#include <stdio.h>
#include <time.h>
int main()
{
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
printf("Current time: %02d:%02d:%02d\n", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
return 0;
}
帮我写基于OpenGL的时钟运动代码
以下是基于OpenGL的时钟运动代码,有注释说明:
```c++
#include <GL/glut.h>
#include <math.h>
// 定义常量 PI
#define PI 3.14159265358979323846
// 定义全局变量,存储时钟的指针位置
double hourAngle = 0.0, minuteAngle = 0.0, secondAngle = 0.0;
// 绘制圆形函数
void drawCircle(float radius) {
int i;
glBegin(GL_POLYGON);
for (i = 0; i < 360; i++) {
float degInRad = i * PI / 180;
glVertex2f(cos(degInRad) * radius, sin(degInRad) * radius);
}
glEnd();
}
// 绘制指针函数
void drawPointer(float length, float width) {
glBegin(GL_QUADS);
glVertex2f(-width / 2, 0);
glVertex2f(width / 2, 0);
glVertex2f(width / 2, length);
glVertex2f(-width / 2, length);
glEnd();
}
// 绘制时钟函数
void drawClock() {
// 清空颜色和深度缓冲区
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// 画时钟表盘
glColor3f(1.0, 1.0, 1.0);
drawCircle(0.9);
// 画时钟刻度
glColor3f(0.0, 0.0, 0.0);
int i;
for (i = 0; i < 12; i++) {
glPushMatrix();
glRotatef(i * 30, 0.0, 0.0, 1.0);
glTranslatef(0.0, 0.7, 0.0);
drawPointer(0.1, 0.01);
glPopMatrix();
}
// 画时钟指针
glPushMatrix();
glRotatef(hourAngle, 0.0, 0.0, 1.0);
glColor3f(0.0, 0.0, 1.0);
drawPointer(0.5, 0.05);
glPopMatrix();
glPushMatrix();
glRotatef(minuteAngle, 0.0, 0.0, 1.0);
glColor3f(0.0, 1.0, 0.0);
drawPointer(0.7, 0.03);
glPopMatrix();
glPushMatrix();
glRotatef(secondAngle, 0.0, 0.0, 1.0);
glColor3f(1.0, 0.0, 0.0);
drawPointer(0.8, 0.01);
glPopMatrix();
// 刷新缓冲区
glutSwapBuffers();
}
// 每秒更新时钟指针位置
void update(int value) {
// 计算时、分、秒指针的角度
time_t currentTime = time(NULL);
struct tm *tm = localtime(¤tTime);
hourAngle = (tm->tm_hour % 12 + tm->tm_min / 60.0) * 30;
minuteAngle = tm->tm_min * 6;
secondAngle = tm->tm_sec * 6;
// 重绘时钟
glutPostRedisplay();
// 设置下一次更新时间
glutTimerFunc(1000, update, 0);
}
int main(int argc, char **argv) {
// 初始化 GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500, 500);
glutCreateWindow("OpenGL Clock");
// 设置背景颜色为白色
glClearColor(1.0, 1.0, 1.0, 1.0);
// 设置投影矩阵
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
// 注册绘制函数和定时器函数
glutDisplayFunc(drawClock);
glutTimerFunc(1000, update, 0);
// 开始主循环
glutMainLoop();
return 0;
}
```
运行代码可以看到一个基于OpenGL的时钟,指针会随着时间变化而动态旋转。