c语言项目教程(飞翔的小鸟零基础项目)

这篇文章主要为大家详细介绍了C语言实现——《飞翔的小鸟项目》文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下!

c语言项目教程(飞翔的小鸟零基础项目)(1)

游戏介绍:

《Flappy Bird》其实是曾经流行的一款手机游戏,你只要让小鸟保持飞行,不要碰到绿色的管道就可以啦。操作虽然简单,但是非常具有挑战哦,不信就来试试吧!

游戏的目标是让小鸟穿过管子,不要碰到任何物体,挑战更远距离!操作只需要控制方向键,让我们的小鸟不碰到柱子即可。

玩法简单,容易上手!所以这也成为了我们编程学习者C语言练习的一个非常好的小项目,如果你没有玩过的话那么可以先去玩一下的,会玩的话对于项目逻辑的理解也是非常有帮助的!接下来就让我们一起来看看吧!

插件:图形库插件easyX,涉及图片素材可以自行百度找也可以关注文末领取;

c语言项目教程(飞翔的小鸟零基础项目)(2)

效果图展示:

c语言项目教程(飞翔的小鸟零基础项目)(3)

配套讲解教程:飞翔的小鸟游戏教程——哔哩哔哩

源代码示例:

#include <stdio.h> #include <graphics.h> #include <conio.h> #include <time.h> #include <mmsystem.h> #pragma comment(lib,"winmm.lib") /************************************************* 数据设计 **************************************************/ IMAGE background; IMAGE bigBird[2]; //bigBird[0] bigBird[1]; IMAGE endImg[2]; IMAGE down[2]; IMAGE up[2]; HWND hwnd; //C语言结构体 struct bird { int x; //鸟的x和y坐标 int y; int speed; //鸟的速度 }; struct bird myBird = { 120, 10, 100 }; //加载资源:把图片和变量绑定一起 void loadResource() { loadimage(&background, "background.bmp"); loadimage(&bigBird[0], "birdy.bmp",48,48); loadimage(&bigBird[1], "bird.bmp",48,48); loadimage(&endImg[0], "endy.bmp"); loadimage(&endImg[1], "end.bmp"); loadimage(&down[0], "downy.bmp"); loadimage(&down[1], "down.bmp"); loadimage(&up[0], "upy.bmp"); loadimage(&up[1], "up.bmp"); } /************************************************** 鸟的模块 1.绘制鸟的过程 2.按键操作控制鸟的过程 3.音乐部分---多线程 ***************************************************/ //绘制鸟的过程 void drawBigBird(int x, int y) { putimage(x, y, &bigBird[0], SRCAND); putimage(x, y, &bigBird[1], SRCPAINT); } //线程处理函数--->C语言中函数指针 DWORD WINAPI playMusic(LPVOID pVoid) { mciSendString("open jump.mp3", 0, 0, 0); mciSendString("play jump.mp3 wait", 0, 0, 0); mciSendString("close jump.mp3", 0, 0, 0); return 0; } /**************************************************** 通用性技术: 1.并发编程 2.网络编程 3.数据库编程 *****************************************************/ //按键交互 void keyDown() { char userKey = '\0'; userKey = _getch(); //暂停功能 if (userKey == ' ') { while (_getch() != ' '); } switch (userKey) { case 72: //小键盘 myBird.y -= myBird.speed; CreateThread(NULL, NULL, playMusic, NULL, NULL, NULL); break; default: //其他按键 break; } } //碰地板和上边界处理 int hitFloor() { if (myBird.y <= 0 || myBird.y >= (512 - 48)) return 1; return 0; } //结束动画 void gameOverAction() { int x = 60; int y = 608; while (y >= 240) { putimage(0, 0, &background); putimage(x, y, &endImg[0], SRCAND); putimage(x, y, &endImg[1], SRCPAINT); y -= 50; Sleep(50); } MessageBox(hwnd, "GameOver!You die!!","over", MB_OK); } /****************************************************** 柱子部分 1.画柱子 2.初始化柱子 3.移动柱子 ******************************************************/ struct pillar { //上面柱子的属性 int x; int y; int h; //能够推出下面柱子的属性: //Height-h; }; struct pillar 柱子[3]; //初始化做完 void initPillar(struct pillar 柱子[], int i) { 柱子[i].h = rand() % 100 160; 柱子[i].y = 0; 柱子[i].x = 288; } void drawPillar(struct pillar 柱子) { //上面的柱子 putimage(柱子.x, 0, 52, 柱子.h, &down[0], 0, 320 - 柱子.h, SRCAND); putimage(柱子.x, 0, 52, 柱子.h, &down[1], 0, 320 - 柱子.h, SRCPAINT); //下面的柱子 putimage(柱子.x, 512-(320-柱子.h), 52, 320-柱子.h, &up[0], 0, 0, SRCAND); putimage(柱子.x, 512 - (320 - 柱子.h), 52, 320 - 柱子.h, &up[1], 0, 0, SRCPAINT); } //通用性 重用性 /************************************************* 入口函数 **************************************************/ int main() { srand((unsigned int)time(NULL)); loadResource(); //1.创建窗口 hwnd=initgraph(288, 608); //描述自由落体 for (int i = 0; i < 3; i ) { initPillar(柱子, i); 柱子[i].x = 288 i * 150; } while (1) { putimage(0, 0, &background); drawBigBird(myBird.x, myBird.y); for (int i = 0; i < 3; i ) { 柱子[i].x -= 10; if (柱子[i].x < (-52 - 150)) { initPillar(柱子, i); } } for (int i = 0; i < 3; i ) { drawPillar(柱子[i]); } if (hitFloor()) { gameOverAction(); break; } myBird.y = 10; //只有有按键才处理,没有按键不能处理 //kbhit():存在按键返回非零值 if (_kbhit()) { keyDown(); } Sleep(50); //延时函数 } _getch(); //等待用户按键 //2.关闭窗口 closegraph(); return 0; }

未完成的部分功能代码,大家也可以自己先去想想试试,每一次的思考就是你进步的过程!

如果学习的过程中有什么问题,以及本项目有什么不懂的地方,都可以来找我交流,我来帮你!

那么今天的分享就到这里了,后续会更新更多精彩项目或者知识内容的,大家要好好学C语言C 哟~

写在最后:对于准备学习C/C 编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

c语言项目教程(飞翔的小鸟零基础项目)(4)

编程学习视频分享:

c语言项目教程(飞翔的小鸟零基础项目)(5)

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

对于C/C 感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C 的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页