原生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(){
        //清空所有表格里的img
        var 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;
        }

        //操作dom
        document.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;
    };
}



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

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

相关文章

Springboot-aop的使用

aop:面向切面编程&#xff0c;可以看作是面向对象的补充 举例 1.依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.1</version><relativePath/>…

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

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

halcon里面显示红色三角或者黄色三角+感叹号的算子代表什么含义

有时候&#xff0c;在Halcon里面使用某些算子的时候&#xff0c;左侧有红色或者黄色三角感叹号的提示。 如下图&#xff1a; 可以把鼠标放到红色感叹号上面&#xff0c;发现提示&#xff1a; 有这些标志的算子代表是Halcon中不推荐使用&#xff0c;可以淘汰的算子&#xff0c;…

开发程序员的宝藏工具/网站

博主在这里收录各式各样的工具/网站&#xff0c;都是一些能够帮助开发、提高效率的好东西 博主会不断更新&#xff0c;更加欢迎大家把自己觉得好用的分享在评论区 记得收藏起来&#xff0c;免得以后找不到了 1.文本对比 在线文本差异对比,文本比对、文本比较工具 能够将两边的…

如何掌握项目管理的5个阶段?

项目管理协会&#xff08;PMI&#xff09;创建了一个五步项目管理流程&#xff0c;即从启动、规划、执行、监控到结束&#xff0c;为项目经理更好地管理项目提供了现成的基础。如果你正为范围蔓延、返工或项目总体混乱而苦恼&#xff0c;那么遵循项目管理的五个阶段&#xff0c…

ArrayList源码分析

ArrayList内部存储结构就是数组 类结构图 属性介绍 private static final int DEFAULT_CAPACITY 10; //默认数组大小// 空数组&#xff0c;预先创建 private static final Object[] EMPTY_ELEMENTDATA {};// 默认空数组,由默认构造方法调用时指定&#xff0c;预先创建&…

开源免费的Windows应用程序强力卸载工具Bulk Crap UninstallerV5.7的简单使用

经常遇到Windows平台上安装的一些应用&#xff0c;因为应用自带的安装卸载程序有问题、应用的卸载程序损坏、应用卸载需要密码等原因&#xff0c;导致应用无法卸载、卸载不完整等。本介绍了开源的Windows应用程序强力卸载工具Bulk Crap UninstallerV5.7和安装使用的简单说明。 …

Postman+Newman+Jenkins实现接口测试持续集成

近期在复习Postman的基础知识&#xff0c;在小破站上跟着百里老师系统复习了一遍&#xff0c;也做了一些笔记&#xff0c;希望可以给大家一点点启发。 1.新建一个项目 2.设置自定义工作空间 3.执行windows的批处理命令 4.执行系统的Groovy脚本 5.生成的HTML的报告集成到Jenkin…

互斥量保护资源

一、概念 在多数情况下&#xff0c;互斥型信号量和二值型信号量非常相似&#xff0c;但是从功能上二值型信号量用于同步&#xff0c; 而互斥型信号量用于资源保护。 互斥型信号量和二值型信号量还有一个最大的区别&#xff0c;互斥型信号量可以有效解决优先级反转现 象。 …

在 Rocky 中使用 FreeRDP 远程连接 Windows 机器

前言&#xff1a; 远程控制已成为 IT 人员和企业用户在处理日常任务时不可或缺的工具。无论是进行系统管理、支持远程工作&#xff0c;还是协助解决技术问题&#xff0c;一个可靠且高效的远程桌面工具都是业务连续性的关键。开始我个人使用了todesk&#xff08;也曾鲜想过向日…

瑞吉外卖Day04

1.文件的上传下载 Value("${reggie.path}")private String basePath;/*** 文件上传** param file* return*/PostMapping("/upload")public R<String> upload(MultipartFile file) {log.info("文件上传");//原始文件名String originalFilen…

ssm823基于ssm的心理预约咨询管理系统的设计与实现+vue

ssm823基于ssm的心理预约咨询管理系统的设计与实现vue 交流学习&#xff1a; 更多项目&#xff1a; 全网最全的Java成品项目列表 https://docs.qq.com/doc/DUXdsVlhIdVlsemdX 演示 项目功能演示&#xff1a; ————————————————

C语言每日一题(29)合并两个有序链表

力扣网 21合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 思路分析 最基本的一种思路就是&#xff0c;遍历两个链表&#xff0c;将对应结点的值进行比较&#xff0c;题目要求是要升序排…

springboot单体项目部署

配置类 检查跨域配置类 检查黑白名单是否有问题&#xff0c;是否需要更改 配置文件 检查端口 查看端口是否为需要搭建的端口 检查数据源 查看数据库是否为线上数据库 配置页面 注意&#xff1a;如果是单体项目的话&#xff0c;前端页面是和后端整合在一起的&#xff0…

测试用例的书写方式以及测试模板大全

一个优秀的测试用例&#xff0c;应该包含以下信息&#xff1a; 1 &#xff09; 软件或项目的名称 2 &#xff09; 软件或项目的版本&#xff08;内部版本号&#xff09; 3 &#xff09; 功能模块名 4 &#xff09; 测试用例的简单描述&#xff0c;即该用例执行的目的或方法…

如何创建标准操作规程(SOP)[+模板]

创建、分发和管理流程文档和逐步说明的能力是确定企业成功的关键因素。许多组织依赖标准操作规程&#xff08;SOP&#xff09;作为基本形式的文档&#xff0c;指导他们的工作流程操作。 然而&#xff0c;SOP不仅仅是操作路线图&#xff1b;它们就像高性能车辆中的先进GPS系统一…

LinkedHashMap源码分析

类结构图 从类图结构可以看出&#xff0c;LinkedHashMap继承自HashMap&#xff0c;里面很多实现都是HashMap的&#xff0c;这篇文章主要写出LinkedHashMap自实现的那部分 Entry LinkedHashMap的每个元素项都是一个Entry类对象&#xff0c;该类继承自HashMap.Node类 static c…

【missing-semester】The shell

文章目录 shell 是什么shell 怎么用执行基本程序 Shell中的路径重定向输入输出管道piperoot用户的使用课后练习参考资料 我的操作环境&#xff1a;Windows11下的WSL2(Ubuntu20.04)&#xff0c;之后的所有操作都是基于这个前提的 shell 是什么 命令行操作语言&#xff0c;文本界…

pycharm安装库失败

项目场景 pycharm安装第三方库 问题描述 python 安装第三方库总是安装失败 原因分析&#xff1a; 提示&#xff1a;这里填写问题的分析&#xff1a; 1.网络 2.网墙 解决方案&#xff1a; 加个镜像 –trusted-host mirrors.aliyun.com

【EI会议征稿】第四届信息化经济发展与管理国际学术会议(IEDM 2024)

第四届信息化经济发展与管理国际学术会议&#xff08;IEDM 2024&#xff09; 2024 4th International Conference on Informatization Economic Development and Management 第四届信息化经济发展与管理国际学术会议&#xff08;IEDM 2024&#xff09;将于2024年2月23-25日在…