使用devc++编写的,devc++可完美运行
建议设计步骤:
实现小鸟加速下落——>实现小鸟按键上升——>实现障碍物移动出现——>实现小鸟碰撞障碍物时游戏结束——>实现障碍物循环出现

#include<stdio.h>
#include<conio.h>
#include<windows.h>
int bird_x,bird_y,score;
int width,birdup;
double high;
int block_x,block1_y,block2_y;
int bar_x,bar1_y,bar2_y;
int flag;
void hidecursor(){//隐藏光标 CONSOLE_CURSOR_INFO cursor_info={1,0};//第二个值为0表示隐藏光标 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void gotoxy(int x,int y){//将光标移到(x,y)位置 HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X=x;pos.Y=y;SetConsoleCursorPosition(handle,pos);
}
startup(){hidecursor();high=20;width=30;bird_x=width/2;bird_y=high/2;birdup=2;//每次按键小鸟上升的距离 block1_y=5;/*上障碍物*/block2_y=10;/*下障碍物*/ block_x=width/2+3;bar1_y=6;bar2_y=12;bar_x=width;
}
void show(){int i,j;gotoxy(0,0);for(i=0;i<high;i++){for(j=0;j<width;j++){if(i==bird_y&&j==bird_x)//输出小鸟 printf("@");else if(j==block_x&&(i<=block1_y||i>=block2_y))//输出第一个障碍物 printf("*");else if(j==bar_x&&(i<=bar1_y||i>=bar2_y))//输出第二个障碍物 printf("*");else printf(" ");}printf("\n");}printf("得分:%d\n",score);
}
void updatewithinput(){char input;if(kbhit()){input=getch();if(input==' '){flag=1;bird_y-=birdup;}}}
void updatewithoutinput(){//小鸟穿过障碍物 if(block_x-1==bird_x){if(block1_y>=bird_y||block2_y<=bird_y){printf("Game Over!\n");system("pause");}else score++;} if(bar_x-1==bird_x){if(bar1_y>=bird_y||bar2_y<=bird_y){printf("Game Over!\n");system("pause");}else score++;}//当小鸟落出屏幕时游戏也失败 if(bird_y>high){printf("Game Over!\n");system("pause");}    //使小鸟无法飞出屏幕顶部 if(bird_y<=0){bird_y=0;bird_y++;}//实现障碍物的移动 if(block_x>=0)block_x--;if(block_x<0){block_x=width;int temp=rand()%(int)(high*0.8);block1_y=temp-high/10;block2_y=temp+high/10;}if(bar_x>=0)bar_x--;if(bar_x<0){bar_x=width;int temp=rand()%(int)(high*0.8);bar1_y=temp-high/10;bar2_y=temp+high/10;}//实现小鸟受重力加速下落 static int time;if(flag==1){time=0;flag=0;}time++;if(bird_y>0){bird_y++;if(time>=0&&time<=3)Sleep(500);else if(time>3&&time<=5)Sleep(300); else if(time>5&&time<=7)Sleep(200);else Sleep(100);}
}
int main(){startup();while(1){show();updatewithoutinput();updatewithinput();}return 0;
}

C语言游戏编程之flappy birds相关推荐

  1. c/c++游戏编程之用Easyx封装按钮

    c/c++游戏编程之Easyx图形库基础(一) EasyX基础 c/c++游戏编程之Easyx图形库基础(二) 绘制图片 c/c++游戏编程之Easyx图形库基础(三) 用Easyx封装按钮 文章目录 ...

  2. python之torchlight使用_python游戏编程之pgzero使用介绍

    Pgzero是在pygame基础上封装的一个简化版本软件包,使得在python环境下进行游戏编程更加简单.适合于入门学习者. 怎么用 开发一款简单的小游戏,我们可能会立刻想到以下几个要素: 1. 创建 ...

  3. 我的u3d游戏编程之路

    因为最近进行求职的缘故,需要一个地方来show自己的所学所用.并非所有的求职网站都有相应的作品展示区域,因此选择了在csdn完成作品的展示.在这里只展示部分在我编程过程中完成的难点问题.有些东西也只是 ...

  4. mql4 c语言,MT4编程之MQL4编程语言介绍

    语言介绍 MetaQuotes Language 4 (MQL4) 是一种新的内置型程序用来编写交易策略. 这种语言可以创建你自己的智能交易,使自己的交易策略能够完全自动地执行.而且,MQL4 还能自 ...

  5. 球球大作战Java编写_Unity经典游戏编程之:球球大作战

    版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客&qu ...

  6. Unity经典游戏编程之:球球大作战

    版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客&qu ...

  7. Libgdx游戏编程之Touchpad摇杆控制角色行走

    先上效果: 以下素材来源网络,人物只有4向行走,遥感的图片就没有打包了,人物行走的用GDX Texture Packer打成atlas文件. 创建touchpad的代码 Touchpad.Touchp ...

  8. 瓷砖覆盖地板c语言程序,编程之美4.2 瓷砖覆盖地板

    题目 这个题目的题意很容易理解,在一个N*M的格子里,我们现在有两种类型的 砖块,1 * 2 和 2 * 1,问一共有多少种方案,可以将整个N*M的空间都填满. 最简单的例子就是下面的了: 编程之美中 ...

  9. 网络编程多人聊天c语言,网络编程之TCP多人聊天

    服务端转发信息: from socket import * from threading import Thread sockets=[] def main(): server_socket=sock ...

  10. 易语言编程之CE过驱动保护(ACE)调试教程

    易语言编程之CE过驱动保护(ACE)调试 很多时候,驱动保护很让人头疼, 一用CE,就提示开了程序要结束, 你一搜到地址鼠标右键想看看访问和写入的代码地址,找基址时候,游戏就退出了, 这个教程教你 可 ...

最新文章

  1. java 2d划线 刷子_Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO2DGRAPHICS)...
  2. java filewriter_Java基础篇:什么是FileWriter
  3. 监控可以解决互联网骨干网问题吗?—Vecloud微云
  4. access exex控制pc_ownCloud/Nextcloud文件访问控制(Files Access Control)
  5. android使用post方法登录,使用REST API使用POST方法在Android中登录示例
  6. php 使用上传文件预览插件,bootstrap fileinput插件实现预览上传照片功能方法详解...
  7. js鼠标禁止右键、复制粘贴代码
  8. 国标 计算机机房,机房建设国家标准
  9. nsis检测vc2013运行环境vcredist_x86.exe是否已经安装
  10. Windows Server 2012 R2 安装IIS
  11. Android个人日记本开发背景,毕业设计(论文)-手机app移动开发论文个人心情日记本的设计实现 .doc...
  12. python生成三维点云包围盒
  13. FPGA自学:利用D触发器实现分频
  14. java添加java_home环境变量_如何正确设置jdk环境变量JAVA_HOME?
  15. 中级java面试问题大全及答案大全
  16. vue实现农历日期选择器
  17. #655 – 冒泡事件可能会被某些控件屏蔽(Bubbling Mouse Events Swallowed by Some Controls)
  18. python调试程序的方法_调试Python程序的四种方法
  19. 360应用宝上架流程及所需材料
  20. for循环语句执行顺序

热门文章

  1. 维京小队3dm中文版|维京小队中文免安装版
  2. vue-pdf插件实现PDF预览功能
  3. 第九课堂:人人都可以当老师
  4. Ensemble查看基因的外显子信息,并根据染色体位点判断是第几号外显子
  5. 依图科技暑期实习生面试经验
  6. 行列式的计算机应用结题报告,行列式计算开题报告(共10篇).doc
  7. 数学矩阵与行列式在计算机的应用,数学与应用数学 矩阵的应用.doc
  8. 数字孪生技术在交通运输领域管理应用【案例解析】
  9. 零零后Java架构师斗胆挑战下一个传智播客,你怎么看?
  10. FTPserver 配置