⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dongho.c

📁 pain clock in dos it very cool
💻 C
字号:
/* Bai tap 2_21 - Dong ho mat kim */
#include <conio.h>
#include <graphics.h>
#include <math.h>
#include <dos.h>

/* he so doi tu do sang radian */
#define RADS 0.017453293
#define CIRCLE 200

double xc, yc;
int gio, phut, giay;

void ve_kim_gio(int color)
{
  double angle;

  setcolor(color);
  angle = ((double)360 * gio / 12 + (double)phut / 2 - 90.0) * RADS;
  moveto(xc - 20.0 * cos(angle), yc - 20.0 * sin(angle));
  lineto(xc - 10.0 * cos(angle + M_PI / 2), yc - 10.0 * sin(angle + M_PI/2));
  lineto(xc + 110.0 * cos(angle), yc + 110.0 * sin(angle));
  lineto(xc + 10.0 * cos(angle + M_PI / 2), yc + 10.0 * sin(angle + M_PI/2));
  lineto(xc - 20.0 * cos(angle), yc - 20.0 * sin(angle));
}

void ve_kim_phut(int color)
{
  double angle;

  setcolor(color);
  angle = ((double)360 * phut / 60 + (double)giay / 10 - 90.0) * RADS;
  moveto(xc - 30.0 * cos(angle), yc - 30.0 * sin(angle));
  lineto(xc - 8.0 * cos(angle + M_PI / 2), yc - 8.0 * sin(angle + M_PI/2));
  lineto(xc + 140.0 * cos(angle), yc + 140.0 * sin(angle));
  lineto(xc + 8.0 * cos(angle + M_PI / 2), yc + 8.0 * sin(angle + M_PI/2));
  lineto(xc - 30.0 * cos(angle), yc - 30.0 * sin(angle));
}

void ve_kim_giay(int color)
{
  double angle;

  setcolor(color);
  angle = ((double)360 * (giay - 3) / 60) * RADS;
  moveto(xc - 40.0 * cos(angle), yc - 40.0 * sin(angle));
  lineto(xc + 150.0 * cos(angle), yc + 150.0 * sin(angle));
  setfillstyle(SOLID_FILL, color);
  fillellipse(xc, yc, 3, 3);
}

void ve_mat_dong_ho()
{
  int i, j;

  setcolor(YELLOW);
  circle(xc, yc, CIRCLE);
  setlinestyle(SOLID_LINE, 0, 3);
  for (i=0; i<12; i++)
    if (i%3 == 0)
    {
      line(xc + (CIRCLE - 2) * sin(RADS * (30 * i - 1)), yc + (CIRCLE - 2) * cos(RADS * (30 * i - 1)),
           xc + (CIRCLE - 24) * sin(RADS * (30 * i - 1)), yc + (CIRCLE - 24) * cos(RADS * (30 * i - 1)));
      line(xc + (CIRCLE - 2) * sin(RADS * (30 * i + 1)), yc + (CIRCLE - 2) * cos(RADS * (30 * i + 1)),
           xc + (CIRCLE - 24) * sin(RADS * (30 * i + 1)), yc + (CIRCLE - 24) * cos(RADS * (30 * i + 1)));
    }
    else
      line(xc + (CIRCLE - 2) * sin(RADS * (30 * i)), yc + (CIRCLE - 2) * cos(RADS * (30 * i)),
           xc + (CIRCLE - 24) * sin(RADS * (30 * i)), yc + (CIRCLE - 24) * cos(RADS * (30 * i)));
}

void run()
{
  struct time timep;
  ve_mat_dong_ho();
  gettime(&timep);
  gio = timep.ti_hour;
  phut = timep.ti_min;
  giay = timep.ti_sec;
  setlinestyle(SOLID_LINE, 0, 0);
  do {
    ve_kim_gio(YELLOW);
    ve_kim_phut(GREEN);
    ve_kim_giay(RED);
    delay(990);
    sound(1000);
    delay(10);
    nosound();
    ve_kim_giay(BLACK);
    ve_kim_phut(BLACK);
    ve_kim_gio(BLACK);
    giay++;
    if (giay >= 60)
    {
      giay %= 60;
      phut++;
      if (phut >= 60)
      {
        phut %= 60;
        gio++;
        if (gio >= 12)
          gio %= 12;
      }
    }
  } while (!kbhit());
}

void main()
{
  int gr_drive = DETECT, gr_mode;

  initgraph(&gr_drive, &gr_mode, "");
  xc = getmaxx() / 2;
  yc = getmaxy() / 2;
  run();
  getch();
  closegraph();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -