js谐音梗创意小游戏《望子成龙》

🌻 前言

龙年到来,祥瑞满天。愿您如龙般矫健,事业腾飞;如龙鳞闪耀,生活美满。祝您龙年大吉,万事如意!

龙年伊始,我给各位设计了一款原创的小游戏,话不多说,直接进入正题,只求各位一个小赞👍

🔥 游戏体验

游戏灵感

灵感来源于一个成语“望子成龙”,我把它具象化,把成语的意思字面化。即看到孩子变成龙,从而我联想到如果看到孩子变成龙,即闯关成功,如果看到孩子变成了其他动物,则闯关失败。

顺藤摸瓜,据此思路我想到了1,2,3木头人这款游戏,类似的规则进行二创,最终想到了我这款小游戏。

具体游戏介绍可以看游戏首页简介。

在这里插入图片描述

游戏背景

背景故事:有一天你被一条恶龙捉回了老巢,你发现它守着几颗蛋,盼望着它的孩子出生。你可怜巴巴的乞求恶龙放了你,恶龙说:“如果一会儿我的孩子出生成为猛龙,我一开心或许会放了你”。你听到这,暗暗想办法如何能找到真正的龙蛋孵化成龙,于是,一场集眼力、反应、手速的较量开始了。。。

在这里插入图片描述

游戏规则

  1. 找到真正的龙蛋(考验眼力和专注力)

页面中有n颗蛋,在开始游戏时,会有n个光点随机进入这几个蛋。其中开始闪烁蓝光的光点即“龙魂”,“龙魂”进入的蛋即可孵化成龙。你需要盯紧蓝色光点的运动轨迹,不要“跟丢了”,找到真正的龙蛋!

在这里插入图片描述

龙魂通过旋转随机打乱:

在这里插入图片描述

  1. 快速点击蛋帮其破壳(考验手速)

在光点进入蛋之后,即游戏正式开始,进入倒计时阶段。你需要快速点击“龙蛋”帮助其孵化。每颗蛋上都写了距离破壳剩余的点击次数。你需要在倒计时结束前敲碎“龙蛋”,孵化成龙。

在这里插入图片描述

成功孵化龙蛋即挑战成功:

孵化出了其他动物即挑战失败:

  1. 恶龙睁眼时不能敲击龙蛋(考验反应力)

在倒计时阶段,恶龙会随机睁眼,在恶龙睁眼时,千万不能点集蛋,否则直接挑战失败!

  1. 游戏共5关,越来越难(挑战极限)

每过一关,会增加蛋的数量或者提高蛋破壳需要点击的次数,过五关即可挑战成功。

在线地址

体验地址:https://code.juejin.cn/pen/7326221741822246927

🎨 开发流程

这款游戏我是用原生js进行开发的,开发思路如下:
分析游戏场景,需要设计三个class类:游戏管理器、眼睛、蛋。
眼睛和蛋的类负责封装其对应拥有的属性和方法。具体控制游戏进度由游戏管理器类控制。

文章中不对代码做过多阐述,码上掘金里有全部代码。

眼睛类

眼睛主要控制展示游戏结果,所以要具备更新眼镜状态的方法,在验证结果、闯关成功、闯关失败时都需要修改眼睛的状态,以更新页面动效的展示。另外还需要有一个眨眼的方法。

其他参数是用来控制眼睛动效时长的,将动画的animation-duration抽离出来以方便更好的控制动画衔接,其实也可以用js监听动画进度,但是很多地方就得绑定好多事件,所以我决定还是用变量控制。

 class eye {
      constructor() {
        this.delayOpen = 0.5 // 延迟修改状态为open的时间,眨眼时让玩家有反应时间
        this.openTime = 1.2; // 睁眼睛的动画时长
        this.changeTime = 0.3 // 眼神变化的动画时长
        this.status = '' // 眼睛状态 默认闭眼  open睁眼  smile笑  angry生气
      }
      // 更新眼的状态
      updateEyeStatus(status) {
         ... 控制眼睛状态
      }
      // 眨眼
      wink() {
         ... 眼睛状态由闭眼-> 睁眼 -> 闭眼
      }
    }

蛋类

