html+css+js实现小游戏flybird(完整版)

article/2025/9/29 15:53:27

      完整demo下载资源https://download.csdn.net/download/qq_30548105/10847675        

       从未做过前端的游戏,哪怕不是用引擎实现的小游戏也没做过,这次试了一下,参考了一些资料,资料也不是很完整,于是就自己补齐写了一个。仅仅娱乐,接下来先看下效果图。

                                                             

好了,废话不多说直接上代码。

首先先实现首页动画效果,如图

1.整个界面

<div id="wrap"><div id="Score"></div><div id="title"><img src="img/head.jpg" /><div id="beginBird"></div></div><div id="beginBtn"></div><div id="banner"></div><div id="bird" class="birdDown"></div><!-- 由js生成管道代码<div class="duct"><div class="upduct"><img src="img/up_pipe.png" /></div><div class="downduct"><img src="img/down_pipe.png" /></div></div>-->
</div>

2.背景样式

                     #wrap{/*游戏尺寸*/width: 343px;height: 480px;background: url(img/bg.jpg);position: relative;overflow: hidden;}#Score{/*游戏得分*/width: 28px;height: 39px;background: url(img/0.jpg);position: absolute;left: 50%;top: 70px;-webkit-transform: translate3d(-50%,0,0);-ms-transform: translate3d(-50%,0,0);-o-transform: translate3d(-50%,0,0);-moz-transform: translate3d(-50%,0,0);transform: translate3d(-50%,0,0);}#title{/*游戏开始页面的logo字+鸟部分的整体*/position: absolute;left: 50px;top: 150px;-webkit-animation: "fly" 1s infinite alternate;-ms-animation: "fly" 1s infinite alternate;-moz-animation: "fly" 1s infinite alternate;-o-animation: "fly" 1s infinite alternate;animation: "fly" 1s infinite alternate;}#beginBird{/*游戏开始页面的鸟*/width: 40px;height: 26px;background: url(img/bird0.png);position: absolute;right: 10px;top: 20px;-webkit-animation: "birdFly" 1s infinite alternate;-ms-animation: "birdFly" 1s infinite alternate;-moz-animation: "birdFly" 1s infinite alternate;-o-animation: "birdFly" 1s infinite alternate;animation: "birdFly" 1s infinite alternate;}#beginBtn{/*游戏开始按钮*/width: 85px;height: 29px;background: url(img/start.jpg);position: absolute;left: 50%;-webkit-transform: translate3d(-50%,0,0);-ms-transform: translate3d(-50%,0,0);-o-transform: translate3d(-50%,0,0);-moz-transform: translate3d(-50%,0,0);transform: translate3d(-50%,0,0);bottom: 150px;}#banner{/*游戏开始页面的logo字*/width: 686px;height: 14px;background: url(img/banner.jpg);position: absolute;bottom: 43px;-webkit-animation: "scrollBanner" 3s infinite linear;-ms-animation: "scrollBanner" 3s infinite linear;-moz-animation: "scrollBanner" 3s infinite linear;-o-animation: "scrollBanner" 3s infinite linear;animation: "scrollBanner" 3s infinite linear;}#bird{/*鸟*/width: 40px;height: 30px;position: absolute;left: 30px;top: 100px;display: none;}.birdUp{background: url(img/up_bird0.png) no-repeat;}.birdDown{background: url(img/down_bird0.png) no-repeat;}.duct{/*管道*/width: 62px;height: 423px;position: absolute;left: 343px;}.upduct{width: 62px;height: 150px;background: url(img/up_mod.png) repeat-y;position: relative;}.upduct img{position: absolute;bottom: 0;}.downduct{width: 62px;height: 100px;background: url(img/down_mod.png) repeat-y;position: absolute;bottom: 0;}

3.动画效果

