C语言 用devc++编写一个模拟时钟,最简单那种就行,但要能在devc++上运行。

2025-04-15 02:34:38
推荐回答(2个)
回答1:

#include
#include
using namespace std;
class Clock{
    public:
        Clock(short h=0,short m=0,short s=0):h(h),m(m),s(s){
        }
        void displayTime();
    private:
        short h;
        short m;
        short s;
};void Clock::displayTime(){
    while(true){
        cout<        Sleep(1000);//一秒更新一次 
        cout<<'\r';
        if(!(s=++s%60))
            if(!(m=++m%60))
                h=++h%24;
    }
} int main()
{
    Clock A(12,20,30);//初始时间
    A.displayTime();//更新函数
    return 0;
}
/*
12:20:30 
*/

回答2:

EGE代码:
#include
#include
#include
#include

#define for if (0); else for

ege::ege_point getpos(ege::ege_point center, float rad, float r)
{
ege::ege_point pos;
pos.x = sin(rad) * r + center.x;
pos.y = -cos(rad) * r + center.y;
return pos;
}

void draw()
{
float pi2 = ege::PI * 2;
ege::ege_point center;
center.x = 200, center.y = 200;
float r = 150;
ege::settextjustify(ege::CENTER_TEXT, ege::CENTER_TEXT);
ege::setfont(24, 0, "Courier New");
ege::setbkmode(TRANSPARENT);

ege::ege_enable_aa(true);
ege::setfillcolor(EGEARGB(0xff, 0x40, 0x40, 0x40));
ege::setcolor(EGEARGB(0xff, 0x80, 0x00, 0xf0));
ege::ege_fillellipse(center.x - r * 1.2f, center.y - r * 1.2f,
r * 1.2f * 2.0f, r * 1.2f * 2.0f);

ege::setcolor(ege::WHITE);
for (int num = 1; num <= 12; ++num)
{
char str[8];
ege::ege_point p = getpos(center, float(num * pi2 / 12), r);
sprintf(str, "%d", num);
ege::outtextxy((int)p.x, (int)p.y, str);
}
time_t t_now;
time(&t_now);
tm* t = localtime(&t_now);
ege::setcolor(EGEARGB(0xff, 0x0, 0x0, 0xff));
ege::setlinewidth(10.0f);
{
float h = float(t->tm_hour + t->tm_min / 60.0);
char str[8];
ege::ege_point p = getpos(center, float(h * pi2 / 12), r * 0.5f);
ege::ege_line(p.x, p.y, center.x, center.y);
}
ege::setcolor(EGEARGB(0xff, 0xff, 0x0, 0xff));
ege::setlinewidth(5.0f);
{
float m = float(t->tm_min + t->tm_sec / 60.0);
char str[8];
ege::ege_point p = getpos(center, float(m * pi2 / 60), r * 0.9f);
ege::ege_line(p.x, p.y, center.x, center.y);
}
ege::setcolor(EGEARGB(0xff, 0xff, 0xff, 0));
ege::setfillcolor(EGEARGB(0xff, 0xff, 0xff, 0));
ege::setlinewidth(1.0f);
{
float s = float(t->tm_sec);
char str[8];
ege::ege_point p = getpos(center, float(s * pi2 / 60), r * 1.0f);
ege::ege_line(p.x, p.y, center.x, center.y);
ege::ege_fillellipse(center.x - r * 0.05f, center.y - r * 0.05f,
r * 0.1f, r * 0.1f);
}
{
char str[32];
sprintf(str, "%d/%02d/%02d %2d:%02d:%02d",
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,
t->tm_hour, t->tm_min, t->tm_sec);
ege::setcolor(EGERGB(0xff, 0xff, 0));
ege::outtextxy((int)center.x, (int)(center.y + r * 1.4f), str);
}
}

void mainloop()
{

for ( ; ege::is_run(); ege::delay_fps(60) )
{
ege::cleardevice();
draw();
}
}

int main()
{
ege::setinitmode(ege::INIT_ANIMATION);
ege::initgraph(400, 480);
ege::randomize();
mainloop();
ege::closegraph();
return 0;
}