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

📄 tbounce1d.c

📁 unix linux 编程实践源代码
💻 C
字号:
/* tbounce1d.c: controlled animation using two threads  *	note	one thread handles animation *		other thread handles keyboard input *	compile	cc tbounce1d.c -lcurses -lpthread -o tbounce1d */#include	<stdio.h>#include	<curses.h>#include	<pthread.h>#include	<stdlib.h>#include	<unistd.h>/* shared variables both threads use. These need a mutex. */#define	MESSAGE	" hello "int	row;	/* current row		*/int	col;	/* current column	*/int	dir;	/* where we are going	*/int	delay;	/* delay between moves	*/main(){	int	ndelay;		/* new delay		*/	int	c;		/* user input		*/	pthread_t msg_thread;	/* a thread		*/	void	*moving_msg();	initscr();		/* init curses and tty	*/	crmode();	noecho();	clear();	row   = 10;		/* start here		*/	col   = 0;	dir   = 1;		/* add 1 to row number	*/	delay = 200;		/* 200ms = 0.2 seconds  */	if ( pthread_create(&msg_thread,NULL,moving_msg,MESSAGE) ){		fprintf(stderr,"error creating thread");		endwin();		exit(0);	}	while(1) {		ndelay = 0;		c = getch();		if ( c == 'Q' ) break;		if ( c == ' ' ) dir = -dir;		if ( c == 'f' && delay > 2 ) ndelay = delay/2;		if ( c == 's' ) ndelay = delay * 2 ;		if ( ndelay > 0 )			delay = ndelay ;	}	pthread_cancel(msg_thread);	endwin();}void *moving_msg(char *msg){	while( 1 ) {		usleep(delay*1000);	/* sleep a while 	*/		move( row, col );	/* set cursor position	*/		addstr( msg );		/* redo message		*/		refresh();		/* and show it		*/		/* move to next column and check for bouncing	*/		col += dir;		/* move to new column	*/		if ( col <= 0 && dir == -1 )			dir = 1;		else if (  col+strlen(msg) >= COLS && dir == 1 )			dir = -1;	}}

⌨️ 快捷键说明

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