C语言怎么实现简易版flappy bird小游戏

小编给大家分享一下C语言怎么实现简易版flappy bird小游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

游戏界面如下:

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小游戏”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-06-13 23:20:40
收藏
分享
海报
0 条评论
178
上一篇:C语言中函数指针与软件设计的示例分析 下一篇:C语言如何实现解数独程序
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码