使用HTML5制作的网页游戏-管道小鸟(附源码)

article/2024/12/30 2:36:01

目录

1.整体项目框架

2.css样式

3. 游戏初始化

4.游戏结束提示

5.效果图​


1.整体项目框架

2.css样式

*{padding: 0px;margin: 0px;}#game{width: 800px;height: 600px;background-image: url(img/bg.png);position: relative;overflow: hidden;/*溢出隐藏*/}#bird{width: 34px;height: 25px;background: url(img/bird.png) -8px -10px no-repeat;position: absolute;top: 100px;left: 100px;}#score{color: red;position: absolute;top: 15px;left: 25px;z-index: 100;}#start{position: absolute;top: 190px;left: 300px;z-index: 150;}


           

 3. 游戏初始化:


            1.获取背景和小鸟的对象
            2.初始化天空和小鸟的位置
           3.移动背景图片,将背景图的横坐标X连续减少5px,使它往左移动;
            4.背景图片移动的同时设置小鸟持续下落,鸟的纵坐标Y连续增加1px,
            5.小鸟下落做碰撞判断:
               5.1判断小鸟落到地上,gameover
                5.2判断小鸟飞出天际,gameover

             6.键盘向上键UP控制小鸟向上飞,每次飞10px;
             7.创建管道:
                7.1创建管道对象
                7.2初始化管道位置
                7.3初始化上下管道的长度
                7.4创建管道容器div,分别设置容器的属性:宽度、高度、背景图、绝对位置
                 7.5将管道节点添加到天空背景节点中

             8.让管道向左移动setInterval()
                8.1设置管道初始位置
                8.2设置管道的随机高度
                8.3创建管道容器div
                8.4设置容器样式
                8.5添加容器到背景中

             9.让管道动起来
                9.1管道的横坐标依次减少
                9.2管道超出屏幕再设置从头开始进入
                9.3累计分数:通过一根管道加一分
                9.4判断小鸟的碰撞

<div id="game"><span id="score">得分是:0</span><div id="bird"></div></div><script type="text/javascript">var count=0;var score=document.getElementById("score");var game=document.getElementById("game");var birdEl=document.getElementById("bird");//初始化天空的位置var sky={x:0}//初始化小鸟的位置bird={speedX: 5,speedY: 0,x:birdEl.offsetLeft,y:birdEl.offsetTop}var running=true;//默认游戏开始/** 水平移动背景*/setInterval(function(){if (running) {//播放音乐//playSound("sound/赵传 - 我是一只小小鸟.mp3");//屏幕连续水平移动5像素sky.x-=5;game.style.backgroundPositionX=sky.x+"px";//小鸟持续下降bird.speedY+=1;bird.y+=bird.speedY;if(bird.y<0){//小鸟飞出天际running=false;bird.y=0;console.log(birdEl.offsetHeight);gameover();}if(bird.y+birdEl.offsetHeight>600){running=false;bird.y=600-birdEl.offsetHeight;gameover();}//固定在死亡的位置birdEl.style.top = bird.y+"px";}},30);/** 键盘操作小鸟向上飞*/document.onkeydown=function(){var key=event.keyCode;if(key==38){bird.speedY =-10;}}function createPipe(positionX){//7.1创建管道对象var pipe={};//7.2初始化管道位置pipe.x=positionX;//7.3初始化上下管道的长度pipe.uHeight=200+parseInt(Math.random()*100);pipe.dHeight=600-pipe.uHeight-200;pipe.uTop=pipe.uHeight+200;//7.4创建管道容器div,分别设置容器的属性:宽度、高度、背景图、绝对位置var uPipe=document.createElement("div");uPipe.style.width="52px";uPipe.style.height=pipe.uHeight+"px";uPipe.style.background="url('img/down.png') no-repeat center bottom";uPipe.style.position="absolute";uPipe.style.top="0px";uPipe.style.left=pipe.x+"px";//7.5将管道节点添加到天空背景节点中game.appendChild(uPipe);var dPipe=document.createElement("div");dPipe.style.width="52px";dPipe.style.height=pipe.dHeight+"px";dPipe.style.background="url(img/up.png) no-repeat center top";dPipe.style.position="absolute";dPipe.style.top=pipe.uTop+"px";dPipe.style.left=pipe.x+"px";game.appendChild(dPipe);//9.让管道动起来setInterval(function(){if(running){pipe.x-=3;//移动位置uPipe.style.left=pipe.x+"px";dPipe.style.left=pipe.x+"px";//管道超出屏幕再设置从头开始进入if (pipe.x<-52) {pipe.x=800;}//累计分数:通过一根管道加分if(bird.x>pipe.x+52){count+=1;score.innerHTML="<h3>得分:"+count+"</h3>"}//判断小鸟的碰撞var uCrash=bird.x+34>pipe.x && bird.x<pipe.x+52 && bird.y<pipe.uHeight;var dCrash=bird.x+34>pipe.x && bird.x<pipe.x+52 && bird.y>pipe.uHeight+180;if(uCrash || dCrash){running=false;gameover();}}},30);}

