位置: IT常识 - 正文

HTML小游戏25 —— HTML5拉杆子过关小游戏(附完整源码)(html在线小游戏)

编辑:rootadmin
HTML小游戏25 —— HTML5拉杆子过关小游戏(附完整源码)

推荐整理分享HTML小游戏25 —— HTML5拉杆子过关小游戏(附完整源码)(html在线小游戏),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:html小游戏源码,html5简单小游戏代码,简单的html小游戏100行代码,html简单游戏,html简单游戏,html小游戏源码,简单的html小游戏100行代码,html在线小游戏,内容如对您有帮助,希望把文章链接给更多的朋友!

本节教程我会带大家使用 HTML 、CSS和 JS 来制作一个HTML5拉杆子过关小游戏

✨ 前言

🕹️ 本文已收录于🎖️100个HTML小游戏专栏:100个H5游戏专栏https://blog.csdn.net/qq_53544522/category_12064846.html🎮 目前已有100+小游戏,源码在持续更新中,前100位订阅限时优惠,先到先得。 🐬 订阅专栏后可阅读100个HTML小游戏文章;还可私聊进前端/游戏制作学习交流群;领取一百个小游戏源码。

在线演示地址:https://code.haiyong.site/964/ 源码也可在文末进行获取

✨ 项目基本结构

大致目录结构如下(共3个子文件):

├── js│   └──script.js 13KB├── css│   └── style.css 1KB└── index.html 2KB场景展示

HTML源码<div class="container"> <div id="score"></div> <canvas id="game" width="375" height="375"></canvas> <div id="introduction">按住鼠标伸出一根棍子</div> <div id="perfect">双倍积分</div> <button id="restart">重新开始</button></div>CSS 源码

html,body

html,body { height: 100%; margin: 0;}body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; cursor: pointer;}

container

.container { display: flex; justify-content: center; align-items: center; height: 100%;}

score

#score { position: absolute; top: 30px; right: 30px; font-size: 2em; font-weight: 900;}

introduction

#introduction { width: 200px; height: 150px; position: absolute; font-weight: 600; font-size: 0.8em; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; text-align: center; transition: opacity 2s;}

restart

#restart { width: 120px; height: 120px; position: absolute; border-radius: 50%; color: white; background-color: red; border: none; font-weight: 700; font-size: 1.2em; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; display: none; cursor: pointer;}

perfect

#perfect { position: absolute; opacity: 0; transition: opacity 2s;}JS 源码HTML小游戏25 —— HTML5拉杆子过关小游戏(附完整源码)(html在线小游戏)

js 代码较多,这里提供部分,完整源码可以在文末下载

配置

const canvasWidth = 375;const canvasHeight = 375;const platformHeight = 100;const heroDistanceFromEdge = 10; // 等待时const paddingX = 100; // 从原始画布尺寸开始,英雄的等待位置const perfectAreaSize = 10;

重置游戏变量和布局,但不启动游戏(游戏在按键时开始)

