js消除图片小游戏代码


Posted in Javascript onDecember 11, 2019

js消除图片小游戏,效果如下所示:

js消除图片小游戏代码

做了一个简易的消除图片的小游戏,没有连线的规则。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>js连连看</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    html,
    body {
      width: 100%;
      height: 100%;
      background: #222;
      overflow: hidden;
    }
    .wrapper {
      background-size: 100% 100%;
      margin: 10px auto;
      position: relative;
      /* border: 1px solid #f40; */
    }
    .square {
      cursor: pointer;
      position: absolute;
      width: 80px;
      height: 80px;
      background-size: cover;
    }
  </style>
</head>
<body>
  <div class="wrapper"></div>
  <script>
    var wrap = document.getElementsByClassName('wrapper')[0];
    var rows = 7;  // 创建连连看行数
    var cols = 12; // 创建连连看列数
    var type = 24  //选择多少种图片,0-24都可以 看自己心情 数字大种类多 数字小种类少游戏难度更简单
    var squareSet = [];  // 生成小方块的数组 
    var chooseOne = null; //
    var chooseTwo = null; //
    var Toward = { node: null, up: { row: -1, col: 0 }, right: { row: 0, col: 1 }, down: { row: 1, col: 0 }, left: { row: 0, col: -1 } }
    window.onload = function () {
      init(); //初始化
    }
    function init() {
      if (rows * cols % 2 != 0) { //判断小方块总数是否为奇数,奇数就不执行
        alert('展示数量不能为奇数') // 弹出提示,阻塞js加载
      }
      initSquareSet();
    }
    function initSquareSet() {
      // 方块默认长宽都是80px
      wrap.style.height = rows * 80 + 'px';  // 外面盒子的总高度
      wrap.style.width = cols * 80 + 'px'; // 外面盒子的总宽度
      var oDiv = document.createElement('div')
      var tmp = createRandomNum(); //生成随机数数组  我的图片名称是0.jpg~24.jpg 函数生成0~24随机数就可以通过字符串拼接动态的选择图片 
      squareSet = new Array(rows + 2); // 生成小方块的数组  既有行又有列 我们就要利用for循环生成二维数组 57~60
      for (var i = 0; i < squareSet.length; i++) {
        squareSet[i] = new Array(cols + 2);
      }
      for (var i = 1; i <= rows; i++) { // 生成行数  
        for (var j = 1; j <= cols; j++) { // 生成列数 同理
          var temp = createSquare(tmp.pop(), i, j); // 参数每次取随机数数组的最后一位 i小方块在整体中行的位置j是列的位置  temp接收这个返回的DOM元素
          squareSet[i][j] = temp;
          wrap.append(temp);
          temp.onclick = function () {
            if (chooseOne == null || chooseOne.num != this.num) {  // 判断是第一次点击还是第二次 77~81 没有值或者说没有属性的都是第一次点击
              chooseOne = this;
            } else {
              chooseTwo = this;
              if (chooseOne != chooseTwo && chooseOne.num == chooseTwo.num ) { //判断第一次和第二次点击不是同一个 并且num值相等 以及是否在路径上可以消除
                clearSquare(chooseOne.row, chooseOne.col);
                clearSquare(chooseTwo.row, chooseTwo.col);
              }
              chooseOne = null;
              chooseTwo = null;
            }
            render(); // 点击方块变换样式
          }
        }
      }
    }
    function createRandomNum() {
      var tmp = [] // 存放生成图片是 字符串拼接的数字
      // rows * cols 可以算出需要多少张图片 然后除以2 因为每张图片都是成对出现的 即 7*12=84张图片 84/2=41算出有42对
      for (var i = 0; i < rows * cols / 2; i++) {
        var num = Math.floor(Math.random() * type) // 生成0~24的随机数
        tmp.push(num);
        tmp.push(num); // 循环了42次 所以push两遍 相当如每次push了相同的一对数,42次 正好84张图片
      }
      // console.log(tmp) // 看看生成的数组 可以看到成对的随机数字数组
      tmp.sort(function () {
        return Math.random() - 0.5 //可以打乱数组
      })
      // console.log(tmp) // 看看生成的数组 可以看到已经不成对的随机数字数组
      return tmp      // 将数组返回回去 
    }
    function createSquare(num, row, col) {
      var temp = document.createElement('div');
      temp.classList.add('square');
      temp.style.backgroundImage = "url('./src/img/连连看/" + num + ".jpg')";
      temp.style.top = row * 80 + 'px'; // 生成方块的位置 96,97
      temp.style.left = col * 80 + 'px';
      temp.num = num; //设置小方块的随机数属性 到时候可以用来判断属性是否一样来判断是否消除小方块 
      return temp;  //返回了一个带着属性的DOM元素
    }
    function render() {
      for (var i = 0; i < squareSet.length; i++) { //做一个样式的切换 
        for (var j = 0; j < squareSet[i].length; j++) {
          if (squareSet[i][j] && squareSet[i][j] == chooseOne) {
            squareSet[i][j].style.opacity = '0.5';
          } else if (squareSet[i][j]) {
            squareSet[i][j].style.opacity = '1';
          }
        }
      }
    }
    function clearSquare(x, y) {
      wrap.removeChild(squareSet[x][y]); // 删除方块
      squareSet[x][y] = null;
    }
  </script>
</body>
</html>

总结

以上所述是小编给大家介绍的js消除图片小游戏代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
Mar 30 Javascript
Jquery提交表单 Form.js官方插件介绍
Mar 01 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
May 04 Javascript
js实现鼠标点击文本框自动选中内容的方法
Aug 20 Javascript
Jquery为DIV添加click事件的简单实例
Jun 02 Javascript
js select下拉联动 更具级联性!
Apr 17 Javascript
原生javascript实现读写CSS样式的方法详解
Feb 20 Javascript
jquery实现折叠菜单效果【推荐】
Mar 08 Javascript
Vue.js进阶知识点总结
Apr 01 Javascript
layui的表单提交以及验证和修改弹框的实例
Sep 09 Javascript
原生javascript如何实现共享onload事件
Jul 03 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
详解vue中$nextTick和$forceUpdate的用法
Dec 11 #Javascript
基于jQuery实现可编辑的表格
Dec 11 #jQuery
jQuery实现可编辑的表格
Dec 11 #jQuery
vue element自定义表单验证请求后端接口验证
Dec 11 #Javascript
详解如何在JS代码中消灭for循环
Dec 11 #Javascript
Angular封装表单控件及思想总结
Dec 11 #Javascript
小程序接口的promise化的实现方法
Dec 11 #Javascript
You might like
destoon数据库表说明汇总
2014/07/15 PHP
php实现的CSS更新类实例
2014/09/22 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
php json相关函数用法示例
2017/03/28 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
Python生成随机密码
2015/03/10 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
不可错过的十本Python好书
2017/07/06 Python
python将回车作为输入内容的实例
2018/06/23 Python
详解Python sys.argv使用方法
2019/05/10 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
EJB的基本架构
2016/09/22 面试题
材料物理专业个人求职信
2013/12/15 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
项目合作协议书范本
2014/04/16 职场文书
学校与家长安全责任书
2014/07/23 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
公司介绍信范文
2015/01/31 职场文书
人代会简报
2015/07/21 职场文书
教你用python控制安卓手机
2021/05/13 Python
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android
ICOM R71E和R72E图文对比解说
2022/04/07 无线电
Python各协议下socket黏包问题原理
2022/04/12 Python