目录

  • 一、项目描述和最终项目展示
  • 二、实现下落的小鸟
  • 三、显示小鸟和障碍物
  • 四、障碍物移动
  • 五、循环移动多个障碍物

一、项目描述和最终项目展示

通过按空格来控制小鸟的高度,来通过障碍物。

二、实现下落的小鸟

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>//全局变量
int high,width;//游戏画面大小
int bird_x,bird_y;//小鸟的坐标
int bar1_y,bar1_xDown,bar1_xTop;//障碍物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);
}void startup()//数据的初始化
{high = 15;width = 20;bird_x = 0;bird_y = width/3;
}void show()//显示画面
{gotoxy(0,0);//光标移动到原点位置,以下重画清屏int i,j;for(i=0;i<high;i++){for(j=0;j<width;j++){if((i == bird_x)&&(j == bird_y))printf("@");//输出小鸟elseprintf(" ");//输出空格}printf("\n");}
}void updateWithoutInput()//与用户输入无关的更新
{bird_x++;Sleep(150);
}void updateWithInput()//与用户输入有关的更新
{char input;if(kbhit())//判断是否有输入{input = getch();//根据用户得不同输入来移动if(input == ' ')bird_x =bird_x -2;}
}
int main()
{startup();//数据的初始化while(1){show();//显示画面updateWithoutInput();//与用户输入无关的更新updateWithInput();//与用户输入有关的更新}
}

效果图如下:

三、显示小鸟和障碍物

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>//全局变量
int high,width;//游戏画面大小
int bird_x,bird_y;//小鸟的坐标
int bar1_y,bar1_xDown,bar1_xTop;//障碍物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);
}void startup()//数据的初始化
{high = 15;width = 20;bird_x = 0;bird_y = width/3;bar1_y=width/2;bar1_xDown = high/3;bar1_xTop = high/2;
}void show()//显示画面
{gotoxy(0,0);//光标移动到原点位置,以下重画清屏int i,j;for(i=0;i<high;i++){for(j=0;j<width;j++){if((i == bird_x)&&(j == bird_y))printf("@");//输出小鸟else if( (j == bar1_y) && ((i<bar1_xDown) || (i>bar1_xTop)))printf("*");elseprintf(" ");//输出空格}printf("\n");}
}void updateWithoutInput()//与用户输入无关的更新
{bird_x++;Sleep(150);
}void updateWithInput()//与用户输入有关的更新
{char input;if(kbhit())//判断是否有输入{input = getch();//根据用户得不同输入来移动if(input == ' ')bird_x =bird_x -2;}
}
int main()
{startup();//数据的初始化while(1){show();//显示画面updateWithoutInput();//与用户输入无关的更新updateWithInput();//与用户输入有关的更新}
}

效果图如下:

四、障碍物移动

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>//全局变量
int high,width;//游戏画面大小
int bird_x,bird_y;//小鸟的坐标
int bar1_y,bar1_xDown,bar1_xTop;//障碍物
int score;//得分,经过障碍物的个数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);
}void startup()//数据的初始化
{high = 15;width = 20;bird_x = high/2;bird_y = width/3;bar1_y=width;bar1_xDown = high/3;bar1_xTop = high/2;score=0;
}void show()//显示画面
{gotoxy(0,0);//光标移动到原点位置,以下重画清屏int i,j;for(i=0;i<high;i++){for(j=0;j<width;j++){if((i == bird_x)&&(j == bird_y))printf("@");//输出小鸟else if( (j == bar1_y) && ((i<bar1_xDown) || (i>bar1_xTop)))printf("*");elseprintf(" ");//输出空格}printf("\n");}printf("得分: %d\n",score);
}void updateWithoutInput()//与用户输入无关的更新
{bird_x++;bar1_y--;if( bird_y == bar1_y ){if( (bird_x >= bar1_xDown)&& (bird_x<=bar1_xTop) )score++;else{printf("游戏失败\n");system("pause");exit(0);}}Sleep(150);
}void updateWithInput()//与用户输入有关的更新
{char input;if(kbhit())//判断是否有输入{input = getch();//根据用户得不同输入来移动if(input == ' ')bird_x =bird_x -2;}
}
int main()
{startup();//数据的初始化while(1){show();//显示画面updateWithoutInput();//与用户输入无关的更新updateWithInput();//与用户输入有关的更新}
}