4.游戏结束提示

function gameover(){var over=document.createElement("img");over.src="img/gameover.png";over.style.position="absolute";over.style.top="190px";over.style.left="330px";over.style.zIndex="150";game.appendChild(over);}createPipe(400);createPipe(600);createPipe(800);createPipe(1000);</script>

5.效果图

 

 注:使用键盘上下键控制小鸟。


http://chatgpt.dhexx.cn/article/DUwjaMnj.shtml

相关文章

html做的小游戏,41个用HTML5制作完成的游戏作品

了解的人都应该知道HTML5有大量的动画和交互功能&#xff0c;完全可以用来完成一些游戏类的操作&#xff0c;今天收集分享&#xff1a;41个用HTML5制作完成的游戏作品&#xff0c;希望其中有你喜欢和需要的&#xff0c;或者可以给你带来灵感的。 1-Pirateslovedaisies 2-Torus …

John Petrucci-Wild Stringdom(1)

John Petrucci-Wild Stringdom(1) 第一章 练习导致完美 最能打击一个吉他手的事情&#xff0c;莫过于不能很快地达到自认为理所当然的水平而带来的焦虑。如果你经常在弹了数小时以后依然发现自己一无所获。那么这章就是专门为你写的。这章主要是概括了该如何练习的要点。当你开…

知识的迷宫 网络上的时间是如何度过的

作者&#xff1a;马伯庸 字数&#xff1a;1287 我在写一篇专栏文章&#xff0c;需要查阅一下关于宣武门的资料。   现在查资料比从前方便多了&#xff0c;只消在网上检索一下&#xff0c;立刻得到海量信息。于是很快我就得到了想要的资料&#xff0c;准备动笔写了。  …

蓝色默认蓝色色值_美丽的蓝色网站展示

每次您访问一个从未见过的网站时&#xff0c;第一印象是什么&#xff1f; 这是配色方案&#xff01; 颜色对任何用户而言都是最重要的。 颜色是影响个人感知的第一件事 &#xff0c;它以微妙的方式传达信息。 无论内容的质量如何&#xff0c;或网站的可用性如何&#xff0c;至…

130 余个相见恨晚的超实用网站,总有一个用得着

Python实战社群 Java实战社群 长按识别下方二维码&#xff0c;按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨Caesar 来源丨手机电脑双黑客 文章目录 130 余个相见恨晚的超实用网站搞学习找书籍冷知识 / 黑科技写代码资源搜索小工具导航页&…

设计一个简单HTML爵士音乐网页(HTML+CSS)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

布鲁斯口琴进阶教程资料分享

写在前边 打算在博客园里更新点关于音乐相关的内容&#xff0c;看过我学习Spring Cloud系列博客的园友&#xff0c;可能很早就看到我碎碎念说学半音阶口琴&#xff0c;2020疫情期间&#xff0c;我又学了布鲁斯口琴 [嘿哈] 布鲁斯口琴的教程很多&#xff0c;常见的有蓝调口琴网&…

提高免疫力吃什么 多吃奶制品

免疫力对于我们每个人来说都是极其重要的&#xff0c;而我们可以通过平常的一些食物摄入来提高免疫力&#xff0c;那么提高免疫力吃什么呢?一起了解一下。 提高免疫力吃什么 奶制品 奶制品不但是提供钙元素的好食品&#xff0c;而且它含大量的蛋白质&#xff0c;维他命(包括…

荒野白牡丹都有啥功效,白牡丹茶对人体的功效与作用

荒野白牡丹是白茶的种类之一&#xff0c;功效有延缓抗衰老、抗氧化、杀菌消炎等功效。还有退热、护肝、明目、提神的作用。 白牡丹茶的功效&#xff1a; 1、延缓抗衰老 ​ 白牡丹茶能抗衰老&#xff0c;多喝白牡丹茶能美白养颜、抗衰老&#xff0c;最适合女人饮用&#xff0c;加…

