正式版的飞扬的小鸟能基本完成一个游戏需要的流程,能输出分数,除了一些小瑕疵,基本上可以正常的推出了,代码如下:

#include<iostream>
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>#define BGIMAGE_WIDH 600     //屏幕宽度
#define BGIMAGE_HEIGH 500    //屏幕高度
#define piper_high 1664      //水管最大高度
#define COINS_WIDTH 32
#define COINS_HIGH 32using namespace std;void personactions();   //用户操作
void Next();            //更新水管
int  isbreak();          //碰撞检测
void coinsadd();        //金币增加判断
void show_coins();      //打印金币
void show_coins_T();
void show_image();      //打印图片
void loadphotos();      //加载图片
void show();            //打印综合图片
void move();            //人物移动
void gameover();        //游戏结束判断
void control_speed();   //控制速度
void show_begin_game();
void score_low10(int a);
void score_power10(int score);
int to_text_isbreak(int x,int y,int D_y);
int to_text_coins_isbreak(int x,int y);IMAGE beginimage;
IMAGE beginimagebg;IMAGE bgimage;          //背景
IMAGE bgimage_T;
IMAGE bgimage_S;
IMAGE birdsimage;       //鸟
IMAGE F_birdsimage;     //反补鸟
IMAGE pipersimage;      //上水管
IMAGE D_pipersimage;    //下水管
IMAGE D_pipersimagebg;
IMAGE gameoverimage;    //游戏结束图片
IMAGE gameoverimagebg;
IMAGE coins_allbg;      //金币背景
IMAGE coins_all;        //金币IMAGE numimage0,numimage1,numimage2,numimage3,numimage4,numimage5,numimage6,numimage7,numimage8,numimage9;RECT getscore={100,200,200,300};//矩形坐标int bird_x=100,bird_y=300;int piper_x=250,piper_y=-1400,D_piper_y=400;
int piper_x_T=550,piper_y_T=-1500,D_piper_y_T=450;int coins_x=piper_x,coins_y=300;
int coins_x_T=piper_x_T,coins_y_T=200;int next_x=1,next_y=1;
int speed_of_screan=50;
int choose=1,choose_T=1,real=0,real_T=0;
int point=0;int main(void)
{int situation,flag=0;show();while (1){//人物移动move();//打印综合图片show_image();//多项操作 personactions();Next();situation=isbreak();coinsadd();//碰撞结果的判定switch (situation){case 0:gameover();flag=1;break;case 1:choose=0;break;case 2:choose_T=0;default:break;}if(flag){while(1){if(kbhit()){if(GetAsyncKeyState(VK_SPACE)){bird_x=100,bird_y=300;piper_x=250,piper_y=-1400,D_piper_y=400;piper_x_T=550,piper_y_T=-1500,D_piper_y_T=450;coins_x=piper_x,coins_y=300;coins_x_T=piper_x_T,coins_y_T=200;next_x=1,next_y=1;speed_of_screan=50;choose=1,choose_T=1,real=0,real_T=0;point=0;flag=0;break;}}}}control_speed();}closegraph();return 0;
}//用户操作
void personactions(){if(kbhit()){if(GetAsyncKeyState(VK_SPACE)||GetAsyncKeyState(VK_LBUTTON)){bird_y-=10;}}
}//更新水管 和金币
void Next(){if(piper_x<0){piper_x=BGIMAGE_WIDH;coins_x=piper_x;piper_y=rand()%piper_high;piper_y=-piper_y;D_piper_y=rand()%450;coins_y=rand()%500;while(piper_y>-(piper_high-BGIMAGE_HEIGH+30)||D_piper_y<(piper_high+piper_y+50)){piper_y=rand()%piper_high;piper_y=-piper_y;D_piper_y=rand()%450;}}if(piper_x_T<0){piper_x_T=BGIMAGE_WIDH;coins_x_T=piper_x_T;piper_y_T=rand()%piper_high;piper_y_T=-piper_y_T;D_piper_y_T=rand()%450;coins_y_T=rand()%500;while(piper_y_T>-(piper_high-BGIMAGE_HEIGH+30)||D_piper_y_T<(piper_high+piper_y_T+50)){piper_y_T=rand()%piper_high;piper_y_T=-piper_y_T;D_piper_y_T=rand()%450;}}while(coins_y<=(piper_high+piper_y)||coins_y+24>=D_piper_y)coins_y=rand()%500;while(coins_y_T<=(piper_high+piper_y_T)||coins_y_T+24>=D_piper_y_T)coins_y_T=rand()%500;}//碰撞检测
int isbreak(){if (to_text_isbreak(piper_x ,piper_y,D_piper_y))return 0;if(to_text_isbreak(piper_x_T, piper_y_T, D_piper_y_T))return 0;if(to_text_coins_isbreak(coins_x,coins_y)==1){real=1;return 1;}if(to_text_coins_isbreak(coins_x_T,coins_y_T)==1){real_T=1;return 2;}
}
//判断增加金币
void coinsadd(){if(real&&(bird_x==coins_x+30)){point++;cout<<point<<endl;real=0;}if(real_T&&(bird_x==coins_x_T+30)){point++;cout<<point<<endl;real_T=0;}if(bird_x>coins_x+30)real=0;if(bird_x>coins_x_T+30)real_T=0;
}//显示金币
void show_coins(){static int i=1;putimage(coins_x,coins_y,COINS_WIDTH,32,&coins_allbg,0,(i-1)*COINS_WIDTH,NOTSRCERASE);putimage(coins_x,coins_y,COINS_WIDTH,32,&coins_all,0,(i-1)*COINS_WIDTH,SRCINVERT);i++;if(i>=9)i=1;
}void show_coins_T(){static int j=1;putimage(coins_x_T,coins_y_T,COINS_WIDTH,32,&coins_allbg,0,(j-1)*COINS_WIDTH,NOTSRCERASE);putimage(coins_x_T,coins_y_T,COINS_WIDTH,32,&coins_all,0,(j-1)*COINS_WIDTH,SRCINVERT);j++;if(j>=9)j=1;
}
//打印图片
void show_image(){//开始绘制 BeginBatchDraw();//绘制背景if(point<10)putimage(0,-300,&bgimage);if(point>=10)putimage(0,-300,&bgimage_T);if(point>=35)putimage(0,0,&bgimage_S);//绘制水管putimage(piper_x,piper_y,&pipersimage);putimage(piper_x,D_piper_y,&D_pipersimage);    putimage(piper_x_T,piper_y_T,&pipersimage); putimage(piper_x_T,D_piper_y_T,&D_pipersimage);//绘制鸟putimage(bird_x,bird_y,&F_birdsimage,NOTSRCERASE);putimage(bird_x,bird_y,&birdsimage,SRCINVERT); //判断并绘制金币if(piper_x<0)choose=1;if(choose&&piper_x>=0)show_coins();if(piper_x_T<0)choose_T=1;if(choose_T&&piper_x_T>=0)show_coins_T();if(point==0) putimage(576,0,&numimage0);else if(point<10){score_low10(point);}else if(point>=10&&point<=99){score_power10(point);}EndBatchDraw();//减速屏幕 Sleep(speed_of_screan);}
//加载图片
void loadphotos(){loadimage(&beginimage,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\game.png",313,72);loadimage(&beginimagebg,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\game-1.png",313,72);//背景图片loadimage(&bgimage,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\背景\\1.png",BGIMAGE_WIDH,800); loadimage(&bgimage_T,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\背景\\2.png");loadimage(&bgimage_S,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\背景\\11.png",600,500);//鸟loadimage(&birdsimage,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\鸟\\1.png",42,30);            loadimage(&F_birdsimage,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\鸟\\1-2.png",42,30);//水管loadimage(&pipersimage,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\水管\\1.png",30);loadimage(&D_pipersimage,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\水管\\2.png",30);//金币loadimage(&coins_allbg,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\金币\\9-1.png",32,288);loadimage(&coins_all,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\金币\\9.png",32,288);//游戏结束图片loadimage(&gameoverimage,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\gameover.png",313,72);loadimage(&gameoverimagebg,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\gameover-1.png",313,72);loadimage(&numimage0,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\num0.png");loadimage(&numimage1,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\num1.png");loadimage(&numimage2,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\num2.png");loadimage(&numimage3,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\num3.png");loadimage(&numimage4,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\num4.png");loadimage(&numimage5,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\num5.png");loadimage(&numimage6,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\num6.png");loadimage(&numimage7,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\num7.png");loadimage(&numimage8,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\num8.png");loadimage(&numimage9,"D:\\TeqGin\\development\\code\\c c++\\program\\飞扬的小鸟\\素材\\image\\文字\\num9.png");
}
//综合打印
void show(){//绘制屏幕 initgraph(BGIMAGE_WIDH,BGIMAGE_HEIGH);//显示背景 、鸟、上下水管 loadphotos();//游戏开始界面show_begin_game();//打印图片和水管和鸟 show_image();// 更改种子 srand(time(NULL));}
//人物移动
void move(){bird_y+=5;piper_x-=5;piper_x_T-=5;coins_x=piper_x;coins_x_T=piper_x_T;
}
//游戏结束操作
void gameover(){const int gameover_x=100;const int gameover_y=150;//  putimage(gameover_x,gameover_y,&gameoverimagebg,NOTSRCERASE);putimage(gameover_x,gameover_y,&gameoverimage/*,SRCINVERT*/);Sleep(1000);
}
//速度控制
void control_speed(){if(point>=10)speed_of_screan=30;if(point>=35)speed_of_screan=10;if(point>=60)speed_of_screan=5;
}
//传入水管的x坐标和上水管的y坐标,下水管的y坐标进行碰撞检测
int to_text_isbreak(int x,int y,int D_y){if((bird_x+30==x)&&(bird_y+10 <(piper_high+y)||bird_y+20>=D_y)||bird_y+35<0||bird_y>BGIMAGE_HEIGH||((bird_x==x)&&(bird_y+10<(piper_high+y)))||((bird_x>x&&bird_x<x+28)&&(bird_y+22>D_y))){cout<<bird_y<<" "<<y+1664<<" "<<bird_y-(1664+y)<<endl;return 1;}else return 0;
}int to_text_coins_isbreak(int x,int y){if((bird_x>=x && bird_x<=x+24 && bird_y>=y && bird_y<=y+24) ||(bird_x+42>=x &&bird_x+42<=x+24 && bird_y>=y && bird_y<=y+24)||(bird_x+42>=x &&bird_x+42<=x+24 && bird_y+30>=y && bird_y+30<=y+24)||(bird_x>=x && bird_x<=x+24 && bird_y+30>=y && bird_y+30<=y+24)){return 1;}
}
//游戏开始界面
void show_begin_game(){const int game_begin_x=125;const int game_begin_y=200;while(1){BeginBatchDraw();putimage(0,-300,&bgimage);putimage(game_begin_x,game_begin_y,&beginimagebg,NOTSRCERASE);putimage(game_begin_x,game_begin_y,&beginimage,SRCINVERT);EndBatchDraw();if(kbhit())if(GetAsyncKeyState(VK_SPACE))break;   }
}void score_low10(int a){switch (a){case 1:putimage(576,0,&numimage1);break;case 2:putimage(576,0,&numimage2);break;case 3:putimage(576,0,&numimage3);break;case 4:putimage(576,0,&numimage4);break;case 5:putimage(576,0,&numimage5);break;case 6:putimage(576,0,&numimage6);break;case 7:putimage(576,0,&numimage7);break;case 8:putimage(576,0,&numimage8);break;case 9:putimage(576,0,&numimage9);break;}
}void score_power10(int score){int a=score%10;int b=score/10;if(a==0) putimage(576,0,&numimage0);else score_low10(a);switch (b){case 1:putimage(550,0,&numimage1);break;case 2:putimage(550,0,&numimage2);break;case 3:putimage(550,0,&numimage3);break;case 4:putimage(550,0,&numimage4);break;case 5:putimage(550,0,&numimage5);break;case 6:putimage(550,0,&numimage6);break;case 7:putimage(550,0,&numimage7);break;case 8:putimage(550,0,&numimage8);break;case 9:putimage(550,0,&numimage9);break;}
}

c++飞扬的小鸟1.0正式版相关推荐

  1. StartOS 5.0 正式版发布

    StartOS 5.0正式版发布了. StartOS -- 是由东莞瓦力网络科技有限公司发行的开源操作系统,符合国人的使用习惯,预装常用的精品软件,操作系统具有运行速度快,安全稳定,界面美观,操作简洁 ...

  2. [Android应用]《花界》V1.0 正式版隆重发布!

    http://www.cnblogs.com/qianxudetianxia/archive/2012/04/05/2433669.html 1. 软件说明(1). 花界是一款看花软件:"看 ...

  3. 【6年开源路】海王星给你好看!FineUI v4.0正式版暨《FineUI3to4一键升级工具》发布!...

    去年10-28号,我发布了一篇文章<海王星给你好看!FineUI v4.0公测版发布暨<你找BUG我送书>活动开始>,标志着FineUI开始向4.0版本迈进.经过4个月3个公测 ...

  4. [Android应用]《花界》V1.0 正式版隆重发布!

    1. 软件说明(1). 花界是一款看花软件:"看花,议花,说花,提高您的赏花素养!". (2). 发布<花界>V1.0正式版,一是检验,综合,统一本博客技术分析,二是从 ...

  5. ASP.NET 2.0 正式版中无刷新页面的开发

    ASP.NET 2.0 正式版中无刷新页面的开发 在已经发布的 ASP.NET2.0 中,无刷新页面开发相关部分同 beta2 有不少改动.而且在越来越多的 Ajax 开发包被开发出来的情况下, AS ...

  6. php log pecl,PHP日志扩展SeasLog-1.0.0正式版在PECL发布

    PHP日志扩展SeasLog-1.0.0正式版在PECL发布 发布于 2014-07-29 07:00:26 | 140 次阅读 | 评论: 0 | 来源: 网友投递 SeasLog PHP日志扩展S ...

  7. 服务器安全股v4.0正式版发布 防火墙效能更强

    2019独角兽企业重金招聘Python工程师标准>>> 6月24日,服务器安全狗v4.0正式版发布. 超强驱动,全线优化 服务器安全狗全方位兼容驱动V2.0震撼上线,由内而外全面提高 ...

  8. MySQL 8.0 正式版 8.0.11 发布:比 MySQL 5.7 快 2 倍

    转载:https://www.oschina.net/news/95325/mysql-8-0-ga-released MySQL 8.0 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 ...

  9. Xcode 7.0正式版发布了

    Xcode 7.0正式版发布了 下载地址:链接: http://pan.baidu.com/s/1FNkPS 密码: ee42 本文由大学霸整理,转载请注明出处,尊重IT人!

最新文章

  1. oracle判断非空并拼接,oracle sql 判断字段非空,数据不重复,插入多跳数据
  2. 带括号的计算器 java_【福利】java新手做的复合型计算器!
  3. Silverlight中枚举并加载客户端程序集
  4. xshell通过隧道连接_DNS安全之隧道攻击
  5. asp.net mvc 用Redis实现分布式集群共享Session。
  6. HBase 手动 flush 机制梳理
  7. PostgreSQL Frontend/Backend protocol (通信协议)
  8. 机器学习笔记(三)——正则化最小二乘法
  9. django-pycharm下省略python manage.py的办法
  10. linux-top命令
  11. ios 内联函数 inline ---分解LFLiveKit
  12. Linux修改时区(tzselect) 【例子:修改时区 为 中国 东8区 的时间】
  13. 【软件测评】屏幕标注软件
  14. oracle数据库造数,Oracle利用存储过程造数据
  15. web前端开发分享-css,js进阶篇
  16. 严格模式和普通模式之间的区别
  17. 【java】714. 买卖股票的最佳时机含手续费-----动态规划!!!
  18. 安卓开发常用软件及环境配置
  19. 时间、空间、对象 海量极速多维检索 - 阿里云RDS PostgreSQL最佳实践
  20. 超鸿蒙混希夷的翻译,对《愚溪诗序》一处译文的思考

热门文章

  1. 新驾考指南---[C1-图文全程指导篇]
  2. 网站建设用国内域名好还是国外域名好?
  3. 艾瑞发布《2021 年全球互联网通信云行业研究报告》,融云持续领跑市场
  4. Blogbus适用的日志发布工具【超级写手】
  5. invalid use of non-static member function
  6. 微积分知识点回顾与总结(十):级数
  7. JS报错解决:SyntaxError: Unexpected token 《 in JSON at position 0
  8. Mathorcup数学建模竞赛第六届-【妈妈杯】A题:淡水养殖池塘水华发生及池水自净化研究(附一等奖获奖论文、matlab和SAS代码)
  9. mansory自适应label高度
  10. 硬币拼凑指定面额的动态规划算法