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

📄 tclock.c

📁 一个C格式的脚本处理函数库源代码,可让你的C程序具有执行C格式的脚本文件
💻 C
字号:
#include <stdio.h>#include <float.h>#include <math.h>#include <time.h>#include <stdlib.h>#include <unistd.h>#include <curses.h>/*  tclock - analog/digital clock for curses.  If it gives you joy, then  (a) I'm glad  (b) you need to get out more :-)  This program is copyright Howard Jones, September 1994  (ha.jones@ic.ac.uk). It may be freely distributed as  long as this copyright message remains intact, and any  modifications are clearly marked as such. [In fact, if  you modify it, I wouldn't mind the modifications back,  especially if they add any nice features. A good one  would be a precalc table for the 60 hand positions, so  that the floating point stuff can be ditched. As I said,  it was a 20 hackup minute job.]    COMING SOON: tfishtank. Be the envy of your mac-owning  colleagues.  *//* To compile: cc -o tclock tclock.c -lcurses -lm */#ifndef PI#define PI 3.141592654#endif#define sign(_x) (_x<0?-1:1)/* Plot a point */static voidplot(int x,int y,char col){  mvaddch(y,x,(chtype)col);} /* Draw a diagonal(arbitrary) line using Bresenham's alogrithm. */static voiddline(int from_x, int from_y, int x2, int y2, char ch){	int dx,dy;	int ax,ay;	int sx,sy;	int x,y;	int d;		dx=x2-from_x;	dy=y2-from_y;		ax=abs(dx*2);	ay=abs(dy*2);	sx=sign(dx);	sy=sign(dy);	x=from_x;	y=from_y;			if(ax>ay)	{		d=ay-(ax/2);				while(1)		{			plot(x,y,ch);			if(x==x2) return;						if(d>=0)			{				y+=sy;				d-=ax;			}			x+=sx;			d+=ay;					}	}	else	{		d=ax-(ay/2);				while(1)		{			plot(x,y,ch);			if(y==y2) return;						if(d>=0)			{				x+=sx;				d-=ay;			}			y+=sy;			d+=ax;					}		}}intmain(int argc, char **argv){	int i,cx,cy;	double mradius, hradius, mangle, hangle;	double sangle, sradius, hours;	int hdx, hdy;	int mdx, mdy;	int sdx, sdy;	time_t tim;	struct tm *t;	char szChar[10];		initscr();	noecho();	cx=39;	cy=12;	mradius=9;	hradius=6;	sradius=8;	for(i=0;i<12;i++)	  {	    sangle=(i+1)*(2.0*PI)/12.0;	    sradius=10;	    sdx=2.0*sradius*sin(sangle);	    sdy=sradius*cos(sangle);	    sprintf(szChar,"%d",i+1);	    mvaddstr((int)(cy-sdy),(int)(cx+sdx),szChar);	  }	mvaddstr(0,0,"ASCII Clock by Howard Jones (ha.jones@ic.ac.uk),1994");	sradius=8;	while(1)	  {	    sleep(1);	    tim=time(0);	    t=localtime(&tim);	    hours=(t->tm_hour + (t->tm_min/60.0));	    if(hours>12.0) hours-=12.0;	    mangle=(t->tm_min)*(2*PI)/60.0;	    mdx=2.0*mradius*sin(mangle);	    mdy=mradius*cos(mangle);	    	    hangle=(hours)*(2.0*PI)/12.0;	    hdx=2.0*hradius*sin(hangle);	    hdy=hradius*cos(hangle);       	    sangle=(t->tm_sec%60)*(2.0*PI)/60.0;	    sdx=2.0*sradius*sin(sangle);	    sdy=sradius*cos(sangle);	    plot(cx+sdx,cy-sdy,'O');	    dline(cx,cy,cx+hdx,cy-hdy,'.');	    dline(cx,cy,cx+mdx,cy-mdy,'#');	    mvaddstr(23,0,ctime(&tim));	    	    refresh();	    plot(cx+sdx,cy-sdy,' ');	    dline(cx,cy,cx+hdx,cy-hdy,' ');	    dline(cx,cy,cx+mdx,cy-mdy,' ');	    	  }	return 0;}

⌨️ 快捷键说明

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