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的更多相关文章
随机推荐
- Magento后台简单更换favicon.ico
刚才需要更换网站的favicon.ico,就是浏览器url前面的那个小图标. 网上稍微搜搜一下,然后就震惊了,号多方法是替换文件的方法,而且文件散步在网站的各个角落. 其实,后台是有直接上传更换的方法 ...
- maven编译报错 -source 1.5 中不支持 lambda 表达式
在用maven编译项目是由于项目中用了jdk 1.8, 编译是报错 -source 1.5 中不支持 lambda 表达式,Google找到这篇解决方案,记录一下: 编译时报如下错误: [ERROR ...
- 设计一个程序,程序中有三个类,Triangle,Lader,Circle。
//此程序写出三个类,triangle,lader,circle:其中triangle类具有类型为double的a,b,c边以及周长,面积属性, //具有周长,面积以及修改三边的功能,还有判断能否构成 ...
- JSP三大指令、七大动作、九大对象
<%---------------------- JSP三大指令 -----------------------------%><%-- 1. page: language impo ...
- poj 3254 Corn Fields
http://poj.org/problem?id=3254 Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissio ...
- HDU - 1232 畅通工程
Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道 ...
- html5,增加flash插件
<embed src="2.swf" type="" width="500" height="" >< ...
- C# 不重复的随机数
public int RabdomNumber() { num = new Random(Guid.NewGuid().GetHashCode()).Next(0, 40); return num; ...
- Android例子源码非第三方实现根据字母排序的城市列表
values 下dimens.xml <resources> <!-- Default screen margins, per the Android Design guidelin ...
- HBase完全分布模式安装
假设Hadoop已经成功安装. 实验环境如下: centos 6.4 hadoop-0.20.2 hbase-0.90.5 用户名root hadoop安装目录:/root/bin/had ...