/*游戏开始界面,logo字与右边的鸟上下反复运动动画*/@keyframes fly{from{-webkit-transform: translate3d(0,0,0);-ms-transform: translate3d(0,0,0);-o-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);transform: translate3d(0,0,0);}to{-webkit-transform: translate3d(0,30px,0);-ms-transform: translate3d(0,30px,0);-o-transform: translate3d(0,30px,0);-moz-transform: translate3d(0,30px,0);transform: translate3d(0,30px,0);}}/* 草坪滚动动画 */@keyframes scrollBanner{from{-webkit-transform: translate3d(0,0,0);-ms-transform: translate3d(0,0,0);-o-transform: translate3d(0,0,0);-moz-transform: translate3d(0,0,0);transform: translate3d(0,0,0);}to{-webkit-transform: translate3d(-343px,0,0);-ms-transform: translate3d(-343px,0,0);-o-transform: translate3d(-343px,0,0);-moz-transform: translate3d(-343px,0,0);transform: translate3d(-343px,0,0);}}/*游戏开始页面小鸟翅膀变化效果*/@keyframes birdFly{from{background: url(img/bird0.png);}to{background: url(img/bird1.png);}}

4.矩形碰撞示意图

以目标为参照物,子弹绕目标一圈的范围即都算是碰撞范围

 

5.鸟与管道碰撞示意图

红色区域为碰撞范围

 

6.js处理

鸟移动的处理

//鸟移动的方法function birdMove(){offTop =bird.offsetTop;birdTimer=setInterval(function(){offTop+=y;y+=0.5;if (y>=6) {y=6;}if (y<0) {bird.className="birdUp";} else{bird.className="birdDown";}if (offTop>=480-87) {offTop=480-87;clearInterval(birdTimer);} bird.style.top=offTop+"px";},30)}

管道生成代码

/*创建管道的方法*/function createDuct(){ductTimer=setInterval(function(){var duct=document.createElement("div");duct.className="duct";wrap.appendChild(duct);//生成上管道var up=document.createElement("div");up.className="upduct";up.style.height=random(60,203)+"px";duct.appendChild(up);var upImg=document.createElement("img");upImg.src="img/up_pipe.png";up.appendChild(upImg);//生成下管道var down=document.createElement("div");down.className="downduct";down.style.height=323-up.offsetHeight+"px";duct.appendChild(down);var downImg=document.createElement("img");downImg.src="img/down_pipe.png";down.appendChild(downImg);ductMove(duct,up.offsetTop+up.offsetHeight,down.offsetTop);},3000)}

管道移动的方法

/*** 管道移动方法* @param {管道} duct* @param {上管道的顶部位置} upTop* @param {下管道的顶部位置} downTop*/function ductMove(duct,upTop,downTop){var offLeft=duct.offsetLeft;duct.move=setInterval(function(){offLeft-=1;if (collision(bird,duct,upTop,downTop)) {clearInterval(duct.move);clearInterval(ductTimer);stop=true;wrap.onclick=null;}if(!stop){duct.style.left=offLeft+"px";}},20);}

鸟与管道碰撞算法

/*鸟与管道的碰撞算法*/function collision(first,second,upTop,downTop){var minX=second.offsetLeft-first.offsetWidth;var maxX=second.offsetLeft+second.offsetWidth;var minY=second.offsetTop-first.offsetHeight;var maxY=second.offsetTop+second.offsetHeight;if(first.offsetLeft>=minX && first.offsetLeft<=maxX &&first.offsetTop>=minY && first.offsetTop<=maxY && (first.offsetTop<=upTop || first.offsetTop+first.style.height>=downTop)){return true;}return false;}

好了,以上就可以实现这样的效果了。只是练习的demo。


http://chatgpt.dhexx.cn/article/867ITHsq.shtml

相关文章

JS实现FlyBird

放假等毕业还是挺无聊的&#xff0c;正好闲着没事做就学了学JS&#xff0c;也算是重拾吧&#xff0c;照着视频写了一个&#xff0c;然后。。。视频源找不到了 1.环境和工具 windows10 WebStrom2018.1.4 测试直接用的webstrom里面的 2.运行截图 类似于这样&#xff0c;然后…

纯C语言编程-游戏之Fly Bird

基于纯C的小游戏&#xff0c;基本思想就是使用system("cls")和printf()函数不断刷新界面&#xff0c;捕获键盘事件&#xff0c;然后修改显示数组&#xff0c;并刷新界面。 之前有一款特别火爆的小游戏FlyBird&#xff0c;我们可以使用纯C语言实现&#xff0c;希望对…

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

// 飞翔的小鸟.cpp #include "stdafx.h" #include <graphics.h> //图形库头文件 #include <stdlib.h> //Sleep #include <conio.h> //_getch()按键盘 #include <stdio.h> //C语言头文件 #include <time.h> //随机函数使…

【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; 操作环境&…