鲜牛奶的功效与作用

说起牛奶想必大家都不陌生&#xff0c;也知道牛奶补钙这一说法&#xff0c;确实如此&#xff0c;喝牛奶是有很多好处的&#xff0c;其中一个就是补钙&#xff0c;但怎么喝才能最健康呢&#xff1f;其实牛奶也是有区分的&#xff0c;就拿鲜牛奶来说&#xff0c;它是牛奶脱离牛体…

买牛奶

买牛奶 时间限制&#xff1a; 1000 ms | 内存限制&#xff1a; 65535 KB 难度&#xff1a; 1 描述 LYH的朋友XY很喜欢喝牛奶&#xff0c;他几乎每天都要喝一袋牛奶。但是XY买牛奶时很讲究&#xff0c;如果不符合他的要求&#xff0c;就算不喝他也不会买的。他一共有两个要求&…

牛奶食疗可治多种疾病(图)

牛奶食疗可治多种疾病(图) http://www.sina.com.cn 2008年05月08日10:41 当代健康报 牛奶食疗方法推荐 牛奶、羊奶各125毫升&#xff0c;混合煮沸&#xff0c;每天早晨空腹服一次。适用于胃痛、胃溃疡。 牛奶250毫升&#xff0c;蜂蜜100克&#xff0c;混合煮沸&#xff0c;每天…

茶叶基本成份及功效

茶叶基本成份及功效 概述 饮茶有许多益处&#xff0c;这是众所周知的。但饮茶为什么会有许多好处呢&#xff1f;这对一般人来说&#xff0c;是 知其然而不知其所以然 。随着科学的发展&#xff0c;到了19世纪初&#xff0c; 茶叶 的成分才逐渐明确起来。经过现代科学的分离…

花生的营养价值

营养价值 一、花生的成分 花生 花生每100克含水分7.3克&#xff0c;蛋白质24.6克&#xff0c;脂肪48.7克&#xff0c;碳水化合物15.3克&#xff0c;粗纤维2.1克&#xff0c;灰分2克&#xff0c;钙36毫克&#xff0c;磷383毫克&#xff0c;铁2毫克&#xff0c;另花生仁中含有胡…

【历史上的今天】10 月 29 日:互联网的正式诞生;MariaDB 发布首个版本;“天河一号”研制成功

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2022 年 10 月 29 日&#xff0c;在 9 年前的今天&#xff0c;世界首台比特币自动提款机在加拿大温哥华启用&#xff0c;办理加拿大元与比特币的兑换&#xff0c;迅速迎…

【狂神说Mybatis29道练习题】

Mybatis Mybatis动态SQL&#xff08;狂神说学习笔记&#xff09;29道练习题 Mybatis动态SQL&#xff08;狂神说学习笔记&#xff09;29道练习题 以下代码分为工具类、几个配置文件&#xff08;mybatis-config.xml&#xff09;、实体类、持久层&#xff08;mapper映射文件&…

Android 改造——SDK从29升级至30引发的一系列问题

SDK29代表支持在安卓10上运行 SDK30代表支持在安卓11上运行 Android 11 将强制执行分区存储&#xff0c;Android 无法创建和访问自定义目录 Android 11 中的存储机制更新&#xff1a;官方文档描述 原本的缓存无法访问&#xff0c;如何迁移老数据&#xff1f; 官方推荐方法&a…

联想K29昭阳K29笔记本联想K49A在dos下刷入bios教程

联想K29昭阳K29笔记本联想K49A在dos下刷入bios教程 本人也是小白一枚&#xff0c;平时也就会装个系统啥的&#xff0c;偶然得知低版本有我要的功能&#xff0c;所以走上了一条刷bios之路&#xff0c;各种教程搜&#xff0c;刷各种包&#xff0c;没有一条说的详尽的&#xff0c;…

集群报错 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found

集群报错&#xff1a;ImportError: /lib64/libstdc.so.6: version GLIBCXX_3.4.29’ not found 集群报上述错误&#xff0c;没有root权限&#xff0c;不想麻烦管理员的解决办法&#xff1a; 问题描述 ImportError: /lib64/libstdc.so.6: version GLIBCXX_3.4.29 not found …

Crackme 29

首先用OD查找字符串 首先看到了比较跳转的地方&#xff0c;我输入的name:1234567 serial:123456 开始找算法 1.处理name的 2.处理serial的 编写exploit name raw_input("name:") name A name s f cx 0x0a for i in range (1,len(name)):s chr(i^…