function resetGame() { // 重置游戏进度 phase = "waiting"; lastTimestamp = undefined; sceneOffset = 0; score = 0; introductionElement.style.opacity = 1; perfectElement.style.opacity = 0; restartButton.style.display = "none"; scoreElement.innerText = score; // 第一个平台总是相同的x+w必须匹配paddingX platforms = [{ x: 50, w: 50 }]; generatePlatform(); generatePlatform(); generatePlatform(); generatePlatform(); sticks = [{ x: platforms[0].x + platforms[0].w, length: 0, rotation: 0 }]; trees = []; generateTree(); generateTree(); generateTree(); generateTree(); generateTree(); generateTree(); generateTree(); generateTree(); generateTree(); generateTree(); heroX = platforms[0].x + platforms[0].w - heroDistanceFromEdge; heroY = 0; draw();}

最远树右边缘的X坐标

const lastTree = trees[trees.length - 1]; let furthestX = lastTree ? lastTree.x : 0;

如果按下空格键,则重新启动游戏

window.addEventListener("keydown", function (event) { if (event.key == " ") { event.preventDefault(); resetGame(); return; }});

返回棍子击中的平台(如果没有击中任何棍子,则返回未定义)

function thePlatformTheStickHits() { if (sticks.last().rotation != 90) throw Error(`Stick is ${sticks.last().rotation}°`); const stickFarX = sticks.last().x + sticks.last().length; const platformTheStickHits = platforms.find( (platform) => platform.x < stickFarX && stickFarX < platform.x + platform.w ); // 如果棍子击中完美区域 if ( platformTheStickHits && platformTheStickHits.x + platformTheStickHits.w / 2 - perfectAreaSize / 2 < stickFarX && stickFarX < platformTheStickHits.x + platformTheStickHits.w / 2 + perfectAreaSize / 2 ) return [platformTheStickHits, true]; return [platformTheStickHits, false];}

将主画布区域居中到屏幕中间

ctx.translate( (window.innerWidth - canvasWidth) / 2 - sceneOffset, (window.innerHeight - canvasHeight) / 2 );

绘制场景

drawPlatforms(); drawHero(); drawSticks();

山丘是伸展的正弦波下的形状

function drawHill(baseHeight, amplitude, stretch, color) { ctx.beginPath(); ctx.moveTo(0, window.innerHeight); ctx.lineTo(0, getHillY(0, baseHeight, amplitude, stretch)); for (let i = 0; i < window.innerWidth; i++) { ctx.lineTo(i, getHillY(i, baseHeight, amplitude, stretch)); } ctx.lineTo(window.innerWidth, window.innerHeight); ctx.fillStyle = color; ctx.fill();} ⭐️ 好书推荐

《电脑入门基础教程(Windows 11+Office 2021)》

内容介绍

全书共 15 章,系统并全面地讲解了电脑基础知识、电脑入门操作、Windows 11 系统的操作与应用、电脑打字的方法、电脑文件的管理、电脑软件的安装与管理、电脑连网和上网操作、网络通信与聊天交流、网上日常生活与娱乐、电脑系统维护与安全防范,以及使用Word 2021、Excel 2021 和PowerPoint 2021 高效办公等知识技能。

源码下载

1.CSDN资源下载:https://download.csdn.net/download/qq_44273429/87778335

2.也可通过下方卡片添加好友回复拉杆子获取

本文链接地址:https://www.jiuchutong.com/zhishi/299006.html 转载请保留说明!

上一篇:聊聊关于图像分割的损失函数 - BCEWithLogitsLoss(图像可以分成哪些类别?)

下一篇:数字图像处理实验(直方图均衡化&规定化)(数字图像处理实验一实验报告)

  • 钉钉电脑版可以打卡吗(钉钉电脑版可以打卡下班吗)

    钉钉电脑版可以打卡吗(钉钉电脑版可以打卡下班吗)

  • win10飞行模式怎么关掉(win10飞行模式怎么关闭不了)

    win10飞行模式怎么关掉(win10飞行模式怎么关闭不了)

  • 日版iwatch5蜂窝国内能用吗(日版iwatch6蜂窝国内能用吗)

    日版iwatch5蜂窝国内能用吗(日版iwatch6蜂窝国内能用吗)

  • b站一天最多多少经验(b站一天最多多少亲密度)

    b站一天最多多少经验(b站一天最多多少亲密度)

  • 苹果7plus型号mnft2ch/a(苹果7plus型号mnfp2ch/a)

    苹果7plus型号mnft2ch/a(苹果7plus型号mnfp2ch/a)

  • vivo 23支持无线充电吗(vivox27支持无线)

    vivo 23支持无线充电吗(vivox27支持无线)

  • 视频可以ps吗(ps视频剪辑)

    视频可以ps吗(ps视频剪辑)

  • 华为改不了微信提示音(华为改不了微信支付方式)

    华为改不了微信提示音(华为改不了微信支付方式)

  • ipad卡在白苹果界面(ipad卡在白苹果怎么办)

    ipad卡在白苹果界面(ipad卡在白苹果怎么办)

  • 苹果wapi打开还是关闭(苹果手机wapi打开好还是不打开)

    苹果wapi打开还是关闭(苹果手机wapi打开好还是不打开)

  • 撤回的邮件对方还能看到吗(撤回的邮件对方还能看到撤回吗)

    撤回的邮件对方还能看到吗(撤回的邮件对方还能看到撤回吗)

  • 电脑tpm设备是什么

    电脑tpm设备是什么

  • 电脑ctrl键不能用(电脑的ctrl键用不了)

    电脑ctrl键不能用(电脑的ctrl键用不了)

  • 苹果官网发货要多久(苹果官网发货要过海关吗)

    苹果官网发货要多久(苹果官网发货要过海关吗)

  • 钉钉显示两个名怎么办(钉钉显示两个名字)

    钉钉显示两个名怎么办(钉钉显示两个名字)

  • 华为荣耀9x是不是全网通(华为荣耀9x是不是防水的)

    华为荣耀9x是不是全网通(华为荣耀9x是不是防水的)

  • oppoa57有小爱同学吗(oppoa5小爱在哪里)

    oppoa57有小爱同学吗(oppoa5小爱在哪里)

  • iphonex屏幕亮度自动调整怎么关(iphonex的亮度)

    iphonex屏幕亮度自动调整怎么关(iphonex的亮度)

  • 天猫精灵远程唤醒是什么意思(天猫精灵远程唤醒有什么用)

    天猫精灵远程唤醒是什么意思(天猫精灵远程唤醒有什么用)

  • 苹果官方标配都有什么(iphone官方标配都有什么)

    苹果官方标配都有什么(iphone官方标配都有什么)

  • 淘金币明细在哪里(淘金币使用记录)

    淘金币明细在哪里(淘金币使用记录)

  • 手机怎么查连接的wifi密码(手机怎么查连接WiFi的IP地址)

    手机怎么查连接的wifi密码(手机怎么查连接WiFi的IP地址)

  • 小天才z5 怎么冲不上电了(小天才z5q怎么充电)

    小天才z5 怎么冲不上电了(小天才z5q怎么充电)

  • ppt怎么取消兼容模式(如何取消幻灯片的兼容模式)

    ppt怎么取消兼容模式(如何取消幻灯片的兼容模式)

  • 腾达静态ip设置填什么(腾达路由器静态ip怎么设置参数)

    腾达静态ip设置填什么(腾达路由器静态ip怎么设置参数)

  • 共享单车用完哪里还车(共享单车用完放哪里)

    共享单车用完哪里还车(共享单车用完放哪里)

  • 索尼xperia1拍照有美颜吗

    索尼xperia1拍照有美颜吗

  • 汽车购置税怎么算2023
  • 我国当前税制结构的基本情况是怎样的
  • 增值税的征税范围
  • 财务人员办理会计业务
  • 增值税留抵注销时怎么办
  • 小规模纳税人给个人怎么开发票
  • 冲回存货跌价准备所得税是调增还是调减
  • 用友t3年末怎么结转
  • 国际货运代理免税报表填写
  • 公司团建取得的进项发票可以抵扣增值税吗
  • 1%是什么税
  • 虚开增值税立案标准
  • 托收承付和委托收款的含义和相同之处
  • 冲账其他应付款
  • 开公司财务流程
  • 一般纳税人公司卖车怎么做账
  • 支付保安公司的钱违法吗
  • 汇算清缴后发放的工资
  • 3个点的发票有哪些
  • 增值税专用发票可以开电子发票吗
  • 案例讲解:当年度未及时取得有效凭证的相关成本、费用涉税处理
  • 个人汽车租给公司租金需多少钱?
  • 小区物业宿舍
  • 员工个人所得税申报方式选哪个
  • 资产处置损益是收入还是费用
  • 工会经费由企业和职工共同负担吗
  • 费用化和资本化对利润的影响
  • 附加税的税率是多少2023年
  • 如何增强无线网卡的接收能力
  • 安装win7的步骤
  • 抵债资产会计核算
  • php面试题目100及最佳答案
  • linux的用法
  • nomoreporn.exe - nomoreporn是什么进程 有什么用
  • 代缴个税的分录
  • 企业的支付宝
  • 继续涉入资产会计处理
  • 未注册未认证
  • arc架构
  • 猿厂猿作设计机构招聘
  • gfortran编译命令
  • fold命令 限制文件列宽
  • 广告费成本包括哪些内容
  • 现金流量表的附表如何编制
  • c语言中局部变量和全局变量同名
  • 电子发票的优点好处
  • 小微企业认定需要哪些资料
  • 电子发票如何申领取电子发票
  • 增值税是指哪些税种
  • 公司转让商铺应交什么税
  • 房产税的纳税人包括
  • 消费税是指怎样的收入
  • 发票已开款未到的会计分录?
  • 企业收到退税款在年报怎么填
  • 发票冲红重开,重开时是按新税率还是旧税率?
  • 代发的工资如何做账
  • 注册资本未到位注销公司处理
  • 电子承兑汇票到期网银上怎么操作
  • 个体工商户可以变更法人吗
  • 其他应收款包括哪些会计科目
  • 建筑公司租赁费会计分录
  • 工商联络注册
  • 预计负债的会计和税务处理
  • 无票收入怎么做账,要交税吗,填入增值税申报表
  • win2003好用吗
  • ubuntu gvfs
  • linux远程界面
  • 注册表干嘛用
  • 电脑windowxp系统重装
  • windows7开机后网络标志转圈
  • windows查询
  • 怎样把系统及软件迁移到固态
  • linux中ftp命令的用法
  • 低端显卡n卡设置
  • bat脚本编写教程菜鸟
  • html5webview交互
  • jquery怎么设置宽度
  • jquery分页插件的使用
  • 卷票真伪查询系统国税
  • 电子税务局申报流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设