原生js做打地鼠游戏

           抱歉素材有点难找,这次的学习重点是在JS的实现,梳理一下打地鼠的实现逻辑,主要分为三个主要功能函数。

  • 开始游戏:对分数、并根据游戏难度对游戏的倒计时和延迟进行初始化之后,利用setInterval定时器Math.random随机函数实现地鼠间隔一定时间随机出现在方块中的位置。其中表格可以使用table布局或者网格布局。
  • 打地鼠:为了避免多次点击多次计算得分,用一个标志位来标志第一次点击,如果当前点击方块的itemid对应的方框里面有地鼠的样式,则得分+1
  • 结束游戏:还原表格的布局之后将计算的得分反馈给用户

大概的展示如下

       

代码如下:

var startGame;//计时器
var score = 0;//总分
var time;//倒计时
var timeVal;//时间间隔
var curr_td = '';//难度改变,对应其实分数改变
function changeTimeValue(){var diff = document.getElementById("diffculty").value;if(diff == 'high'){document.getElementById("time").value = 30;}else if(diff == 'normal'){document.getElementById("time").value = 60;}else{document.getElementById("time").value = 120;};
}//开始游戏
function showMouse(){score = 0;//总分var diff = document.getElementById("diffculty").value;if(diff == 'high'){time = 30;timeVal = 500;}else if(diff == 'normal'){time = 60;timeVal = 1000;}else{time = 120;timeVal = 2000;}//开始游戏之后禁用开始游戏和选择难度document.getElementById("start").disabled = true;document.getElementById("diffculty").disabled = true;startGame = window.setInterval(function(){//清空所有表格里的imgvar itemArr = document.getElementsByTagName('td');for (var i = 0; i < itemArr.length; i++) {itemArr[i].style.backgroundColor = '#00ff35';itemArr[i].innerHTML = '';};//生成一个1~25的随机数var mouse = parseInt(Math.random()*25+1);var index = 'item_'+mouse;time = time - 1;document.getElementById("time").value = time;if(time <= 0){document.getElementById("score").value = 0;changeTimeValue();window.clearInterval(startGame); alert('游戏结束,你的得分是'+score);//游戏结束之后重新启用开始游戏和选择难度document.getElementById("start").disabled = false;document.getElementById("diffculty").disabled = false;return false;}//操作domdocument.getElementById(index).style.backgroundColor = '#ffffff';document.getElementById(index).innerHTML = '<img src="./image/mouse.jpg" height="50px;" width="50px;">';},timeVal);
};
//停止游戏
function stop(){var itemArr = document.getElementsByTagName('td');window.clearInterval(startGame); for (var i = 0; i < itemArr.length; i++) {itemArr[i].style.backgroundColor = '#00ff35';itemArr[i].innerHTML = '';};document.getElementById("score").value = 0;changeTimeValue();alert('游戏结束,你的得分是'+score); //点击停止结束之后重新启用开始游戏和选择难度document.getElementById("start").disabled = false;document.getElementById("diffculty").disabled = false;
};
//打地鼠
function bump(itemid){//防止多次点击if(curr_td == itemid){return false;};curr_td = itemid;var itemId = 'item_' + itemid;//var curr_item = document.getElementById('itemId');if(document.getElementById(itemId).innerHTML != ''){score = score + 1;document.getElementById("score").value = score;};
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】随手笔记(积跬步至千里)

一、常用函数 &#xff08;1&#xff09;uuid() select uuid(); //生成随机数 select replace(uuid(),-,); //将随机数的-去掉 select upper(replace(uuid(),-,)); ///改成大写应用举例&#xff1a; &#xff08;1&#xff09;非自增主键 非自增主键&#xff0c;insert语…

《深入浅出进阶篇》洛谷P4147 玉蟾宫——悬线法dp

上链接&#xff1a;P4147 玉蟾宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P4147 上题干&#xff1a; 有一个NxM的矩阵&#xff0c;每个格子里写着R或者F。R代表障碍格子&#xff0c;F代表无障碍格子请找出其中的一个子矩阵&#xff0c…

【Cocos新手进阶】通过cocos实现可控制的动态加载更新的日志界面效果

本篇文章主要讲解&#xff0c;通过cocos实现可控制的动态加载更新的日志界面效果。 日期&#xff1a;2023年11月15日 作者&#xff1a;任聪聪 效果演示&#xff1a; 效果说明&#xff1a;在一个界面可以动态输出for循环的结果并更新到界面中进行不断加载的日志页面效果&#x…

Java 算法篇-链表的经典算法:根据值删除节点、删除倒数第 n 个节点

&#x1f525;博客主页&#xff1a; 小扳_-CSDN博客 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 链表的创建 2.0 链表的经典算法 - 根据值来删除节点 2.1 根据值来删除节点 - 遍历链表来实现 2.2 根据值来删除节点 - 递归实现 3.0 链表的经典算法 - 删除倒数第 n…

前端element的el-tooltip鼠标经过显示文字,没有文字显示空黑框问题

场景&#xff1a; 有时候在使用element的el-tooltip时会使用三元表达式&#xff0c;满足某个条件后才显示提示文字&#xff0c;否则不展示文字&#xff0c;但是却出现在在没有文字时展示了黑框&#xff0c;如下图&#xff1a; 解决方案&#xff1a; 加一个disabled便可&#…

Spring Cloud Netflix微服务组件-Eureka

CAP理论 分区容忍是能容忍一个或一部分节点挂掉后&#xff0c;整体系统也能正常工作&#xff08;就是别的节点还是活着的&#xff09;&#xff0c;所以分布式系统中P是必须要有的。比如数据库主从架构&#xff0c;主从两个节点之间需要数据同步&#xff0c;主挂了&#xff0c;…

最新PS 2024 虎标正式版来啦,附带AI神经滤镜(支持win/mac)

软件简介 文件名称 PS2024 虎标正式版 支持系统 windows、Mac 获取方式 文章底部 分享形式 百度网盘 小伙伴们&#xff0c;下午好&#xff01;今天给大家的是PS 2024 25.0虎标正式版。 PS 2024 25.0 正式版介绍 经历了多次Photoshop 2023 Beta 测试之后&#xff0c;今天…

Qt高级--(2)自定义标题栏

自定义标题栏 功能点 1.标题栏中最外层布局器使用水平布局器。 2.导航按钮、工具按钮和窗口功能按钮都是用水平布局器&#xff0c;边距和间隔可根据实际情况设置。 3.编写 QSS 样式&#xff0c;并将样式设置到窗口控件中。 4.实现最小化、最大化和关闭窗口按钮功能。 5.实现鼠…

springboot整合vue2实现简单的新增删除,整合ECharts实现图表渲染

先看效果图&#xff1a; 1.后端接口 // 查询所有商品信息 // CrossOrigin(origins "*")RequestMapping("/list1")ResponseBodypublic List<Goodsinfo> list1(){List<Goodsinfo> list goodsService.list();return list;}// 删除 // …

你绝对需要的Facebook养号攻略,教你如何养成耐用号

Facebook 可谓是大家的“老熟人”了&#xff0c;作为全球热门的社交媒体平台&#xff0c;Facebook 一直以来都是社媒营销、跨境电商的重要阵地&#xff0c;但是很多小伙伴们在注册新账号后往往忽略了一个重要的步骤&#xff0c;也是必不可少的一步&#xff0c;那就是养号&#…

【跨境电商独立站新手入门手册】

一直想要更新一个独立站的系列合集&#xff0c;用小白也看得懂的方式阐述怎么从0到1搭建并运营一个独立站&#xff0c;并且后续我也会录制成视频。 今天&#xff0c;它来了。 这是《跨境电商独立站新手入门手册》系列的第一篇。 你是否有过这样的经历&#xff1a;当你在网上浏…

vue中使用iconfont图标

1. 选择一个图标加入购物车 2、点击右上角购物车图标。点击下载代码&#xff0c;并添加至项目。 3、将下载好的代码文件放入项目中的assets目录的styles下 iconfont.css直接放在styles下 在styles目录下新建目录iconfont&#xff0c;将iconfont.ttf、iconfont.woff、iconfont…