效果图如下:

五、循环移动多个障碍物

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>//全局变量
int high,width;//游戏画面大小
int bird_x,bird_y;//小鸟的坐标
int bar1_y,bar1_xDown,bar1_xTop;//障碍物1
int bar2_y,bar2_xDown,bar2_xTop;//障碍物2
int score;//得分,经过障碍物的个数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);
}void startup()//数据的初始化
{high = 15;width = 50;bird_x = high/2;bird_y = width/3;bar1_y=width-20;bar1_xDown = high/3;bar1_xTop = high/2;bar2_y=width-1;bar2_xDown = high/3;bar2_xTop = high/2;score=0;system("color 09");system("title 游戏中");
}void show()//显示画面
{gotoxy(0,0);//光标移动到原点位置,以下重画清屏int i,j;for(i=0;i<=high;i++){for(j=0;j<width;j++){if((i == bird_x)&&(j == bird_y))printf("@");//输出小鸟else if( (j == bar1_y) && ((i<bar1_xDown) || (i>bar1_xTop && i<high)))//输出挡板1printf("*");else if( (j == bar2_y) && ((i<bar2_xDown) || (i>bar2_xTop && i<high)))//输出挡板2printf("*");else if( i == high)printf("-");elseprintf(" ");//输出空格}printf("\n");}printf("得分: %d\n",score);
}void updateWithoutInput()//与用户输入无关的更新
{bird_x++;bar1_y--;bar2_y--;if( bird_y == bar1_y ){if( (bird_x >= bar1_xDown)&& (bird_x<=bar1_xTop))score++;else{printf("游戏失败\n");system("pause");exit(0);}}if( bird_y == bar2_y ){if( (bird_x >= bar2_xDown)&& (bird_x<=bar2_xTop))score++;else{printf("游戏失败\n");system("pause");exit(0);}}if( bird_x==0 || bird_x == high )//挨着底部或顶部,游戏结束{printf("游戏失败\n");system("pause");exit(0);}if(bar1_y<=0){bar1_y=width;int temp = rand()%(int)(high*0.8);bar1_xDown = temp-high/10;bar1_xTop = temp+high/10; }if(bar2_y<=0){bar2_y=width;int temp = rand()%(int)(high*0.8);bar2_xDown = temp-high/10;bar2_xTop = temp+high/10; }Sleep(150);
}void updateWithInput()//与用户输入有关的更新
{char input;if(kbhit())//判断是否有输入{input = getch();//根据用户得不同输入来移动if(input == ' ')bird_x =bird_x -2;}
}
int main()
{startup();//数据的初始化while(1){show();//显示画面updateWithoutInput();//与用户输入无关的更新updateWithInput();//与用户输入有关的更新}
}

效果图如下:

