BirdError
//#include<curses.h>
#include<stdlib.h>
#include<signal.h>
#include<time.h>
#define CHAR_BIRD '0'//表示bird
#define CHAR_STONE '*'//表示背景的柱子
#define CHRR_BLANK ' '
/*
**链表表示柱子
*/
typedef struct node
{
int x,y;
struct node *next;
}node,*Node;//node表示结构体数据,Node表示结构体指针类型
Node head,tail;
int bird_x,bird_y;
int ticker;
/**
*函数声明
*/
void init();
void init_bird();
void init_draw();
void init_head();
void init_wall();
void drop(int sig);
int set_ticker(int n);
int set_ticker(int n_msec)
{
struct itimerval timeset;
long n_sec,n_usec;
n_sec = n_msec/;
n_usec = (n_msec%)*1000L;
timeset.it_interval.tv_sec = n_sec;
timeset.it_interval.tv_usec = n_usec;
timeset.it_value.tv_sec = n_sec;
timeset.it_value.tv_usec = n_usec;
return setitimer(ITIMER_REAL,×et,NULL);
}
void drop(int sig)
{
int j;
Node tmp,p;
move(bird_y,bird_x);
addch(CHAR_BLANK);
refresh();
bird_y++;
move(bird_y,bird_x);
addch(CHAR_BIRD);
refresh();
if((char)inch()==CHAR STONE)
{
set_ticker();
sleep();
endwin();
exit();
}
p=head->next;
)
head->next= p->next;
free(p);
tmp = malloc(sizeof(node));
tmp->x = ;
do
{
tail->next = tmp;
tmp->next = NULL;
tail = tmp;
ticker-=;
set_ticker(ticker);
}
for(p = head->next;p->next!=NULL;p->x--,p=p->next>
{
;j<p->y;j++)
move(j,p->x);
addch(CHAR_STONE);
refresh();
}
;j<=;j++)
{
move(j,p->x-);
addch(CHAR_STONE);
refresh();
}
}
}
tail->x--;
}
int main()
{
char ch;
init();
)
{
ch = getch();
if(ch==' '||ch=='w'||ch=='W')
{
move(bird_y,bird_x);
addch(CHAR_BLANK);
refresh();
bird_y--;
move(bird_y,bird_x);
addch(CHAR_BIRD);
refresh();
if((char)inch()==CHAR_STONE)
{
set_ticker();
sleep();
endwin();
exit();
}
}
else if(ch=='z'||ch=='z')
{
set_ticker();
do
{
ch= getch();
}
while(ch!='q'||ch=='Q')
{
sleep();
endwin();
exit();
}
}
;
}
void init()
{
initscr();
cbreak();
noecho();
cur_set();
srand(time());
signal(SIGLRM,drop);
init_bird();
init_head();
init_wall();
init_draw();
sleep();
ticker=;
set_ticker(ticker);
}
void init_bird()
{
bird_x = ;
bird_y = ;
move(bird_y,bird_x);
addch(CHAR_BIRD);
refresh();
sleep();
}
void init_head()
{
Node tmp,p;
p=head;
;i<=;i+=)
{
tmp = malloc(sizeof(node));
tmp->x=i;
do
{
tmp->y = rand()%;
}
);
p->next=tmp;
tmp->next =NULL;
p=tmp;
}
tail = p;
}
void init_draw()
{
Node p;
int i,j;
for(p= head->next;p->next!=NULL;p->next)
{
;i--)
{
;j<p->y;j++)
{
move(j,i);
addch(CHAR_STONE);
refresh();
}
;j<=;j++)
{
move(j,i);
addch(CHAR_STONE);
refresh();
}
}
sleep();
}
}
BirdError的更多相关文章
随机推荐
- sql server 数据库 日期格式转换
日期时间转字符串:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), ...
- OpenCV整体的模块架构
之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构后,再重点学习自己感兴趣的部分的话,就会有一览众山小的感觉,于是,就决定写出这篇文章,作为启程OpenCV系列博文的第二 ...
- php开发客服系统(持久连接+轮询+反向ajax 转载 http://www.tuicool.com/articles/2mU7v2R)
php开发客服系统( 下载源码 ) 用户端(可直接给客户发送消息) 客服端(点击用户名.即可给该用户回复消息) 讲两种实现方式: 一:iframe + 服务器推技术comet(反向ajax,即服务器向 ...
- 谁也无法挡住我访问Google---使用Nginx反向代理攻略
展示最终成果: 浏览器打开 http://www.manda13.com/(慢搭搜索)这个是自己搭建的百度网盘搜索,欢迎测试 点击右上角“原版Google”,就可以访问Google. 是不是很方便. ...
- Ubuntu常用软件安装
1.好用的截图Shutter,sudo apt-get install shutter
- (temp)catch ip
String str = "192.168.1.100"; String[] ipStr = str.split("\\."); ]; ; i < ; i ...
- SQL Server 2008连接字符串写法大全
一..NET Framework Data Provider for SQL Server 类型:.NET Framework类库使用:System.Data.SqlClient.SqlConnect ...
- js 小数相加
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...
- html与Android——webView
1 <html> 2 <head> 3 <title>myHtml.html</title> 4 5 <meta http-equiv=" ...
- python opencv 实现Reinhard颜色迁移算法
Reinhard颜色迁移算法的过程很简单,流程如下,细节部分见原文,题目为color transfer between images: 将参考图片和目标图片转换到LAB空间下 得到参考图片和目标图片的 ...