js案例:打地鼠游戏(打灰太狼)

效果预览图

游戏规则

       当灰太狼出现的时候鼠标左键点击灰太狼加10分,小灰灰出现的时候鼠标左键点小灰灰击减10分,不点击不减分不加分。

整体思路

1.把获取背景图片中每个地洞的位置,把所有位置放到一个数组中。

2.封装随机数函数,随机获取数组中洞的位置,同时给灰太狼/小灰灰图片设置定位,把灰太狼/小灰灰定位到随机的洞里。

3.设置计时器轮回图片使其达到从洞里出来到洞里去的效果。

4.设置点击事件,点击时更换状态图片,增加分数。

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>打地鼠</title>
    <style>
        * {
            margin:0;
            padding:0;
        }
        .wp {
            width:320px;
            height:480px;
            background: url(./img/game_bg.jpg) no-repeat 0 0;
            margin: 0 auto;
            position: relative;
            overflow: hidden;
        }
        .one {
            position:absolute;
            left: 15px;
            top: 158px;
            cursor: pointer;
        }
        #defen{
            display: block;
            margin: 6px 0 0 56px;
            font-size: 30px;
            color: #fff;
        }
        .jdt{
            margin-left: 63px;
            margin-top: 20px;
            height: 16px;
            border-radius: 10px;
        }
        .ksyx{
            width: 200px;
            height: 200px;
            background: linear-gradient(to right, #ff00ff, #00ffff);
            border-radius: 50%;
            margin: 0 auto;
            color: #fff;
            text-align: center;
            line-height: 200px;
            font-size: 30px;
            margin-top: 100px;
            animation: pulse 2s infinite linear;
            cursor: pointer;
        }
        @keyframes pulse {
        0% {
            transform: scale(1); 
        }
        50% {
            transform: scale(1.2);
        }
        100% {
            transform: scale(1);
        }
        }
        .yxjs{
            width: 200px;
            height: 200px;
            background: linear-gradient(to right, #ff00ff, #00ffff);
            border-radius: 50%;
            margin: 0 auto;
            color: #fff;
            text-align: center;
            line-height: 50px;
            font-size: 26px;
            margin-top: 100px;
            animation: pulse 2s infinite linear;
            cursor: pointer;
            display: none;
            align-items: center;
            padding: 20px;
        }
    </style>
</head>
<body>
    <div class="wp">
        <img src="" alt="" class="one">
        <var id="defen">0</var>
        <img src="./img/progress.png" alt="" class="jdt">
        <div class="ksyx">开始游戏</div>
        <div class="yxjs">游戏结束您的得分为100点击继续游戏</div>
    </div>
</body>
</html>
<script>  
let timmer;
let one = document.querySelector('.one');
let defen = document.querySelector('#defen')
let jdt = document.querySelector('.jdt')
let ksyx = document.querySelector('.ksyx')
let yxjs = document.querySelector('.yxjs')
let n=0;
let dr = 1;
let jore = ['h','x'];
let dong = [ { x:96,y:112 },{ x:15,y:158 },{ x:187,y:140 },{ x:103,y:189 },{ x:30,y:292 },{ x:119,y:273 },{ x:207,y:296 },{ x:17,y:219 },{ x:200,y:212 }];
ksyx.onclick = function(){
    ksyx.style.display = 'none';
    timmer = setInterval(function(){
    let sjgd = sj(0,8)
    if(dr==0){
        n--;  
        if (n<0) {
            dr=1;
            one.style.left = `${dong[sjgd].x}px`
            one.style.top = `${dong[sjgd].y}px`
            let dl= jore.sort(function(){
            return Math.random()-0.5
            })
        }
    }
     if(dr==1){
        n++;
        if(n==5){
            dr=0;  
        }
    }
    one.src =  './img/'+jore[0]+n+'.png';
},100);
//进度条
let s = 30;
let jdtjsq ;
jdtjsq = setInterval(function(){
    s--;
    jdt.style.width = s*6+'px'
    if (s<0) {
        clearTimeout(timmer)
        yxjs.style.display = 'flex';
        yxjs.innerHTML = '游戏结束您的得分为'+sum+'分';
    }
},1000)
//封装随机数
function sj(m,n){
    return Math.floor(Math.random()*(n-m+1)+m)
}
//得分机制
let sum = 0
one.onclick = function(){
    n=9;
    if (jore[0]=='x') {
        sum -= 10;
    }
    if (jore[0]=='h') {
        sum += 10;
    }
    console.log(sum);
    if (sum>=50) {
        defen.style.color = '#f00'
    }
    defen.innerHTML = sum;
}
}
</script>

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

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

相关文章

Tomcat学习

一、入门 在webapp里面必须先创建一个文件夹&#xff0c;文件夹里面放的内容&#xff0c;才会被访问到。 创建一个javaweb项目后

【狂神说Java】Nginx详解

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a;狂神说Java &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#xff0c;你不上台&#xff0c;永远…

推荐系统笔记--基于物品的协同过滤(Item CF)

1--基本原理 Item CF的原理是根据物品的相似度来将新的物品推荐给用户&#xff1b;下图中用户对红色物品的感兴趣度为 [2, 1, 4, 3]&#xff0c;红色物品与橙色物品的相似度为 [0.1, 0.4, 0.2, 0.6]&#xff0c;因此可以计算出用户对橙色物品的感兴趣度。 Item CF的基本思想是&…

探寻知识的新路径——电大搜题助您开启学习新纪元

江西开放大学和广播电视大学一直以来都是许多自学者和职场人士追寻知识的圣地。然而&#xff0c;对于许多学子来说&#xff0c;学习的过程也常常充满了困惑和挑战。为了帮助这些学习者通过更高效、便捷的方式获取知识&#xff0c;江西开放大学推出了一款创新的学习工具——电大…

3DMAX如何渲染室内效果图?

这可能不是最好的教程,但对于3dmax初学者来说,它具有一定的学习价值和启示意义。 任何在建筑或室内设计领域工作并需要室内或外部空间“艺术家渲染”的人都会熟悉行业巨头Autodesk发布的3ds Max。 3ds Max是此类工作的默认标准,不是因为它在其他3D程序中无法完成,而是因为它…

联邦学习的梯度重构

联邦学习中的梯度出现挑战&#xff1a; 暴露原始训练数据的某些属性 利用生成对抗网络生成与私有训练图像类似的图片 尽管许多研究已经证实从梯度中重构原始数据的可能性&#xff0c;这些研究通常基于一个前提假设&#xff0c;即用户上传的梯度是全梯度。 联邦学习系统更倾…

力扣哈希表--总结篇

前言 五天写了八道题&#xff0c;有点懈怠&#xff0c;但还是有收获。 内容 一般哈希表都是用来快速判断一个元素是否出现在集合里。 为了实现高效的查找和访问&#xff0c;map通常会使用哈希表或红黑树等数据结构来存储键值对。什么时候用map&#xff0c;什么时候用数组&a…

智能一体化管网水位监测仪怎么样?

城市排水管网是城市正常运行的关键环节&#xff0c;这是地上和地下通道的连接点&#xff0c;一旦出现问题便会影响城市生命线建设的工程进展。在复杂的地下管道内想要了解水位数据&#xff0c;对于政府部门来讲是一个管理难题。如果可以采取智能产品在其中发挥作用&#xff0c;…

联想小新Pro14默认设置的问题

联想小新Pro14 锐龙版&#xff0c;Win11真的挺多不习惯的&#xff0c;默认配置都不符合一般使用习惯。 1、默认人走过自动开机。人机互动太强了&#xff1b; 2、默认短超时息屏但不锁屏&#xff0c;这体验很容易觉得卡机然后唤起&#xff0c;却又不用密码打开&#xff1b; 3…

Git分支与Git标签的介绍及其场景应用

目录 一、Git分支 1.1 定义 1.2 基本概念 1.3 特点与优势 1.4 Git分支操作命令 1.4.1 查看分支 1.4.2 创建分支 1.4.3 删除分支 1.4.4 切换分支 1.4.5 创建并切换到新建分支 1.5 场景应用 1.5.1 前期准备 1.5.2 具体操作 二、Git标签 2.1 定义 2.2 类型 2.3 标…

C# Socket通信从入门到精通(8)——单个异步TCP服务器监听多个客户端C#代码实现

前言: 我们在C# Socket通信从入门到精通(7)——单个异步TCP服务器监听单个客户端C#代码实现这篇文章中讲述了一个服务器如何与一个客户端进行交互,但是有时候我们需要一个服务器与多个客户端进行交互,这时候上一篇文章介绍的方法就不足以实现这个功能,本篇文章就是介绍如…

advanced-css: No.1

本套教程学习来自视频&#xff1a;https://www.bilibili.com/video/BV1n94y1o7yS/?p7&spm_id_frompageDriver&vd_sourceb79be8283df9418cb45941cc0bd583c6 案例 实现效果图 代码 HTML: <!DOCTYPE html> <html lang"en"><head><meta c…

【C++破局】泛型编程|函数模板|类模板

​作者主页 &#x1f4da;lovewold少个r博客主页 ⚠️本文重点&#xff1a;c模板初阶知识点讲解 &#x1f449;【C-C入门系列专栏】&#xff1a;博客文章专栏传送门 &#x1f604;每日一言&#xff1a;花有重开日&#xff0c;人无再少年 目录 前言 泛型编程 函数模板 函数模…

Leetcode—50.Pow(x,n)【中等】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—50.Pow(x,n) 实现代码 double recurPow(double x, long long n) {if(n 1) {return x;}double res recurPow(x, n / 2);if(n % 2 1) {return x * res * res;} else {return res * res;} }double myPow(double x, int…

从0开始python学习-34.pytest常用插件

目录 1. pytest-html&#xff1a;生成HTML测试报告 2.pytest-xdist&#xff1a;并发执行用例 3. pytest-order&#xff1a;自定义用例的执行顺序 4. pytest-rerunfailures&#xff1a;用例失败时自动重试 5. pytest-result-log:用例执行结果记录到日志文件 1. pytest-html…

C进阶-编译环境与预处理

本章重点&#xff1a; 程序的翻译环境 程序的执行环境 详解&#xff1a;C语言程序的编译链接 预定义符号介绍 预处理指令#define 宏和函数的对比 预处理操作符#和##的介绍 命令定义 预处理指令#include 预处理指令#undef 条件编译 1. 程序的翻译环境和执行环境 在ANSI C的任何一…

江西开放大学引领学习新时代:电大搜题助力学子迈向成功

江西开放大学&#xff08;简称江西电大&#xff09;一直以来致力于为学子提供灵活便捷的学习服务。近年来&#xff0c;携手电大搜题微信公众号&#xff0c;江西开放大学以其卓越的教学质量和创新的教学手段&#xff0c;为广大学子开启了一扇通向成功的大门。 作为一家知名的远…

2.如何实现API统一响应-web组件篇

文章目录 1. 统一响应1.1 CommonResult 1. 统一响应 前端调用api接口获得统一的响应&#xff1a; 成功&#xff0c;返回成功的状态码和数据&#xff1b;失败&#xff0c;返回失败的状态码和错误提示。 在标准的 RESTful API 的定义&#xff0c;是推荐使用 HTTP 响应状态码 (…

物联网AI MicroPython学习之语法 network网络配置模块

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; network介绍 模块功能&#xff1a; 用于管理Wi-Fi和以太网的网络模块参考用法&#xff1a; import network import time nic network.WLAN(network.STA_IF) nic.active(True) if not nic.isconnected():…

栈和队列:栈

栈的概念&#xff1a; 栈&#xff1a; 一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。…