前几天的实训我做了一个飞翔小鸟的游戏项目,技术性不高,但是我利用了图像处理函数在游戏里添加了声音和画面,看起来就好多了。
大家可以看一下游戏样例图片

这里如果你的电脑上又V C++6.0的话,直接下载我分分享的压缩包,把素材拉到桌面,安装ege图形处理函数,再打开我的源码可以直接运行,有兴趣的可以自己研究修改一下。
链接直通车
链接:https://pan.baidu.com/s/1HyP_jMbWzQ97YxVCOp8_8g
提取码:ilft

我不算是原创,我是根据河海大学童老师的网课给出的框架,然后又加上了自己的东西,算是改变吧,这里主要聊一下我对于我写的这个东西的理解,以及如何写出一个小游戏的理解。
对于一个小游戏可以使用一个固定的框架

int main()
{HideCursor();           //隐藏光标starup();           //游戏初始化while(1)         //循环刷新执行{show();             //显示画面,打印结果updatewithinput();        //与用户输入无关的更新updatewithoutinput();    //与用户输入有关的更新}return 0;
}

这个主函数的框架适用于许多的小游戏,当然如果游戏项目过大,可以自行添加其他的东西在主函数里,这里就不说很复杂的了。
我也是根据网课老师讲的按照函数封装的方法写的,这样的代码可读性更强,修改起来也跟方便。
下面先给大家看一下我的源码,这个是不能直接运行的吗,因为默图像处理函数的头文件是需要自己添加进去的。

程序源码:
#include <graphics.h>
#pragma comment(lib,"Winmm.lib")
#include<windows.h>
#include<conio.h>
int bird_y;
int bird_x;
//定义图片
IMAGE img_bk,img_bd1,img_bd2,img_bar1_up1,img_bar1_up2,img_bar1_down1,img_bar1_down2;
int y1=-300,y2=400;       //初始位置
int k=0;
int randposition;           //随机位置
int up1,down1;      //上管口纵坐标和下管口纵坐标
int bar1_x1,bar1_x2,bar_top1,bar_top2,jianxi=100;      //管子的横坐标和管子的左上角坐标
int randk=1;   //randk每次会变成相反数
int p = 50;
IMAGE img_bar2_up1,img_bar2_up2,img_bar2_down1,img_bar2_down2;
int up2,down2;
void startup()//游戏初始化
{mciSendString("open \"D:\\sucai\\background.mp3\" alias bkmusic", NULL, 0, NULL);//打开背景音乐mciSendString("play bkmusic repeat", NULL, 0, NULL);  // 循环播放initgraph(350, 600);
//加载图片loadimage(&img_bk, "D:\\sucai\\background.jpg");loadimage(&img_bd1, "D:\\sucai\\bird1.jpg");loadimage(&img_bd2, "D:\\sucai\\bird2.jpg");loadimage(&img_bar1_up1, "D:\\sucai\\bar_up1.gif");loadimage(&img_bar1_up2, "D:\\sucai\\bar_up2.gif");loadimage(&img_bar1_down1, "D:\\sucai\\bar_down1.gif");loadimage(&img_bar1_down2, "D:\\sucai\\bar_down2.gif");bird_x = 10;bird_y = 200;bar1_x1=355;bar_top1=y1;bar_top2=y2;jianxi=bar_top2-bar_top1;up1=600+bar_top1;down1=bar_top2;BeginBatchDraw();
}
void s()   //开始的加载界面
{char input;initgraph(350, 600);
IMAGE start,k;
loadimage(&start, "D:\\sucai\\title.png");
putimage(80, 420, &start);
loadimage(&k,"D:\\sucai\\tutorial.png");
putimage(100, 220, &k); Sleep(5000);
BeginBatchDraw();
}
void show()     //画面显示
{putimage(0, 0, &img_bk);   // 显示背景putimage(bar1_x1,bar_top1, &img_bar1_up1,NOTSRCERASE); // 显示上一半的障碍物putimage(bar1_x1,bar_top1,& img_bar1_up2,SRCINVERT);putimage(bar1_x1 ,bar_top2,& img_bar1_down1,NOTSRCERASE); // 显示下一半的障碍物putimage(bar1_x1,bar_top2,& img_bar1_down2,SRCINVERT);putimage(bird_x, bird_y, &img_bd1,NOTSRCERASE); // 显示小鸟putimage(bird_x, bird_y,&img_bd2,SRCINVERT);FlushBatchDraw();
}
无关变量
void updateWithoutInput()
{int randposition;if (bird_y<600&&k==0)bird_y = bird_y+5;if(bird_y>=600&&k==1)exit(0);if(bird_x<=bar1_x2&&bird_x>=bar1_x1){if(bird_y<=up1||bird_y>=down1){exit(0);}}if(bar1_x1>-145){bar1_x1-=2;}else{bar1_x1=355;randk=-randk;randposition=rand()%150;bar_top2=y2+randposition*randk;down1=bar_top2;up1=down1-100;bar_top1=up1-600;}static int speed=0;     //控制速度if(speed<k){speed++;Sleep(10);}else{if(speed==k){//根据速度更新位置speed=0;}}Sleep(30);bar1_x2=bar1_x1+140;
}
有关变量
void updateWithInput()
{char input;if(kbhit())  // 判断是否有输入{input = getch();if (input == ' ' && bird_y>10&&k==0){bird_y = bird_y - 40;mciSendString("close jpmusic", NULL, 0, NULL); // 先把前面一次的音乐关闭mciSendString("open  D:\\sucai\\Jump.mp3 alias jpmusic", NULL, 0, NULL); // 打开跳动音乐mciSendString("play jpmusic", NULL, 0, NULL); // 仅播放一次}}
}
void gameover()
{EndBatchDraw();getch();closegraph();
}
int main()
{s();startup();  // 数据初始化while (1)  //  游戏循环执行{show();  // 显示画面updateWithoutInput();  // 与用户输入无关的更新updateWithInput();     // 与用户输入有关的更新}gameover();     // 游戏结束、后续处理return 0;
}

