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的更多相关文章
随机推荐
- Apache本地配置多域名
第一步:打开本地系统安装目录,进入目录C:\Windows\System32\drivers\etc找到一个叫hosts文件,用记事本打开,在文件结尾加入以下代码: 127.0.0.1 www.tes ...
- Python之路----------生成器
一.列表生成式 想想如何创建一个列表[0,1,2,3,4,5] l = [0,1,2,3,4,5] 如果上面的列表元素足够多的话,是不是会写很多代码?看看列表生成式怎么写 #列表生成式 l = [x ...
- Zookeeper:通过yarn实现大型分布式管理系统
http://www.cnblogs.com/leesf456/p/6063694.html
- SCRUM 流程的步骤2: Spring 计划
1. product backlog. 2. 把故事进一步拆分成任务. 5. 形成Sprint backlog. Scrum master隆重登场,组织大家按照SCRUM流程,步步为营顺利开展工作 ...
- poj 3262 Protecting the Flowers
http://poj.org/problem?id=3262 Protecting the Flowers Time Limit: 2000MS Memory Limit: 65536K Tota ...
- TortoiseGit上传项目到GitHub////////////////////////////z
1.安装msysgit和TortoiseGit : 2.TortoiseGit 设置: (1).确保安装成功: (2).设置用户名和邮箱: 3.登陆github并进入设置页面: 4.添加 SSH Ke ...
- Python对时间的转换
1.将字符串的时间转换为时间戳 方法: a = "2013-10-10 23:40:00" 将其转换为时间数组 import time timeArray = time.strpt ...
- java基础复习:final,static,以及String类
2.final 1)为啥String是final修饰的呢? 自己答: 答案: 主要是为了“效率” 和 “安全性” 的缘故.若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所 ...
- mysql索引的使用和优化
参考: http://blog.csdn.net/xluren/article/details/32746183 http://www.cnblogs.com/hustcat/archive/2009 ...
- 将.NET dll注册到GAC(Global Assembly Cache)中
当发现有多个解决方案引用一个dll时,为了不重复引用所以将.net的一个dll注册到GAC中去. gacutil.exe. 记得使用管理员权限打开 开始菜单-Microsoft Visual Stud ...