📄 clock.c
字号:
#define CLOCK_C
#include <graphics.h>
#include <math.h>
#include "clock.h"
#include "mouse.h"
#define Pie 3.14159265
#define len 29
char string[len]="Welcome to 156ok, I'am kensta";
int row;
void drawHour(){
static int x,y,mx,my;
double size=sizeOfClock*0.5;
setcolor(0);
line(mx,my,x,y);
setcolor(15);
mx=midx;
my=midy;
x=mx+size*sin(theTime.ti_hour*2*Pie/12);
y=my-size*cos(theTime.ti_hour*2*Pie/12);
line(mx,my,x,y);
}
void drawMinute(){
static int x,y,mx,my;
double size=sizeOfClock*0.6;
setcolor(0);
line(mx,my,x,y);
setcolor(1);
mx=midx;
my=midy;
x=mx+size*sin(theTime.ti_min*2*Pie/60);
y=my-size*cos(theTime.ti_min*2*Pie/60);
line(mx,my,x,y);
}
void drawSecond(){
static int x,y,mx,my;
double size=sizeOfClock*0.7;
setcolor(0);
line(mx,my,x,y);
//circle(x,y,1);
setcolor(5);
mx=midx; my=midy;
x=midx+size*sin(theTime.ti_sec*2*Pie/60);
y=midy-size*cos(theTime.ti_sec*2*Pie/60);
line(mx,my,x,y);
//circle(x,y,1);
}
void drawText(int i){
static float x[len],y[len];
char str[2]=" ";
double alpha;
int p=4;
setcolor(0);
str[0]=string[i];
outtextxy(x[i]-p,y[i]-4,str);
setcolor(i%15+1);
alpha=(i*2*Pie+row)/len;
if(i){
x[i]=(x[i]*i+(midx+sizeOfClock*sin(alpha))*4)/(i+4);
y[i]=(y[i]*i+(midy-sizeOfClock*cos(alpha))*4)/(i+4);
if(i==len-1&&
(int) (y[i]-midy+sizeOfClock*cos(alpha)==0) &&
(int) (x[i]-midx-sizeOfClock*sin(alpha)==0))ok|=2;
}else{
x[i]=midx+sizeOfClock*sin(alpha)*(36+i)/36;
y[i]=midy-sizeOfClock*cos(alpha)*(36+i)/36;
}
outtextxy(x[i]-p,y[i]-4,str);
}
void drawPoint(int i){
static double x[60],y[60];
double size=sizeOfClock*0.8;
putpixel(x[i],y[i],0);
if(i){
x[i]=(x[i]*i+(midx+size*sin(i*2*Pie/60))*30)/(i+30);
y[i]=(y[i]*i+(midy-size*cos(i*2*Pie/60))*30)/(i+30);
if(i==59&&
(int)(y[59]-midy+size*cos(59*2*Pie/60))==0&&
(int)(x[59]-midx-size*sin(59*2*Pie/60))==0)ok|=1;
}else{
x[i]=midx+size*sin(i*2*Pie/60);
y[i]=midy-size*cos(i*2*Pie/60);
}
putpixel(x[i],y[i],(i%5)?8:15);
}
void main(){
int curSec,curh,i,x,y,btn;
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
mouseInit();
midx=200;
midy=200;
sizeOfClock=50;
ok=0;
outtextxy(210,180,"welcome to kensta's clock");
outtextxy(250,200,"it's not a game");
outtextxy(170,220,"but it is fun, i hope you like it");
curSec=theTime.ti_sec;
getch();
cleardevice();
while(!kbhit()){
gettime(&theTime);
btn=mouseBtn(&x,&y);
if(btn&1){ok=0;sizeOfClock=220;}
else if(sizeOfClock>50){ok=0;sizeOfClock*=0.9;}
else if(sizeOfClock==50){ok=0;sizeOfClock=50;}
if(midx!=x||midy!=y){midx=x;midy=y;ok=0;}
if(theTime.ti_sec!=curSec||ok!=3){
drawHour();
drawMinute();
drawSecond();
curSec=theTime.ti_sec;
if(theTime.ti_sec!=curSec){
// sound(300);delay(5);nosound();// tick
// delay(5);sound(400);delay(5);nosound();// tack
}
}
if(theTime.ti_hund!=curh){
curh=theTime.ti_sec;
row++;
}
if(!(ok&1)){for(i=0;i<60;i++)drawPoint(i);delay(20);}
if(!(ok&2)){for(i=0;i<len;i++)drawText(i);delay(20);}
}
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -