飞翔的小鸟(FlyBird)游戏C语言编程(含撞柱子)

article/2025/9/29 18:26:38

柱子分析尺寸分析
游戏运行中
游戏结束

// 飞翔的小鸟.cpp
#include "stdafx.h"
#include <graphics.h>    //图形库头文件
#include <stdlib.h>    //Sleep
#include <conio.h>    //_getch()按键盘
#include <stdio.h>    //C语言头文件
#include <time.h>    //随机函数使用
#include <mmsystem.h>   //音乐播放的多媒体库
#pragma comment(lib,"winmm.lib")  //链接winmm.lib这个库//起图片名字
IMAGE background;
IMAGE mybird[2];    //鸟有两张:mybird[0]、mybird[1]
IMAGE overImg[2];   //游戏结束动画两张
IMAGE downPillar[2];    //朝下的柱子两张
IMAGE upPillar[2];    //朝上的柱子两张struct Bird  //鸟的属性
{int x;    //初始坐标int y;int speed;  //上升速度
};struct Pillar
{int x;  //上面柱子起始坐标int y;int height;  //上面柱子显示高度
};struct Bird flyBird={124,304,50};  //初始化。在窗口正中间void loadResource(){  //加载资源。相同的操作归类处理loadimage(&background,L"background.bmp");loadimage(&mybird[0],L"birdy.bmp",48,48);   //先是掩码图yloadimage(&mybird[1],L"bird.bmp",48,48);loadimage(&overImg[0],L"endy.bmp");loadimage(&overImg[1],L"end.bmp");loadimage(&downPillar[0],L"downy.bmp");loadimage(&downPillar[1],L"down.bmp");loadimage(&upPillar[0],L"upy.bmp");loadimage(&upPillar[1],L"up.bmp");
}void drawBird(int x,int y){  //画鸟---->透明贴图技术(白加黑去掉背景,就是裸鸟了)//SRCAND方式贴掩码图putimage(x,y,&mybird[0],SRCAND);//SRCPAINT方式贴背景图putimage(x,y,&mybird[1],SRCPAINT);
}DWORD WINAPI playMusic(LPVOID lpParamer){ //多线程mciSendString(L"open jump.mp3",0,0,0);    //需要加LmciSendString(L"play jump.mp3 wait",0,0,0);mciSendString(L"close jump.mp3",0,0,0);return 0;
}DWORD WINAPI playMusic1(LPVOID lpParamer){ //多线程mciSendString(L"open hit.mp3",0,0,0);    //需要加LmciSendString(L"play hit.mp3 wait",0,0,0);mciSendString(L"close hit.mp3",0,0,0);return 0;
}DWORD WINAPI playMusic2(LPVOID lpParamer){ //多线程mciSendString(L"open gameover.mp3",0,0,0);    //需要加LmciSendString(L"play gameover.mp3 wait",0,0,0);mciSendString(L"close gameover.mp3",0,0,0);return 0;
}void keyDown(){  //鸟的按键处理char userkey=_getch();    //_getch();用来接收用户按键switch (userkey){case ' ':flyBird.y-=flyBird.speed;CreateThread(NULL,NULL,playMusic,NULL,NULL,NULL);break;default:break;}
}int hitFloor(){  //鸟撞天花板和地板if (flyBird.y<=0||flyBird.y>=512){CreateThread(NULL,NULL,playMusic1,NULL,NULL,NULL);return 1;}else return 0;
}int hitPillar(struct Pillar *myPillar){  //撞到柱子for(int i=0;i<3;++i){if (flyBird.x >= myPillar[i].x && flyBird.x <= myPillar[i].x + 52){if (flyBird.y <= myPillar[i].height || flyBird.y >= (512 - 320 + myPillar[i].height)){CreateThread(NULL,NULL,playMusic1,NULL,NULL,NULL);return 1;}}}return 0;
}void actionGameOver(){//结束图片的初始位置int x=50;int y=608;while (y>=240){putimage(0,0,&background);putimage(x,y,&overImg[0],SRCAND);putimage(x,y,&overImg[1],SRCPAINT);y-=50;Sleep(50);}CreateThread(NULL,NULL,playMusic2,NULL,NULL,NULL);Sleep(5000);  //5秒后关闭窗口
}void initPillar(struct Pillar myPillar[],int i){    //建立柱子myPillar[i].height=rand()%100+160;    //随机数范围160~259myPillar[i].x=228;myPillar[i].y=0;
}void drawPillar(struct Pillar myPillar){  //画柱子。每根柱子高度是320//上面的柱子putimage(myPillar.x,0,52,myPillar.height,&downPillar[0],0,320-myPillar.height,SRCAND);  //掩码图putimage(myPillar.x,0,52,myPillar.height,&downPillar[1],0,320-myPillar.height,SRCPAINT);//下面的柱子putimage(myPillar.x,512-(320-myPillar.height),52,320-myPillar.height,&upPillar[0],0,0,SRCAND);putimage(myPillar.x,512-(320-myPillar.height),52,320-myPillar.height,&upPillar[1],0,0,SRCPAINT);
}int main(){//背景尺寸:288*608srand((unsigned int)time(NULL));    //随机函数种子initgraph(288,608);    //创建窗口struct Pillar myPillar[3];for(int i=0;i<3;++i){initPillar(myPillar,i);//为了让柱子之间有差距myPillar[i].x=288+i*150;}loadResource();while (true){putimage(0,0,&background);drawBird(flyBird.x,flyBird.y);flyBird.y+=5;for(int i=0;i<3;++i){myPillar[i].x-=5;  //柱子向左移动if(myPillar[i].x<(-52-150)){initPillar(myPillar,i);}}for(int i=0;i<3;++i){    //画柱子drawPillar(myPillar[i]);}if(_kbhit()){    //一定要先判断按键是否按下keyDown();}if(hitFloor()||hitPillar(myPillar)){actionGameOver();break;}Sleep(50);  //休眠50毫秒}closegraph();    //关闭窗口return 0;
}

按空格键操作
素材:飞翔的小鸟.zip
链接:https://pan.baidu.com/s/1GWnLePCiLcxlJHOaBKEeaA
提取码:pmzq


http://chatgpt.dhexx.cn/article/9BhemcGH.shtml

相关文章

【Unity】Fly Bird(游戏实战)(1)

对于Fly Bird 相信各位肯定不会陌生。&#xff08;在安卓5.0-7.0版本的系统中多次点击Android Version 就会出现这个游戏&#xff0c;快去试试吧~~ 7.0及以后就没有了~~就做不了示范了 ~~ 刚开始Unity&#xff0c;也是写的第一个游戏就是做一个Fly Bird. 先把用到的音频&…

Scratch(三十五):FlyBird

哈喽&#xff0c;大家好&#xff01;今天给大家展示的Scratch是FlyBird。接下来&#xff0c;我们一起看一下效果吧。 1、素材获取 2、bird的设置 当点击完小绿旗之后&#xff0c;bird就会有个上下浮动的控制&#xff0c;也就是变量“重力”的设置&#xff0c;接着就是开始位置…

Html5在线小游戏 在线玩压扁小鸟(flyBird)游戏源码

这个源码无需后台上传服务器&#xff0c;直接在线即可使用。 该游戏源码是基于HTML5和JavaScript开发的&#xff0c;运行在浏览器中&#xff0c;使得用户能够方便地进行游戏&#xff0c;而且不需要进行任何安装和下载操作。想要玩游戏的用户只需要访问指定链接即可开始游戏&am…

cocos游戏FlyBird

cocos creator游戏开发FlyBird 菜单界面Menu 首先建立一个场景&#xff08;scence&#xff09; 将你的背景图片添加入canvas并调整canvas的大小来适应你背景图片的大小&#xff0c;最好不要去图片大小&#xff0c;这样会使你的图片变得很丑 添加一个按钮控件 并给这个场景添…

java fly bird小游戏_JavaScript实现Fly Bird小游戏

3.1 小鸟 首先&#xff0c;创建小鸟的对象&#xff0c; bird.js 文件。 div:document.createElement("div"),showBird:function(parentObj) { this.div.style.width "40px"; this.div.style.height "28px"; this.div.style.backgroundImage &…

FLY BIRD

这是作品需要的角色…… 注:水管要多弄几个造型例如: (作者用的背景是blue sky(scratch素材库里面的)) 一下是水管的程序: 小鸟的也很简单:

Java之编写FlyBird小游戏

Java小游戏编写&#xff08;飞翔的小鸟&#x1f426;&#xff09; 概述&#xff1a;主要使用面向对象&#xff0c;线程&#xff0c;继承、ImageIO流等完成的一个小游戏 主要文件&#xff1a; &#x1f405;&#x1f389;&#x1f405;&#x1f389;&#x1f405;&#x1f389;…

介绍一款2023年新出的mysql管理工具: FlyBird Database Manager

FlyBird Database Manager 介绍 FlyBird Database Manager 是一款mysql 界面化管理工具&#xff0c; 使用go语言编写&#xff0c;天然支持Windows, MacOS, Linux等主流平台。 提供无需安装的命令行版本&#xff0c; 命令行中启动服务&#xff0c;以html支持UI界面,在浏览器中…

网络打印机无法连接的解决方法

&#xfeff;&#xfeff; 网络 打印机无法连接的解决方法。 1、首先确定计算机是否可以连接网络打印机&#xff0c;网络打印机都会有一个内网ip地址&#xff0c;可以先ping一下看通不通&#xff0c;如果不通说明计算机与网络打印机之间线路不通&#xff0c;可以用排除法看看是…

win10 系统连接不到网络打印机

查看其它同事的网上邻居里可以看到内容&#xff0c;但 本机空空如也&#xff01; 解决方法&#xff1a;打开控制面板&#xff1a;如下图所示&#xff1a;1&#xff1a;“程序“”->2&#xff1a;“启用或关闭windows功能“->3&#xff1a;勾选"SMB 1.0/CIFS文件共享…

windows10突然连不上打印机问题

问题描述 windows10打印机突然连接不上了&#xff0c;出现了错误&#xff1a; Active Directory 域服务当前不可用。 解决方案 在cmd中输入 services.msc 找到 发现这个服务没有运行&#xff0c;点击运行按钮&#xff0c;出现错误信息&#xff1a; win10错误0x800706b9…

共享网络打印机连接,以及解决无法连接打印机的问题

win10共享网络打印机&#xff0c;及连接打印机 1.共享2.连接补充一点 1.共享 打开WIN的远程连接。&#xff08;一方面是为了能方便使用远程桌面&#xff0c;这个以后会写到&#xff09;——我的电脑—右键—属性—远程设置。把两个都选上。然后搜索栏输入‘打印机’&#xff0…

解决:Win11无法连接网络打印机

&#xff08;一&#xff09;打开本地组策略。 1.1 按winR键盘组合键打开“运行”。在运行框中输入 “gpedit.msc”&#xff0c;回车键。 1.2 “开始”菜单中搜索&#xff1a;组策略&#xff0c;然后出现【编辑组策略】&#xff0c;点击进入。 &#xff08;二&#xff09;管理模…

关于Windows11无法连接打印机

刚买的W11电脑&#xff0c;发现办公室的共享打印机连接不了&#xff0c;显示无法连接。也看了很多解决办法&#xff0c;都没能解决。 然后发现了可能是W11家庭版的问题&#xff0c;微软系统更新后&#xff0c;就是会存在打印机连接不上的问题。这个网址就可以解决以上的问题。…

Win10无法连接打印机怎么办?不能使用打印机的解决方法

在我们平常的办公中&#xff0c;经常会需要使用到打印机打印文件。想要使用打印机是需要先将电脑与打印机连接的&#xff0c;但是有部分Win10用户遇到了无法连接打印机的情况&#xff0c;对于这种情况应该如何解决呢&#xff1f;下面来看看详细的操作方法吧&#xff01; Ghost…

Win11 22H2共享打印机连不上怎么办?

Win11 22H2共享打印机连不上怎么办&#xff1f;有用户使用电脑的时候&#xff0c;需要去进行打印机的连接&#xff0c;但是在连接的过程中&#xff0c;却出现了无法连接的情况。那么遇到这个问题之后怎么去进行解决呢&#xff1f;一起来看看以下的解决方法分享吧。 解决方法&am…

windows无法连接到打印机?三个方法连接打印机(Win10系统)

在日常办公中&#xff0c;我们经常会用到打印机。一般情况下&#xff0c;打印机要与电脑连接才可以使用。有很多用户反馈&#xff0c;windows无法连接到打印机&#xff0c;这是怎么回事呢&#xff1f;请看文章是如何解决打印机无法连接到计算机的问题&#xff01; 操作环境&…

“windows无法连接到打印机”问题的解决

转载请注明出处&#xff1a;http://blog.csdn.net/dongdong9223/article/details/62045759 本文出自【我是干勾鱼的博客】 经常会出现“windows无法连接到打印机”这样的错误&#xff1a; 其实这是因为print spooler 自动关闭导致的&#xff0c;进入&#xff1a; 控制面板 -&…

windows无法连接到打印机

项目场景&#xff1a;windows无法连接到打印机 windows无法连接到打印机。本地打印后台处理程序服务没有运行。请重新启动打印机后台处理程序或重新启动计算机 问题描述 解决方案&#xff1a; 搜索服务&#xff0c;点击打开 搜索Print Spooler 查看状态是否运行&#xff0c;…

计算机无法连接打印机主机,电脑主机连不上网络打印机

其实网络打印机是一种智能型网络设备&#xff0c;它能够通过多种网络环境为大批用户提供打印服务。下面是学习啦小编为大家整理的关于电脑主机连不上网络打印机&#xff0c;一起来看看吧! 电脑主机连不上网络打印机 要解决无法连接的问题&#xff0c;我们要先将打印机取下在重新…