文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript怎么实现气球打字游戏

2023-06-29 20:37

关注

这篇文章主要介绍“JavaScript怎么实现气球打字游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript怎么实现气球打字游戏”文章能帮助大家解决问题。

一、实现效果

JavaScript怎么实现气球打字游戏

1、定义球的类

气球类中我们需要对26个字符进行处理

this.arr = "abcdefghijklmnopqrstuvwxyz".split("");

生成一个随机字母

this.index = parseInt(Math.random() * this.arr.length);// 定义随机字符this.str = this.arr[this.index];

生成一个div标签并对图片进行处理

// 元素属性this.dom = document.createElement("div");// 图片属性this.img = img;// 图片的宽this.width = this.img.width / 4;// 图片的高this.height = this.img.height / 3;// 图片的背景定位Xthis.positionX = parseInt(Math.random() * 4);// 图片的背景定位Ythis.positionY = parseInt(Math.random() * 3);

关于样式的处理操作

// 设置样式this.setStyle = function() {// 设置元素定位this.dom.style.position = "absolute";this.dom.style.left = 0;// 设置元素的内部文本this.dom.innerHTML = this.str;// 设置文本样式this.dom.style.lineHeight = this.height * 2 / 3+ "px";this.dom.style.textAlign = "center";this.dom.style.fontSize = "20px";this.dom.style.fontWeight = "bold";this.dom.style.top = parseInt(Math.random() * (document.documentElement.clientHeight - this.height)) + "px";// 设置元素的宽度和高度this.dom.style.width = this.width + "px";this.dom.style.height = this.height + "px";// 设置元素背景图片this.dom.style.backgroundImage = "url(" + this.img.src + ")";// 设置元素的背景定位this.dom.style.backgroundPositionX = -this.width * this.positionX + "px";this.dom.style.backgroundPositionY = -this.height * this.positionY + "px";}

定义一个上树的方法

// 上树方法this.upTree = function() {document.body.appendChild(this.dom);}

我们需要检测气球是否到达浏览器边缘

// 检测气球是否到达边界this.check = function() {// 判断定位left值值是否到达别界if (this.dom.offsetLeft >= document.documentElement.clientWidth - this.width) {// 设置定位值this.dom.style.left = document.documentElement.clientWidth - this.width + "px";return true;}return false;}

定义一个下树的方法

// 下树方法this.boom = function() {this.dom.parentNode.removeChild(this.dom);}

定义一个移动的方法,其中的数字表示气球移动的速度

// 移动方法this.move = function() {this.dom.style.left = this.dom.offsetLeft + 5 + "px";}

定义初始化的方法并执行

// 定义初始化方法this.init = function() {this.setStyle();this.upTree();}// 执行initthis.init();

创建图片元素

// 创建图片元素var img = document.createElement("img");// 设置路径img.src = "images/balloon.jpg";

气球每隔多少时间生成一个,我们需要设置定时器以及气球到达边界的处理,其中代码中的70表示每移动70次创建一个气球。

// 定义数组var arr = [];// 定义定时器var timer = null;// 定义一个信号量var count = 0;// 添加事件img.onload = function() {// 初始化气球对象var balloon = new Balloon(img);// 第一个气球也要放入数组中arr.push(balloon);// 赋值定时器timer = setInterval(function() {// 信号量++count++;// 判断信号量if (count % 70 === 0) {// 气球每移动70次, 创建一个气球arr.push(new Balloon(img));}// 循环数组for (var i = 0; i < arr.length; i++) {// 调用move方法arr[i].move();// 调用check方法var result = arr[i].check();// 判断是否到达别界if (result) {// 说明气球到达边界了// 将气球从数组中移除arr.splice(i, 1);// 防止数组塌陷i--;// 清除并接触边界进行弹窗// clearInterval(this.timer)// alert('游戏结束')}}}, 20)

最后就是我们在气球未触到边缘时,通过键盘清除打出对应的字母

