1.目标要求:
1.小鸟默认向右向下飞,按空格或左键会使小鸟弹起向上
2.小鸟每通过一根柱子,分数加1
3.若小鸟碰到柱子或边框,游戏结束
4.添加图片+添加声音
2.C语言代码:
【代码素材文件、工程文件】:https://ws28.cn/f/2auwqrnj5ig
或者:https://download.csdn.net/download/weixin_43503632/12331258
若链接失效,下方评论我会再发
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<graphics.h>//需要提前下载(EasyX库函数)
#include<conio.h>
#pragma comment(lib,"Winmm.lib")//音乐
/*
《flappy bird》 by:你最珍贵
--------------------------------------
| 控制信号:| 向上 | 暂停 |
--------------------------------------
| 操作 :| 空格&鼠标左键 | Esc&右键 |
--------------------------------------
1.小鸟默认向右向下飞,按空格或左键会使小鸟弹起向上
2.小鸟每通过一根柱子,分数加1
3.若小鸟碰到柱子或边框,游戏结束
*/
/*
声音导入与使用
播放MP3,使用API函数mciSendString。
使用前,需要在函数外引用 Windows Multimedia API
#pragma comment(lib,"Winmm.lib")
下面这两条语句可以循环播放背景音乐
mciSendString("open E:\\background.mp3 alias bkmusic", NULL, 0,NULL);//背景音乐
mciSendString("play bkmusic repeat", NULL, 0, NULL); // 循环播放
下面可以播放一次音效
mciSendString("open E:\\Jump.mp3 alias jpmusic", NULL, 0, NULL); //打开跳动音乐
mciSendString("play jpmusic", NULL, 0, NULL); // 仅播放一次
!!!如果文件名中有空格,需要用双引号引起来文件名(注意转义):
mciSendString("open \"D:\\My Music\\俞丽拿 梁祝 化蝶.mp3\" alias mymusic", NULL, 0, NULL);
*/
int bird_width;//小鸟宽
int bird_long;//小鸟长
int column_width;//柱子宽度
int column_long;//柱子长度
int interface_x;//图形窗口大小(宽*长)
int interface_y;
int IsEnd;//是否结束
int scores;//分数
int slow_v,slow_v_num;//移动变慢的值(越大速度越慢),移动变慢的变量
int slow_vbird,slow_vbird_num;//小鸟移动变慢的值(越大速度越慢),移动变慢的变量
int bird_x,bird_y;//小鸟位置
int bird_jump; //小鸟跳跃变量 =0时不跳 =3、2、1时跳跃
int column_x[2],column_y[2];//柱子位置
IMAGE img_bk,img_bk1,img_bked;//背景
IMAGE img_bd1, img_bd2;//bird(1为遮罩图,2为原图)
IMAGE img_clup1,img_clup2,img_cldown1,img_cldown2;//柱子上、柱子下
IMAGE gameover1,gameover2;//gameover图片
IMAGE score1[10],score2[10];//分数图片
void startup(){
//【数据初始化】
bird_width=34;
bird_long=24;
column_width=140;//柱子宽度
column_long=600;//柱子长度
interface_x=350;//图形窗口大小(宽*长)
interface_y=600;
IsEnd = 0;
scores=0;
slow_v=40;
slow_v_num=1;
bird_x=interface_x/4;//小鸟位置
bird_y=interface_y/2;
bird_jump=0;
slow_vbird=8;//小鸟的慢速变量
slow_vbird_num=1;
column_x[0]=interface_x;//柱子位置
column_y[0]=(-1)*column_long+(1.0/12)*interface_y+rand()%(interface_y*7/12);
column_x[1]=column_x[0]+interface_x;//第二根柱子默认在之后相差一个屏幕宽
column_y[1]=(-1)*column_long+(1.0/12)*interface_y+rand()%(interface_y*7/12);
//加载背景图、小鸟图、柱子上下gameover
loadimage(&img_bk,"素材库\\backgroundfd.jpg");//加载图片,()中 &后加图片变量、""中加图片地址(图片在工程中可以写相对地址,前面的不用写)(注意转义字符\\)
loadimage(&img_bk1,"素材库\\backgroundfd1.jpg");
loadimage(&img_bked,"素材库\\beforegame.jpg");
loadimage(&img_bd1,"素材库\\bird1-1.gif");//小鸟
loadimage(&img_bd2,"素材库\\bird1-2.gif");
loadimage(&img_clup1,"素材库\\stone_up2.gif");//柱子上
loadimage(&img_clup2,"素材库\\stone_up1.gif");
loadimage(&img_cldown1,"素材库\\stone_down2.gif");//柱子下
loadimage(&img_cldown2,"素材库\\stone_down1.gif");
loadimage(&gameover1, "素材库\\gameover1.gif");//GAMEOVER字样图片
loadimage(&gameover2, "素材库\\gameover2.gif");
//加载0 ~ 9数字
loadimage