Chỉ chạy được trên BC, sử dụng Dosbox để có thể chạy được nền độ họa !
#include<graphics.h>
#include<conio.h>
#include<math.h>
#include<dos.h>
int x0,y0,rgio,rphut,rgiay,mgio,mphut,mgiay;
unsigned phutgioht,gioht,phutht,giayht;
void ke(int ddo, unsigned dai, unsigned day, unsigned mau)
{
unsigned x,y;
float goc;
while(ddo>=360)
ddo=ddo-360;
goc=(M_PI/180)*ddo;
x=x0+(int)(dai*cos(goc)+0.5);
y=y0-(int)(dai*sin(goc)+0.5);
setcolor(mau);
setlinestyle(0,0,day);
line(x0,y0,x,y);
}
void ke_giay(unsigned giay)
{
int ddo;
ddo=(90-6*giay);
ke(ddo,rgiay,1,mgiay);
}
void ke_phut(unsigned phut)
{
int ddo;
ddo=(90-6*phut);
ke(ddo,rphut,3,mphut);
}
void ke_gio(unsigned gio, unsigned phut)
{
int ddo;
ddo=360+90-30*(gio%12)-(phut+1)/2;
ke(ddo,rgio,3,mgio);
}
void chay_kim_giay(void)
{
unsigned giay;
struct time t;
gettime(&t);
giay=t.ti_sec;
if(giay!=giayht)
{
ke_giay(giayht);
giayht=giay;
ke_giay(giayht);
}
}
void chay_kim_phut(void)
{
unsigned phut;
struct time t;
gettime(&t);
phut=t.ti_min;
if(phut!=phutht)
{
ke_phut(phutht);
phutht=phut;
ke_phut(phutht);
}
}
void chay_kim_gio(void)
{
unsigned h,gio,phut,sophut,sophutht;
struct time t;
gettime(&t);
gio=t.ti_hour;
phut=t.ti_min;
sophut=gio*60+phut;
sophutht=gioht*60+phutgioht;
if(sophut<sophutht)
sophut=sophut+12*60;
h=sophut-sophutht;
if(h>=12)
{
ke_gio(gioht,phutgioht);
phutgioht=phut;
gioht=gio;
ke_gio(gioht,phutgioht);
}
}
void main()
{
struct time t;
char *dso[]={"","12","1","2","3","4","5","6","7","8","9","10","11"};
int i, mh=0, mode, r,x,y;
float goc;
initgraph(&mh,&mode,"E:\\BC\\BGI");
x0=(getmaxx()/2)-1;
y0=(getmaxy()/2)-1;
r=y0-2;
rgiay=r-10;
rphut=r-50;
rgio=r-90;
mgiay=BROWN;
mphut=RED;
mgio=YELLOW;
setcolor(BLUE);
setlinestyle(0,0,3);
circle(x0,y0,r);
setfillstyle(1,YELLOW);
floodfill(0,0,BLUE);
setfillstyle(1,WHITE);
floodfill(x0,y0,BLUE);
setlinestyle(0,0,1);
circle(x0,y0,10);
setfillstyle(1,GREEN);
floodfill(x0,y0,BLUE);
settextjustify(1,1);
setcolor(MAGENTA);
outtextxy(x0,y0+120,"TAH-JR");
settextstyle(3,0,3);
settextjustify(1,1);
setcolor(BLUE);
for(i=1;i<=12;i++)
{
goc=(2*M_PI+M_PI/2)-(i-1)*(M_PI/6);
x=x0+(int)(rphut*cos(goc)+0.5);
y=y0-(int)(rphut*sin(goc)+0.5);
outtextxy(x,y,dso[i]);
}
gettime(&t);
gioht=t.ti_hour;
phutht=t.ti_min;
giayht=t.ti_sec;
phutgioht=phutht;
setwritemode(XOR_PUT);
ke_gio(gioht,phutgioht);
ke_phut(phutht);
ke_giay(giayht);
do
{
chay_kim_giay();
chay_kim_phut();
chay_kim_gio();
}while(!kbhit());
closegraph();
}
Không có nhận xét nào:
Đăng nhận xét