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

📄 clock.c

📁 一个小时钟程序
💻 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 + -