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的更多相关文章
随机推荐
- [CC]获取ScalarField的值
//根据字段滤波void MainWindow::doActionFilterByValue() ReferenceCloud* ManualSegmentationTools::segment(Ge ...
- python之面向对象编程
1.面向对象介绍: 世界万物,皆可分类 世界万物,皆为对象 只要是对象,就肯定属于某种类 只要是对象,就肯定有属性 2. 面向对象的几个特性: class类: 一个类即对一类拥有相同属性的对象的抽象, ...
- noi 1.5 43:质因数分解
描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 输入只有一行,包含一个正整数 n.对于60%的数据,6 ≤ n ≤ 1000.对于100%的数据,6 ≤ n ≤ 2*10^ ...
- DIY PIXHAWK APM等飞控用的PPM转接板
需要的硬件 一块arduino pro mini(推荐这个,比较小,当然如果你没有USB转转口的烧写工具买个ardunio nano板也是不错的,直接用USB线连接电脑就可以,用nano板要注意.它的 ...
- deep learning...深入学习深度学习 --工具篇
Caffe( http://caffe.berkeleyvision.org/ )是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清( http://daggerfs.c ...
- msysgit之git bash方便的复制粘贴,默认工作目录,窗口大小,提高速度等小窍门
桌面图标点鼠标右键,选择属性,修改工作目录到自己的git目录: 打开快速编辑,这时候鼠标左键可以随意选取文本,enter键复制.鼠标右键是粘贴.另外,粘贴的快捷键是 inerst键 修改默认窗口大小 ...
- MS SQL 两种分页
------ row number ---------- ------ row number ---------- declare @pageSize int,@pageIndex int ; sel ...
- Windows Phone 十五、HttpWebRequest
Windows 运行时中支持网络资源访问的对象:HttpWebRequest 对象 发送 GET/POST 请求,HttpHelper 封装,超时控制. HttpClient 对象 发送 GET/PO ...
- 夺命雷公狗----Git---5---分支
git分支的概念相当于是添加一个属于自己的分支,别人是看不到的,等你写完自己的程序到时候在合并到团队的分支上即可.... 我们可以查看自己git里面有什么分支,如下所示: git branch 在这里 ...
- JavaScript界面传值与前后台互调
话说曾在校时,前端的第一门课程HTML静态网页设计,其老师,真是应了他的名字: 路遥知马力. 整个学期硬是全部在 Dreamwear 中进行拖拽控件来教学,未曾教授一句代码.成功忽悠了全体学生,课上一 ...