其实我觉得我写的代码还是比较清晰的,让我解释的话我也不知道从何讲起,每一个封装过的函数都是独立的,但是他们通过全局变量联系到一起,全局变量在updateWithoutInput()和updateWithInput()里发生变化,然后show()函数里的变量发生变化,打印的结果发生变化,对于如何安装图像处理函数的头文件,我之后的话会单独发一篇博客来教大家。

C语言开发FlyBird小游戏,飞翔小鸟小游戏,可以直接运行!相关推荐

  1. 入门java游戏——飞翔小鸟

    这是牛客网上一个开源的项目原网址如下:https://www.nowcoder.com/project/index/65 图片资源也可以在网站上进行下载. 目录: 目录 目录: 一:效果展示 二.原理 ...

  2. Java小游戏-飞翔小鸟

    摘 要 Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.幸运的是,Eclipse 附带了一个标准的插件集,包括J ...

  3. python摸鱼小游戏:小鸟管道游戏【送源码】

    嗨害大家好鸭~我是小熊猫❤ 国庆假期马上就要结束辽~ 相信大家和我一样不想上班 只想摸鱼吧? 刚开工嘛~那肯定是要摸一下鱼的啦 ~ ~ ~ 今天来给大家整一个小鸟管道小游戏 让大家赶快从假期的时差里倒 ...

  4. 【树莓派C语言开发】实验02:RGB小灯

    文章目录 前言 1.实验器材 1.1树莓派运行库准备 2.元件接线 3.函数解释 3.1关于softPwmWrite的使用问题,大大的疑惑 4.代码样例 4.1初始化针脚 4.2颜色参数设置 4.3完 ...

  5. 程序员炫技:用c语言开发对对碰游戏,你打几分?

    我发现不少游戏都是这样,泡泡龙,对对碰,连连看,三重镇--众多游戏都是汇集三个单位便会进行消除.那么今天小编就用C语言开发出一款对对碰小游戏 这篇文章主要为大家分享了C语言对对碰游戏源码,具有一定的参 ...

  6. python能开发小程序吗_微信小程序用什么语言开发?Python能开发小程序么

    小程序是什么语言开发设计的那麼微信小程序的编程语言用的什么,许多 官方网站都会微信上有微信小程序,不用下载手机软件就可以享有一样的服务项目,还无需占运行内存,棒极了有么有?下边给大伙儿产生小程序語言开 ...

  7. 小程序开发语言python_微信小程序是用什么语言开发的呢

    原标题:微信小程序是用什么语言开发的呢 说到微信小程序可能大部分只是一知半解,您是否清楚小程序是用什么来开发的?如果您不太清楚,那么多美源小程序小编来告诉您小程序开的具体. 微信小程序是什么语言开发的 ...

  8. 使用php语言开发网站的注意事项

    网站的开发离不开程序语言,选择好一门语言去开发网站,网站展示的效果也是一样的.一般网站建议大家使用PHP这门编程语言相比于其他语言上手难度会低一点,对新手比较友好,整体性能也不错.来客推阿高在这里说一 ...

  9. 游戏开发的HelloWorld,快速入门,新手上路,使用CocosCreator+JS,flyBird(飞翔小鸟)

    游戏开发的HelloWorld,快速入门,新手上路,使用CocosCreator+JS,flyBird(飞翔小鸟) 介绍 开发环境 游戏原理 文件结构 详细操作 全部代码 介绍 拓展什么的都没有,真正 ...

  10. Java开发的飞翔的小鸟小游戏408 功能非常齐全 完整源码

    今天为大家继续分享飞翔的小鸟游戏的开发与制作 408,目前系统已经完成了初步功能,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 ...

