#include<stdio.h>
#include<curses.h>
#include<sys/time.h>
#include<signal.h>
#define MESSAGE "hello"
#define BLANK " "
int row;
int col;
int dir;
int main()
{
int delay;
int ndelay;
int c;
void move_msg(int);
initscr();
crmode();
noecho();
clear();
row = 10;
col = 0;
dir = 1;
delay = 200;
move(row,col);
addstr(MESSAGE);
signal(SIGALRM,move_msg);
set_ticker(delay);
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)
set_ticker(delay = ndelay);
}
endwin();
return 0;
}
void move_msg(int signum)
{
signal(SIGALRM,move_msg);
move(row,col);
addstr(BLANK);
col+=dir;
move(row,col);
addstr(MESSAGE);
refresh();
if(dir == -1 && col<=0)
{
dir = 1;
}
else if(dir == 1 && col+5 >= COLS)
{
dir = -1;
}
}
按照书上打出来的..
编译的时候显示
gcc bounceld.c -l curses -o bounceld
/tmp/ccK9obL1.o: In function `main':
bounceld.c:(.text+0xab): undefined reference to `set_ticker'
bounceld.c:(.text+0x11c): undefined reference to `set_ticker'
collect2: ld 返回 1
请教为什么,怎么解决
7.04的系统
[问题]一个终端里面的类似弹球程序
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 139
- 注册时间: 2007-01-01 15:36
- 来自: 河北
-
- 帖子: 139
- 注册时间: 2007-01-01 15:36
- 来自: 河北
问题已经解决了哈....原来那个函数是自己定义的...我郁闷...呵呵
代码:
#include<stdio.h>
#include<curses.h>
#include<sys/time.h>
#include<signal.h>
#define MESSAGE "hello"
#define BLANK " "
int row;
int col;
int dir;
int set_ticker(int n_msecs)
{
struct itimerval new_timeset;
long n_sec,n_usecs;
n_sec = n_msecs/1000;
n_usecs=(n_msecs%1000)*1000L;
new_timeset.it_interval.tv_sec=n_sec;
new_timeset.it_interval.tv_usec=n_usecs;
new_timeset.it_value.tv_sec = n_sec;
new_timeset.it_value.tv_usec= n_usecs;
return setitimer(ITIMER_REAL,&new_timeset,NULL);
}
int main()
{
int delay;
int ndelay;
int c;
void move_msg(int);
initscr();
crmode();
noecho();
clear();
row = 10;
col = 0;
dir = 1;
delay = 200;
move(row,col);
addstr(MESSAGE);
signal(SIGALRM,move_msg);
set_ticker(delay);
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)
set_ticker(delay = ndelay);
}
endwin();
return 0;
}
void move_msg(int signum)
{
signal(SIGALRM,move_msg);
move(row,col);
addstr(BLANK);
col+=dir;
move(row,col);
addstr(MESSAGE);
refresh();
if(dir == -1 && col<=0)
{
dir = 1;
}
else if(dir == 1 && col+5 >= COLS)
{
dir = -1;
}
}
代码:
#include<stdio.h>
#include<curses.h>
#include<sys/time.h>
#include<signal.h>
#define MESSAGE "hello"
#define BLANK " "
int row;
int col;
int dir;
int set_ticker(int n_msecs)
{
struct itimerval new_timeset;
long n_sec,n_usecs;
n_sec = n_msecs/1000;
n_usecs=(n_msecs%1000)*1000L;
new_timeset.it_interval.tv_sec=n_sec;
new_timeset.it_interval.tv_usec=n_usecs;
new_timeset.it_value.tv_sec = n_sec;
new_timeset.it_value.tv_usec= n_usecs;
return setitimer(ITIMER_REAL,&new_timeset,NULL);
}
int main()
{
int delay;
int ndelay;
int c;
void move_msg(int);
initscr();
crmode();
noecho();
clear();
row = 10;
col = 0;
dir = 1;
delay = 200;
move(row,col);
addstr(MESSAGE);
signal(SIGALRM,move_msg);
set_ticker(delay);
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)
set_ticker(delay = ndelay);
}
endwin();
return 0;
}
void move_msg(int signum)
{
signal(SIGALRM,move_msg);
move(row,col);
addstr(BLANK);
col+=dir;
move(row,col);
addstr(MESSAGE);
refresh();
if(dir == -1 && col<=0)
{
dir = 1;
}
else if(dir == 1 && col+5 >= COLS)
{
dir = -1;
}
}
目前的目标就是找个女朋友