// 给document绑定键盘事件document.onkeydown = function(e) {// 获取用户按下的字符var key = e.key;// 拿着这个key与数组中每一个气球对象的str属性值作比对,如果比对上了,就让气球从数组中移除并且从dom中移除for (var i = 0; i < arr.length; i++) {// 判断if (key.toLowerCase() === arr[i].str.toLowerCase()) {// 调用boom方法arr[i].boom();// 移除当前项arr.splice(i, 1);break;}}}

二、源码仓库和效果

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><script type="text/javascript">// 定义气球类function Balloon(img) {// 定义携带的字符this.arr = "abcdefghijklmnopqrstuvwxyz".split("");// 定义索引this.index = parseInt(Math.random() * this.arr.length);// 定义随机字符this.str = this.arr[this.index];// 元素属性this.dom = document.createElement("div");// 图片属性this.img = img;// 图片的宽this.width = this.img.width / 4;// 图片的高this.height = this.img.height / 3;// 图片的背景定位Xthis.positionX = parseInt(Math.random() * 4);// 图片的背景定位Ythis.positionY = parseInt(Math.random() * 3);// 设置样式this.setStyle = function() {// 设置元素定位this.dom.style.position = "absolute";this.dom.style.left = 0;// 设置元素的内部文本this.dom.innerHTML = this.str;// 设置文本样式this.dom.style.lineHeight = this.height * 2 / 3+ "px";this.dom.style.textAlign = "center";this.dom.style.fontSize = "20px";this.dom.style.fontWeight = "bold";this.dom.style.top = parseInt(Math.random() * (document.documentElement.clientHeight - this.height)) + "px";// 设置元素的宽度和高度this.dom.style.width = this.width + "px";this.dom.style.height = this.height + "px";// 设置元素背景图片this.dom.style.backgroundImage = "url(" + this.img.src + ")";// 设置元素的背景定位this.dom.style.backgroundPositionX = -this.width * this.positionX + "px";this.dom.style.backgroundPositionY = -this.height * this.positionY + "px";}// 上树方法this.upTree = function() {document.body.appendChild(this.dom);}// 检测气球是否到达边界this.check = function() {// 判断定位left值值是否到达别界if (this.dom.offsetLeft >= document.documentElement.clientWidth - this.width) {// 设置定位值this.dom.style.left = document.documentElement.clientWidth - this.width + "px";return true;}return false;}// 下树方法this.boom = function() {this.dom.parentNode.removeChild(this.dom);}// 移动方法this.move = function() {this.dom.style.left = this.dom.offsetLeft + 5 + "px";}// 定义初始化方法this.init = function() {this.setStyle();this.upTree();}// 执行initthis.init();}// 创建图片元素var img = document.createElement("img");// 设置路径img.src = "images/balloon.jpg";// 定义数组var arr = [];// 定义定时器var timer = null;// 定义一个信号量var count = 0;// 添加事件img.onload = function() {// 初始化气球对象var balloon = new Balloon(img);// 第一个气球也要放入数组中arr.push(balloon);// 赋值定时器timer = setInterval(function() {// 信号量++count++;// 判断信号量if (count % 70 === 0) {// 气球每移动70次, 创建一个气球arr.push(new Balloon(img));}// 循环数组for (var i = 0; i < arr.length; i++) {// 调用move方法arr[i].move();// 调用check方法var result = arr[i].check();// 判断是否到达别界if (result) {// 说明气球到达边界了// 将气球从数组中移除arr.splice(i, 1);// 防止数组塌陷i--;          // 清除并接触边界进行弹窗          // clearInterval(this.timer)          // alert('游戏结束')}}}, 20)}// 给document绑定键盘事件document.onkeydown = function(e) {// 获取用户按下的字符var key = e.key;// 拿着这个key与数组中每一个气球对象的str属性值作比对,如果比对上了,就让气球从数组中移除并且从dom中移除for (var i = 0; i < arr.length; i++) {// 判断if (key.toLowerCase() === arr[i].str.toLowerCase()) {// 调用boom方法arr[i].boom();// 移除当前项arr.splice(i, 1);break;}}}</script></body></html>

效果:

JavaScript怎么实现气球打字游戏

关于“JavaScript怎么实现气球打字游戏”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