C语言小游戏:飞翔的小鸟(完整版)

每天一个C语言小项目,提升你的编程能力! 

《Flappy Bird》是曾经一款流行的一款手机游戏,你只要让小鸟保持飞行,不要碰到绿色的管道就可以啦。操作虽然简单,但是非常具有挑战!本次我们也是自己动手来实现这样一款游戏的高仿版,大家不妨自己先读一遍代码然后动手试试!

该程序是用 C 语言实现的 FlappyBird 的电脑版,玩法和手机版的相同。

程序通过 alpha 域实现透明贴图,并且通过双缓冲绘图防止刷新闪屏。

程序执行效果如下:

本程序设计了三种不同颜色的小鸟(可以实现三人对战)另外也有白天模式和夜晚模式,不同模式和不同小鸟是在每次死亡后随机刷新,避免产生视觉疲劳。

简单了解游戏后我们就来试试吧!

本项目编译环境:Visual Studio 2019/2022,EasyX插件

必备素材:

网盘链接:https://pan.baidu.com/s/10ALP-QdcTu0UV4p8alTE4w?pwd=3p3s   提取码:3p3s 

 代码展示:(有五百多行代码,每一个功能实现都会给出对应注释)

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <graphics.h>

// 初始背景图 白天、黑夜
IMAGE BK[2];

// 全局画板
IMAGE bk;

// 飞鸟资源 橘、蓝、红
IMAGE BIRD[3][3];

// 管道资源 绿、红
IMAGE PIPE[2][2];

// 三种数字字体
IMAGE NUMBER[3][10];

// 奖牌资源
IMAGE MEDAL[4];

// 地面资源
IMAGE LAND;

// 开始游戏按钮
IMAGE PLAY;

// 得分面板
IMAGE PANEL;

// 以下为五种游戏文字
// 游戏结束 游戏预备 游戏标题 游戏提示 最高分
IMAGE OVER;
IMAGE READY;
IMAGE TITLE;
IMAGE TUTORIAL;
IMAGE NEW;

// 结束时状态
IMAGE OVEIMG;

// 是否为白天
int isDay = 0;

// 鸟的颜色
int birdColor = 0;

// 最高分
int best = 0;

// 游戏初始时间
long startTime = 0;

// 游戏基本属性

// 重力加速度
const double g = 6.5;
// 管道的移动速度
double vx = 11;
// 鸟的下落速度
double vy = 10;
// 鸟的当前位置
double y = 220;
const double x = 288 / 2 - (41 + 8) / 2 - 80;
// 管道的横向坐标
double pipeX[2];
// 管道的纵向坐标
int pipeY[2];
// 当前得分
int score;
// 鸟的矩形判断区域
const int top = 12;
const int left = 10;
const int right = 37;
const int buttom = 33;

// 奖牌显示位置
const int medalXY[2] = { 0, 0 };

// 陆地坐标
const double landY = 420;
double landX = -20;

// 飞鸟姿态
int pose = 0;

// 飞行间隔
const int diff = 110;

// 管道上补偿
const int pipeUp = -280;
// 管道下补偿
const int pipeDown = 140;

// 游戏预处理
void start();
// 游戏函数
void game();
// 结束游戏函数
void end();
// 移动函数
void move(long time);
// 绘制函数
void draw();
// 重置画布
void reset();
// 绘制画布
void put();
// 加载资源
void loadRes();
// 根据透明度绘图
void drawAlpha(IMAGE* dstimg, int x, int y, IMAGE* srcimg);
// 绘制分数
void drawScore(int y, int sc, int dif, int se, int st, int type);
// 绘制管道
void drawPipe();
// 判断鸟死亡
bool isDie();
// 初始化游戏资源
vo
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值