分享
 
 
 

SCO OpenServer 5下的字符时钟的C程序

王朝c/c++·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

/* 文件名:tclock.c */

#include "test.priv.h" #include <math.h>

#include <time.h>

/* To compile: cc -o tclock tclock.c -lcurses -lm */ #ifndef PI

#define PI 3.141592654

#endif #define sign(_x) (_x<0?-1:1) #define ASPECT 2.2

#define ROUND(value) ((int)((value) + 0.5)) #define A2X(angle,radius) ROUND(ASPECT * radius * sin(angle))

#define A2Y(angle,radius) ROUND(radius * cos(angle)) /* Plot a point */

static void

plot(int x, int y, char col)

{

mvaddch(y, x, (chtype) col);

} /* Draw a diagonal(arbitrary) line using Bresenham's alogrithm. */

static void

dline(int pair, 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; if (has_colors())

attrset(COLOR_PAIR(pair)); 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;

}

}

} int

main(

int argc GCC_UNUSED,

char *argv[]GCC_UNUSED)

{

int i, cx, cy;

double mradius, hradius, mangle, hangle;

double sangle, sradius, hours;

int hdx, hdy;

int mdx, mdy;

int sdx, sdy;

int ch;

int lastbeep = -1;

time_t tim;

struct tm *t;

char szChar[10];

int my_bg = COLOR_BLACK; initscr();

noecho();

cbreak();

nodelay(stdscr, TRUE);

curs_set(0); if (has_colors()) {

start_color();

#if HAVE_USE_DEFAULT_COLORS

if (use_default_colors() == OK)

my_bg = -1;

#endif

init_pair(1, COLOR_RED, my_bg);

init_pair(2, COLOR_MAGENTA, my_bg);

init_pair(3, COLOR_GREEN, my_bg);

}

#ifdef KEY_RESIZE

keypad(stdscr, TRUE);

restart:

#endif

cx = (COLS - 1) / 2;/* 39 */

cy = LINES / 2;/* 12 */

ch = (cx > cy) ? cy : cx;/* usually cy */

mradius = (3 * cy) / 4;/* 9 */

hradius = cy / 2;/* 6 */

sradius = (2 * cy) / 3;/* 8 */ for (i = 0; i < 12; i++) {

sangle = (i + 1) * (2.0 * PI) / 12.0;

sradius = (5 * cy) / 6;/* 10 */

sdx = A2X(sangle, sradius);

sdy = A2Y(sangle, sradius);

sprintf(szChar, "%d", i + 1); mvaddstr(cy - sdy, cx + sdx, szChar);

} mvaddstr(0, 25, "SCO OpenServer 5下的字符时钟"); sradius = 8;

for (;;) {

napms(1000); 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 = A2X(mangle, mradius);

mdy = A2Y(mangle, mradius); hangle = ((hours) * (2.0 * PI) / 12.0);

hdx = A2X(hangle, hradius);

hdy = A2Y(hangle, hradius); sangle = ((t->tm_sec) * (2.0 * PI) / 60.0);

sdx = A2X(sangle, sradius);

sdy = A2Y(sangle, sradius); dline(3, cx, cy, cx + mdx, cy - mdy, '#'); attrset(A_REVERSE);

dline(2, cx, cy, cx + hdx, cy - hdy, '.');

attroff(A_REVERSE); if (has_colors())

attrset(COLOR_PAIR(1)); plot(cx + sdx, cy - sdy, 'O'); if (has_colors())

attrset(COLOR_PAIR(0)); mvaddstr(LINES - 2, 0, ctime(&tim));

refresh();

if ((t->tm_sec % 5) == 0

&& t->tm_sec != lastbeep) {

lastbeep = t->tm_sec;

beep();

} if ((ch = getch()) != ERR) {

#ifdef KEY_RESIZE

if (ch == KEY_RESIZE) {

erase();

goto restart;

}

#endif

break;

} plot(cx + sdx, cy - sdy, ' ');

dline(0, cx, cy, cx + hdx, cy - hdy, ' ');

dline(0, cx, cy, cx + mdx, cy - mdy, ' '); } curs_set(1);

endwin();

return 0;

} --------------------------------------------------------------------------------

/* 头文件 test.priv.h */

/****************************************************************************

* Copyright (c) 1998,2000 Free Software Foundation, Inc. *

* *

* Permission is hereby granted, free of charge, to any person obtaining a *

* copy of this software and associated documentation files (the *

* "Software"), to deal in the Software without restriction, including *

* without limitation the rights to use, copy, modify, merge, publish, *

* distribute, distribute with modifications, sublicense, and/or sell *

* copies of the Software, and to permit persons to whom the Software is *

* furnished to do so, subject to the following conditions: *

* *

* The above copyright notice and this permission notice shall be included *

* in all copies or substantial portions of the Software. *

* *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *

* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *

* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *

* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *

* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *

* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *

* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *

* *

* Except as contained in this notice, the name(s) of the above copyright *

* holders shall not be used in advertising or otherwise to promote the *

* sale, use or other dealings in this Software without prior written *

* authorization. *

****************************************************************************/ /****************************************************************************

* Author: Thomas E. Dickey <dickey@clark.net> 1996 *

****************************************************************************/

/* $Id: test.priv.h,v 1.19 2000/09/02 19:31:58 tom Exp $ */ #if HAVE_CONFIG_H

#include <ncurses_cfg.h>

#else

#define HAVE_CURSES_VERSION 0

#define HAVE_RESIZETERM 0

#define HAVE_USE_DEFAULT_COLORS 0

#define HAVE_WRESIZE 0

#endif #ifndef HAVE_NC_ALLOC_H

#define HAVE_NC_ALLOC_H 0

#endif #ifndef HAVE_LOCALE_H

#define HAVE_LOCALE_H 0

#endif #ifndef NCURSES_NOMACROS

#define NCURSES_NOMACROS 0

#endif #ifndef NEED_PTEM_H

#define NEED_PTEM_H 0

#endif #include <stdlib.h>

#include <string.h>

#include <sys/types.h> #if HAVE_UNISTD_H

#include <unistd.h>

#endif #include <curses.h> #if NCURSES_NOMACROS

#include <nomacros.h>

#endif #if HAVE_GETOPT_H

#include <getopt.h>

#else

/* 'getopt()' may be prototyped in <stdlib.h>, but declaring its variables

* doesn't hurt.

*/

extern char *optarg;

extern int optind;

#endif /* HAVE_GETOPT_H */ #ifndef GCC_NORETURN

#define GCC_NORETURN /* nothing */

#endif

#ifndef GCC_UNUSED

#define GCC_UNUSED /* nothing */

#endif #define SIZEOF(table)(sizeof(table)/sizeof(table[0])) #if defined(NCURSES_VERSION) && HAVE_NC_ALLOC_H

#include <nc_alloc.h>

#else

#define typeMalloc(type,n) (type *) malloc(n * sizeof(type))

#define typeRealloc(type,n,p) (type *) realloc(p, n * sizeof(type))

#endif #ifndef ExitProgram

#define ExitProgram(code) return code

#endif #ifndef EXIT_SUCCESS

#define EXIT_SUCCESS 0

#endif

#ifndef EXIT_FAILURE

#define EXIT_FAILURE 1

#endif /* Use this to quiet gcc's -Wwrite-strings warnings, but accommodate SVr4

* curses which doesn't have const parameters declared (so far) in the places

* that XSI shows.

*/

#ifndef NCURSES_CONST

#define NCURSES_CONST /* nothing */

#endif

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有