C语言怎么实现简易版flappy bird小游戏
作者
小编给大家分享一下C语言怎么实现简易版flappy bird小游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
游戏界面如下:
首先,先画出整个小游戏实现的流程图,如下:
思路很简单,整个游戏界面是由一个大的char类型数组构成,更新数组的值然后不停的打印出来就形成了动态效果。
由上图看,大循环是保证游戏一直不断的进行下去,小循环是让小鸟的速度大于游戏界面里背景(由#构成的柱子)的速度(小鸟动四下柱子才动一下)。
下面是具体代码(水平有限大家多多见谅,但是效果还是有的!)
Bird.c文件
#include<stdio.h> #include<windows.h> #include"Interface.h" intmain(void) { InitialInterface(); for(;;) { newinterface(); scoring();//过一个柱子计一次分,所以和柱子更新速度一致 for(inti=0;i<4;i++)//小鸟的速度是柱子的4倍 { birdmove(); draw(); Sleep(50); } } return0; }
Interface.h文件
#ifndefINTERFACE_H #defineINTERFACE_H #defineM20 #defineN36 voidInitialInterface(void); voidnewinterface(void); voidbirdmove(void); voidscoring(void); voiddraw(void); #endif
Interface.c文件
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include"interface.h" charinterf[M][N]={{32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,32,32}, {32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,32,32}, {38,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}, {32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35}, {32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35,32,32,32,32,32,32,32,32,32,32,35,35},}; //初始界面矩阵,ASCII码中“”是32,“&”是38表示小鸟,“#”是35用来画柱子 intnum=0;//用于计数输出并排两列黑柱子同一位置 intblack;//黑方块位置 intp=M/2;//小鸟初始位置 intscore=0;//分数 /*初始化界面*/ voidInitialInterface(void) { printf("\n作者:xhyang,博客地址:http://blog.csdn.net/weixin_39449570\n"); printf("按\"w\"使小鸟跳起来,别落地,顺利穿过尽可能多的柱子!\n"); for(inti=0;i<M;i++) { printf(""); for(intj=0;j<N;j++) { printf("%c",interf[i][j]); } printf("\n"); } } /*更新界面各个柱子*/ voidnewinterface(void) { if(interf[0][1]==35&&num==0)//当矩阵第二列为黑色方块时,计算出下一次黑柱子上半部分的位置 { black=5+rand()%5; num=2;//黑柱子是两列#组成,第二列与第一列位置一样,用num保证两列位置一致 } for(inti=0;i<M;i++) { for(intj=0;j<N-1;j++) { interf[i][j]=interf[i][j+1]; } if(interf[0][0]==35&&(i<black||i>(black+5)))//此时上面的第二列变成了第一列,更新下一个黑柱子,有了黑柱子上半部分位置+5即是下半部分的起始位置 { interf[i][N-1]=35; } else { interf[i][N-1]=32; } } if(num>0) num--; } /*更新小鸟位置*/ voidbirdmove(void) { for(inta=0;a<3;a++) { if(a==2&&p>0)//减缓鸟的速度,使按键上跳速度是下落的4倍 { p=p+1; } if(_kbhit()) { if(_getch()=='w'||_getch()=='W') { p=p-3; } } } } /*计分*/ voidscoring(void) { if(p>20||interf[p][0]==35) { system("cls"); printf("\n\n游戏结束!\n\n"); printf("最终得分:%d\n\n\n",score); system("pause"); } if(interf[0][0]==35&&interf[0][1]==32) score++; } /*重画界面*/ voiddraw(void) { system("cls"); printf("\n作者:xhyang,博客地址:http://blog.csdn.net/weixin_39449570\n"); printf("按\"w\"使小鸟跳起来,别落地,顺利穿过尽可能多的柱子!\n"); for(inti=0;i<M;i++) { printf(""); for(intj=0;j<N;j++) { if(i==p&&j==0&&interf[p][0]!=35) printf("%c",38); else printf("%c",interf[i][j]); } printf("\n"); } printf("得分:%d\n",score); }
以上是“C语言怎么实现简易版flappy bird小游戏”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
目录
推荐阅读
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~