这又是一个安静的午后,于是,故事开始了

可能我们小时候都玩过这样一种游戏:

开居一只鸟,装备。。。额扯远了。。

就是有这样一只疯狂的小鸟,在大街小巷中飞行,不扑打翅膀的话,就会以一定的速度向下掉,当碰上前方来得障碍物时候,就会die,
所以我们就叫他笨鸟吧,所以游戏名字也就是笨鸟先飞(滑稽)

列一个大概的框架

#include<iostream>
#include<cstdlib>
#include<conio.h>
#include<windows.h>    //  gotoxy 和HideCursor的头文件

show函数进行初始化

void show()//开始的初始化(达到循环显示的目的)
{gotoxy(0,0) ;HideCursor()   ;for(int i=1;i<y;++i){for(int j=1;j<x;++j){if(j==birdx&&i==birdy){cout<<"\b"<<"鸟"; //\b的作用是因为输出的汉字多占了一个大小的空间,\b删除之前一个位置的输出}else if(j==xx&&(i>=1&&i<=yy)||j==xx&&(i>=yy+5&&i<=y))cout<<"*" ;elsecout<<" ";}cout<<endl;}cout<<"得分:"<<count/6<<endl;}

\b的作用是因为输出的汉字多占了一个大小的空间,\b删除之前一个位置的输出就是删除多输出的哪个空格

和输入有关的,就一个用空格控制的笨鸟扑打翅膀(hhh)

void in()
{if(kbhit())
{string ss;ss=getch();if(ss==" "){if(birdy>3)birdy-=3;}}
}

而鸟的下落以及障碍物盗来的速度放在了和输入无关的函数中

void notin()  //改变小鸟的位置和障碍物的位置
{if (birdx==xx&& (birdy>=yy&&birdy<=yy+5))count+=1;if(speed!=3){speed++;}if(birdy!=y&&speed==3){birdy+=1;speed=0;}if(speed2!=5){speed2++;}else if(speed2==5){if(xx>0){xx--;}if(xx==0){xx=x/2;//障碍物的x坐标yy= rand()%(y/2);while(yy==0){yy= rand()%(y/2);}}speed2=0;}

speed和speed2分别控制小鸟下落的速度和障碍物的速度,是用一种循环到某个值才进行一个操作,然后再清零speed和speed2来控制速度的,就比较巧妙(滑稽)
而`

void gotoxy(int x,int y){HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X=x;pos.Y =y;SetConsoleCursorPosition(handle,pos);
}
void HideCursor()
{CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}

gotoxy分别用来控制命令行的光标(清屏)和隐藏光标(也就是光标不闪烁)的作用

那么那么,完整的程序是:

#include<iostream>
#include<cstdlib>
#include<conio.h>
#include<windows.h>
using namespace std;
int x=50;  //边界的x和y
int y=20;
int birdx=x/5;
int birdy=y/4;
int speed=0;//控制速度
int speed2=0;//控制障碍物的来临速度
int xx=x/2;//障碍物的x坐标
int yy= rand()%(y/2);int count=0;//记录笨鸟的得分void notin();
void in();
void gotoxy(int x,int y){HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X=x;pos.Y =y;SetConsoleCursorPosition(handle,pos);
}
void HideCursor()
{CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void show()//开始的初始化(达到循环显示的目的)
{gotoxy(0,0) ;HideCursor()   ;for(int i=1;i<y;++i){for(int j=1;j<x;++j){if(j==birdx&&i==birdy){cout<<"\b"<<"鸟"; //\b的作用是因为输出的汉字多占了一个大小的空间,\b删除之前一个位置的输出}else if(j==xx&&(i>=1&&i<=yy)||j==xx&&(i>=yy+5&&i<=y))cout<<"*" ;elsecout<<" ";}cout<<endl;}cout<<"得分:"<<count/6<<endl;}
void in()
{if(kbhit())
{string ss;ss=getch();if(ss==" "){if(birdy>3)birdy-=3;}}
}
void notin()  //改变小鸟的位置和障碍物的位置
{if (birdx==xx&& (birdy>=yy&&birdy<=yy+5))count+=1;if(speed!=3){speed++;}if(birdy!=y&&speed==3){birdy+=1;speed=0;}if(speed2!=5){speed2++;}else if(speed2==5){if(xx>0){xx--;}if(xx==0){xx=x/2;//障碍物的x坐标yy= rand()%(y/2);while(yy==0){yy= rand()%(y/2);}}speed2=0;}}
int main()
{while(yy==0)
{yy= rand()%(y/2);
}while(1)
{show();notin();in() ;if(birdx==xx&&(((birdy>1&&birdy<yy))||(birdy >yy+5&&birdy<y)))
{cout<<"YOU ARE FILLED!!"<<endl;break;
}}return 0;
}

程序的运行结果:

当然还有许多可以改进的地方,比如可以做很多个障碍物,我们只要保证每个障碍物距离间隔相同的情况下,多生成几个障碍物,或者也可以加入wsad来控制丝丢皮得(放洋屁)的小鸟的位置,来增加一些可玩性,赶紧赶紧试试吧hhh(建议全屏食用yes)

c++小游戏:笨鸟先飞(Flappy bird hhh)相关推荐

  1. 【小游戏】Flappy bird

     Flappy bird 这么简单大家应该都会,不多说了,上代码!!! ​ #include<stdio.h> #include<stdlib.h> #include<c ...

  2. Java实战小游戏《flapper Bird》完整版,含源码

    Flapper Bird 目录 一.前言 二.素材准备 1.背景图片 2.背景音乐 三.建立工程 四.代码实现 1.小鸟类 2. 地面类 3.  柱子类 4.  音乐类 5. 游戏类 五.效果展示 六 ...

  3. 游戏:Flappy Bird[飞行的鸟](C++)1.1

    不多废话,奉上代码: #include<iostream> #include<stdio.h> #include<ctime> #include<window ...

  4. 游戏:Flappy Bird[飞行的鸟](C++)2.0

    前言: 不知道大家怎么看待"环保"二字. 随着工业化的发展,我们似乎逐渐忽略了"环保". 我们对环保的忽略,有意无意之间,或许并没有对我们造成直接影响, 但是对 ...

  5. 使用canvas写一个flappy bird小游戏

    简介 canvas 是HTML5 提供的一种新标签,它可以支持 JavaScript 在上面绘画,控制每一个像素,它经常被用来制作小游戏,接下来我将用它来模仿制作一款叫flappy bird的小游戏. ...

  6. python之flappy bird(飞扬的小鸟)小游戏分享,内附源码哦~

    导语: 哈喽,哈喽~今天小编又来分享小游戏了--flappy bird(飞扬的小鸟),这个游戏非常的经典,游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍.这个游戏能对于小编来说还是有点 ...

  7. 「越南小鸟」被迫下架,「反人类」小游戏成游戏业「嘲笑鸟」

    爆红的手机小游戏<Flappy Bird>(下坠的小鸟)应该是越南程序猿阮哈东给整个游戏产业开了个玩笑,这款因为极度简单.却又极度难玩的小游戏,在2月9日晚间,宣布将在22个小时内下线,阮 ...

  8. 【强化学习】----训练Flappy Bird小游戏

    文章目录 一.游戏介绍与问题定义 1.1 游戏简介 1.2 问题定义 二.算法介绍 2.1 预处理 2.1.1 去除背景颜色 2.1.2 灰度处理 2.2 Q-Learning 2.3 神经网络 2. ...

  9. 做游戏,学编程(C语言) 4 flappy bird

    在学习数组之前,我们再做一个好玩的游戏:flappy bird.大家可以按照上一个教程中空战游戏的思路,先按照我们的提示,逐步地实现,如果有困难,再参考我们分步骤的代码,这样的锻炼效果最好. 备注:# ...

  10. 用Phaser来制作一个html5游戏——flappy bird (一)

    用Phaser来制作一个html5游戏--flappy bird (一) Phaser是一个简单易用且功能强大的html5游戏框架,利用它可以很轻松的开发出一个html5游戏.在这篇文章中我就教大家如 ...

最新文章

  1. Flask的快速入门详细笔记
  2. Web跨浏览器进程通信
  3. 第三十一篇:SOUI布局之相对于特定兄弟窗口
  4. mknod创建设备(加载新的设备驱动时候,通常会用到此命令)
  5. Angular中路由的嵌套-父子路由
  6. 有人说华为最大的对手是5年后的小米,你怎么看?
  7. go语言 expected ; found a
  8. 打不开磁盘“D:\CentOS7\CentOS7.vmdk”或它所依赖的某个快照磁盘。
  9. jdbc获取mysql第二行表信息_【奇技淫巧】MySQL另类方法获取元数据信息
  10. ***书架上出现频率最高的9部半书籍
  11. oracle和db2之间的基本差别
  12. 【C#】WM 消息大全
  13. Java JDK 8 32位下载
  14. hiveserver2 清理hdfs的临时目录
  15. 数据结构的小知识点(初学者使用)“朝闻道”知识分享大赛
  16. 怎么登录163邮箱?TOMvip邮箱登录详情介绍
  17. 强化学习蘑菇书Easy RL 第四五章
  18. 数据分析的统计基础(上)
  19. 少侠,看你骨骼惊奇,传你几招IT武林绝技,可好?
  20. 信息学奥赛一本通(c++):1157:哥德巴赫猜想

热门文章

  1. 第二课: 雷电模拟器的多开和打开
  2. html、css 实现网页弹出层
  3. Diabetes Care:西湖大学郑钜圣等机器学习揭示影响2型糖尿病的肠道菌群特征
  4. Android反编译查看源文件
  5. 吊销 BTChina 营业执照”后元旦之前可能相继落马的“影视下载”网站名单
  6. linux改d5000默认路径,linux相关指令和d5000基础操作.pdf
  7. linux 文件 内容 并集,Linux 两个文件求交集、并集、差集
  8. Android OpenGL ES 2.0(六)--- 纹理过滤
  9. 基于搜狗新闻语料库的词向量模型训练(Windows下)
  10. 视频格式转换器如何将腾讯QLV格式转换成MP4视频文件