蛋类需要具备的主要属性有:血量(即需要点击几次才能破壳)、名称、孵化状态

方法:敲击蛋、孵化

class egg {
      constructor(name, health) {
        this.name = name;
        this.allHealth = health //总血量
        this.health = health; //实时血量
        this.isBorn = false; //是否出生
      }
      // 敲击蛋破裂次数减1
      knock() {
         ... 当血量变成0时孵化该蛋
      }
      // 孵化
      incubate() {
        
      }
    }

游戏管理器

游戏管理器是最关键的部分,它负责初始化游戏场景、控制游戏进度、控制关卡、实例化眼睛和蛋并更新他们的状态、随机打乱蛋的顺序、判断是否闯关成功、展示结果。

其中最麻烦的就是如何随机打乱蛋的顺序,想了很久,最后用了以下办法:

n个光点随机旋转,每个光点对应一个蛋,在旋转结束后,根据他们在屏幕中的坐标,x坐标从小到大排列,即可做到随机将蛋排序。总之这里很麻烦,但是暂时没想到其他更好的打乱方法。感兴趣的可以看码上掘金的代码,欢迎给予建议或意见。

另外,判断游戏输赢的方式是:如果倒计时结束,所有蛋的实例中没有孵化的,或者孵化的蛋名称不是“龙”即挑战失败。

 class gamer {
      constructor() {
      }
      // 打乱蛋的顺序
      async disruptionEggs() {
      }
      // 更新蛋的顺序
      updateEggsPosition(nameArr, positions, resolve) {
      }
      // 开始倒计时控制游戏进度
      countdown() {
      }
      // 判断是否看到了龙
      judgeSee(eggs) {
      }
      // 展示闯关结果
      showResult() {
      }
      // 失败暂停游戏
      paused() {
      }
      // 开始游戏
      async start() {
      }
      // 再试一次
      async retry() {
      }
      // 下一关
      async next() {
    }

🎁 最后

我是喜欢归纳总结前端相关知识的前端阿彬,尽力持续输出原创优质文章,欢迎点赞关注😘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/402378.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WP----Look 我看的见你,你却看不见我 tips:sql injection tips2: mysql 字符集

0x00 题目连接打开后,是空白的,源代码也是空白的 这种情况就抓包,看请求包和相应包里面是否有提示 相应包中存在很特别的响应头X-HT: verify 可能是参数,传递任意参数过去 0x01 传递5个长度的参数时,返回 说明参数的…

Java SourceDataLine 播放音频 显示频谱

Java SourceDataLine 播放MP3音频 显示频谱 1 添加依赖2 快速傅里叶变换2.1 FFT.java2.2 Complex.java 3 音频播放3.1 Player.java3.1 XPlayer.java 4 显示频谱5 结果 项目Value音频格式 添加依赖*.wav(JDK 原生支持)*.pcm(JDK 原生支持)*.au(JDK 原生支持)*.aiff(JDK 原生支持…

SQL 练习题目(入门级)

今天发现了一个练习SQL的网站--牛客网。里面题目挺多的,按照入门、简单、中等、困难进行了分类,可以直接在线输入SQL语句验证是否正确,并且提供了测试表的创建语句,也可以方便自己拓展练习,感觉还是很不错的一个网站&a…

10MARL深度强化学习 Value Decomposition in Common-Reward Games

文章目录 前言1、价值分解的研究现状2、Individual-Global-Max Property3、Linear and Monotonic Value Decomposition3.1线性值分解3.2 单调值分解 前言 中心化价值函数能够缓解一些多智能体强化学习当中的问题,如非平稳性、局部可观测、信用分配与均衡选择等问题…

2024年.NET框架发展趋势预测

.NET框架仍然是全球开发人员的编程基石,为构建广泛的应用程序提供了一个通用的、强大的环境。微软对创新的坚定承诺见证了.NET的发展,以满足技术领域不断变化的需求。今年,在更广泛的行业运动、技术进步和开发者社区反馈的推动下,…

软件测试需要学习什么?好就业吗?

目前来说的话,整个it 都不太好!但是既然你问了,我也就告诉你吧! 1功能测试 :前端和后端,前端就是简单的页面,你需要考虑的是:必填项,边界值,组合&#xff0c…

智能搬运机器人|海格里斯将如何持续推进工业和物流的智能化升级与发展?

存取、搬运、分拣是物流行业中的通用功能,但具体到每个行业又十分不同,例如:新能源电池领域,它所搬运的东西是电池,50KG~200KG;快递行业领域,所要处理的物料是那种扁平件和信封等等,…

51单片机学习(3)-----独立按键控制LED的亮灭状态

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步了。 目录 一. 器件介绍及实验原理 1.独立按键 (1)独…

Unity3d C#转换微信小游戏按小游戏包内模式包体20M限制问题记录

前言 在利用这个官方插件(minigame-unity-webgl-transform)将Unity3d的 项目转换为微信小游戏的过程中,转出的包体(首包资源加载方式:小游戏包内)不能超过20m的限制,如果大于这个值就需要采用首…

libigl 网格曲率计算

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 Mesh曲率特征通常指的是在三维几何网格(Mesh)上计算的曲率相关的一系列特征,包括主曲率、高斯曲率、平均曲率等。这些曲率特征提供了对Mesh表面形状的详细描述,对于表面形状分析、形状比较和几何建模等领域非常…

BUGKU-WEB 文件包含

题目描述 题目截图如下: 进入场景看看: 解题思路 你说啥我就干啥:点击一下试试你会想到PHP伪协议这方面去嘛,你有这方面的知识储备吗? 相关工具 解题步骤 查看源码 看到了一点提示信息: ./index.…

[TCP] TCP/IP 基础知识词典(2)

我想统计一下,TCP/IP 尤其是TCP协议,能搜到的常见的问题,整理起来,关键词添加在目录中,便于以后查阅。 目前预计整理共3篇: [TCP] TCP/IP 基础知识问答 :基础知识 [TCP] TCP/IP 基础知识问答&…

LeetCode--代码详解 59. 螺旋矩阵 II

59. 螺旋矩阵 II 题目 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入&a…

django配置视图并与模版进行数据交互

目录 安装django 创建一个django项目 项目结构 创建视图层views.py 写入视图函数 创建对应视图的路由 创建模版层 配置项目中的模版路径 创建模版html文件 启动项目 浏览器访问结果 安装django pip install django 创建一个django项目 这里最好用命令行完成&#xf…

力扣OJ题——随机链表的复制

题目: 138. 随机链表的复制 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 要求:构造这个链表的 深拷贝 深拷贝应该正好由 n 个 全新 节点组成,其中…

websocket与Socket的区别

概念讲解 网络:通俗意义上,也就是连接两台计算器 五层网络模型:应用层、传输层、网络层、数据链路层、物理层 应用层 (application layer):直接为应用进程提供服务。应用层协议定义的是应用进程间通讯和交互的规则,不…

数据库事物复习

事务 比如说将张三的银行账户拿出一千给李四,首先需要查询张三的账户余额,扣除1000,然后如果给李四加上1000的过程中出现异常会回滚事务,临时修改的数据会回复回去。 -- 1. 查询张三账户余额 select * from account where name …

【2024软件测试面试必会技能】Selenium(6):元素定位_xpath定位

XPATH是什么 XPATH是一门在XML文档中查找信息的语言,XPATH可用来在XML文档中对元素和属性进行遍历,主流的浏览器都支持XPATH,因为HTML页面在DOM中表示为XHTML文档。Selenium WebDriver支持使用XPATH表达式来定位元素。 Xpath常用如下6种定位…

安卓APP和小程序渗透测试技巧总结

本文章仅供学习和研究使用,严禁使用该文章内容对互联网其他应用进行非法操作,若将其用于非法目的,所造成的后果由您自行承担。 由于安卓7开始对系统安全性做了些改动,导致应用程序不再信任客户端证书,除非应用程序明确…

OpenTiny Vue 组件库适配微前端可能遇到的4个问题

本文由体验技术团队 TinyVue 项目成员岑灌铭同学创作。 前言 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略,每个应用可以选择不同的技术栈,独立开发、独立部署。 TinyVue组件库的跨技术栈能力与微前端十…