项目: flappy bird相关推荐

  1. Unity快速入门之傻瓜小鸟“Flappy Bird”(三)

    目的:掌握基本2D游戏开发技巧 知识点: 1.学习UI界面的开发(UGUI) 2.循环往复简单算法 3.脚本之间的常用数据传值 4.2D游戏开发环境 5.2D精灵动画与层的设置 开发步骤 建立良好的目 ...

  2. LibGDX_8.2: LibGDX 项目实战: 开发跨平台 Flappy Bird(像素鸟)游戏

    本文链接: http://blog.csdn.net/xietansheng/article/details/50188319 LibGDX 基础教程(总目录) 声明: 游戏中使用到的图片和音频资源来 ...

  3. 【源码+图片素材】Java开发经典游戏飞翔的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java小游戏_Java初级项目_Java课程设计项目

    开发环境: jdk1.8 开发工具: IDEA JavaEE基础: 变量.数据类型.判断语句.循环结构.数组.集合.简单窗口创建.图形图片绘制.双缓存技术.事件-键盘事件.物体的碰撞检测.File [ ...

  4. Flappy Bird项目代码

    学了一段时间的Canvas 有必要实战一下,这是一套视频课程中的项目,拿来练练手,毕竟编程只看不写等于不会.就好像学汉字,总共常用的也就那几千个,每个字也都认识,学霸们能够写出大作,学渣们却连一篇像样 ...

  5. JAVA项目:Java实现飞扬的小鸟(Flappy Bird)

    飞扬的小鸟(Flappy Bird) 需求描述 游戏加载完毕点击界面即可开始游戏. 鼠标点击控制小鸟飞行,或者通过键盘控制小鸟的前后上下也可以,不要撞到管道哦! 控制好小鸟越过障碍飞得更远,获得更高的 ...

  6. 人形图案c语言程序_做游戏,学编程(C语言) 7 学习EasyX图形交互功能----flappy bird源代码...

    经过之前的学习,我们基本掌握了开发小游戏所需要的语法知识和搭建方法,但是基础C语言的可视化与交互功能实在是太弱了 . 利用免费的EasyX插件,我们可以快速上手,简单实现很酷的视觉效果 . EasyX ...

  7. flappy bird游戏源代码揭秘和下载后续---移植到android真机上

    前言:         上一篇博客 flappy bird游戏源代码揭秘和下载,源码是运行在window或者mac系统上的,现在我们需要把代码移植到android真机上,让小鸟在手机里飞起来! ps: ...

  8. 【教程】HTML5+JavaScript编写flappy bird

         作者: 风小锐      新浪微博ID:永远de风小锐      QQ:547953539      转载请注明出处 PS:新修复了两个bug,已下载代码的同学请查看一下 大学立即要毕业了. ...

  9. Flappy bird需求规格说明书

    1.引言     1.1.编写目的 该需求分析为说明书通过对<flappy bird>游戏软件的客户需求分析,明确了所要开发的游戏软件的功能以及界面等的处理,从而使小组成员更清楚的了解用户 ...

最新文章

  1. Javascript 获取Url值 --转
  2. 自然语言交流系统 phxnet团队 创新实训 个人博客 (二)
  3. logincontroller.java_使用HuTool工具类,实现登录验证码
  4. 【任务脚本】2020双十一活动小结,京东活动依旧始终良心
  5. php socket传递cookie,PHP Websocket在测试中验证用户(传递会话cookie)
  6. (十二)深入浅出TCPIP之Nagle算法
  7. ncl 添加点shp文件_基于Arcgis绘制采样点地图
  8. Ngrok让你的本地Web应用暴露在公网上
  9. 别忘了我的世界有你存在
  10. #879273#基于django/neo4j的通讯录与QQ好友关系管理系统
  11. java项目调用webservice_JAVA程序调用Webservice接口
  12. MATLAB学习笔记(二)——M文件
  13. 华为存储iscsi配置_使用华为存储配置ISCSI存储方法和iSCSI建立连接提示目标错误...
  14. 【电商界的屠龙者-拼多多】——“拼多多”竞品分析
  15. LED屏幕上轮流显示三色条纹、彩虹、四叶草(数组与内存映射的采用)
  16. libusb函数说明
  17. 查看表空间已使用和剩余空间大小
  18. 如何长高青春期后 - 两个简单而成功的方法
  19. 嵌入式linux开发,交叉编译qt4.8.5报错:not found (try using -rpath or -rpath-link)/home/ms/work/code/qt/opensourc
  20. 马斯克将于8月推出Autopilot新版本,实现全自动驾驶

热门文章

  1. WebStorm 使用经验
  2. 【bzoj3884】上帝与集合的正确用法 扩展欧拉定理
  3. C#, CLR, and .NET Framework versions
  4. Java解析HTML
  5. Oracle 游标(cursor) 说明
  6. 关于VC单选按钮不能设置变量以及Group属性的设置问题
  7. STM8L编程环境官方库+STVD+COSMIC+ST-Link
  8. AB1601安装新版本IDE后工程编译可以通过单无法连接的问题排查解决过程
  9. AB1601中volatile的使用
  10. Developing a blockchain framework for the automotive supply chain: A systematic review 汽车供应链区块链