最新文章

  1. 常用图像格式(PNG,JPG)到SGI图像格式(RGB,BW)的转换
  2. python绘图和可视化_Python 绘图和可视化详细介绍
  3. html5-button元素
  4. python创建文件名称_如何在Python中创建递增文件名?
  5. RHEL5.X 重启网卡出现./network-functions: line 78: .: ifcfg-eth0: file not found
  6. mysql 字段值为 a b c_数据的虚拟列-让数据库中的C字段等于a+b
  7. 数字信号处理实验(一)
  8. 外地人在成都买房被限购怎么办?看完就知道
  9. 直播知识点实录|百度大脑EasyDL产业应用系列 安全生产专场
  10. jeecg 新手入门
  11. JDK13 Switch表达式新特性
  12. ODrive AP调试记录
  13. Matlab:License Manager Error -9
  14. linux启动dns失败,Linux DNS 设置失败
  15. 技术爱好者更换域名重要通知
  16. 【web学习之mysql】 mysql- 学习 - 城市选择
  17. Qt单元测试工具 QTestlib
  18. 编写Pascal代码
  19. 第52篇 Android Studio实现生命数字游戏(七)ListView与适配器
  20. ucla 计算机科学,加州大学各分校哪些专业特别牛?

热门文章

  1. Excel自定义格式千分符
  2. 微信收款播报器提示服务器断开,微信收款语音提醒开启后收不到语音提醒怎么办? 专家详解...
  3. NLP-语料库:英文语料库【Brown Corpus(有词性标注)、LOB(Lancaster-Oslo/Bergen,英国英文)...】
  4. STM32MP157 u-boot2021.10移植
  5. 2021年PMP考试模拟题4(含答案解析)
  6. Effective Python 中文版
  7. 高仿QQ举报网页和举报成功网站页源码
  8. 设计模式 - 抽象工厂模式案例
  9. CPU .......TensorFlow binary was not compiled to use: AVX AVX2
  10. magisk卸载内置软件_安卓刷XP框架 手机通用通用(Magisk+Riru+EdXposed)