[问题]一个终端里面的类似弹球程序

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
xbl
帖子: 139
注册时间: 2007-01-01 15:36
来自: 河北

[问题]一个终端里面的类似弹球程序

#1

帖子 xbl » 2007-10-17 22: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 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的系统
上次由 xbl 在 2007-10-18 12:21,总共编辑 1 次。
目前的目标就是找个女朋友
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

#2

帖子 windwiny » 2007-10-17 23:07

找不到函数定义。。。 那个 -l 中间不要有空格吧
xbl
帖子: 139
注册时间: 2007-01-01 15:36
来自: 河北

#3

帖子 xbl » 2007-10-18 12:20

问题已经解决了哈....原来那个函数是自己定义的...我郁闷...呵呵
代码:
#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;
}
}
目前的目标就是找个女朋友
回复