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的更多相关文章
随机推荐
- 使用T4模板生成代码的学习
之前做项目使用的都是Db First,直接在项目中添加Entity Framework,使用T4模板(T4模板引擎之基础入门)生成DAL BLL层等(T4模板是一个同事给的,也没有仔细研究,代码如下: ...
- Xcode 运行cocos2dx弹出内部错误对话框(Internal Error)
cocos2dx未捕获的异常升高.选择"继续"继续运行在一个不一致的状态.选择"崩溃"停止应用和崩溃报告一个错误文件. 莫名其妙,代码没有报错,运行时却弹出(内 ...
- bindOrg函数
@param params {userId 用户ID, orgcode 机构代码, defaultOrgcode 默认机构代码, defaultOcid 默认银行代码, flag 1=取所有中心(默认 ...
- Node.js的特点
作为后端JavaScript的运行平台,Node保留了前端JavaScript中些熟悉的接口,没有改写语言本身的任何特性,依旧基于作用域和原型链,区别在于它将前端中广泛应用的思想作用到了服务器端.下面 ...
- yii框架的增删改查
一.新增 使用model::save()操作进行新增数据 $user= new User; $user->username =$username; $user->password =$pa ...
- Unity Mono IDE Setting
Mac: 修改快捷键 删除一整行 Delete Entire Line Command+D Format Document Shift+Command+F 在文件中查找 Fin in Fil ...
- 向Android模拟器中批量导入通讯录联系人
使用adb命令向Android模拟器中批量导入通讯录联系人的方法: 使用adb提供的命令, 可以非常方便地从PC中将通讯录批量导入android模拟器中. 首先要先准备好固定格式的vcf文件, 该文件 ...
- 在IE下,如果在readonly的input里面键入backspace键,会触发history.back()
在IE下,如果在readonly的input里面键入backspace键,会触发history.back(), 用以下jQuery代码修正之 $("input[readOnly]" ...
- js实现文件上传
js function UpladFile() { var fileObj = document.getElementById("filetes").files[0]; // 获取 ...
- iptables四个表与五个链间的处理关系
转载自:http://www.linuxidc.com/Linux/2012-08/67505.htm netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加.编辑 ...