jquery插件实现扫雷游戏(1)

本文实例为大家分享了jquery插件实现扫雷游戏第一篇的具体代码,供大家参考,具体内容如下

做一个扫雷

第一部分完成绘制和点击动作

效果如下

jquery插件实现扫雷游戏(1)

代码部分

* {
 margin: 0px;
 padding: 0px;
 font-size: 12px;
}

#div {
 position: fixed;
 top: 10px;
 bottom: 10px;
 left: 10px;
 right: 10px;
 border: 1px solid lightgray;
 border-radius: 5px;
 display: flex;
 justify-content: center;
 align-items: center;
 overflow: hidden;
}

#box {
 border: 1px solid lightgray;
 border-radius: 5px;
}

.row {
 white-space: nowrap;
 height: 30px;
}

.item {
 display: inline-flex;
 justify-content: center;
 align-items: center;
 height: 30px;
 width: 30px;
 border-right: 1px solid lightgray;
 border-bottom: 1px solid lightgray;
 cursor: pointer;
 position: relative;
}
.item::before{
 position: absolute;
 content: \'\';
 top: 0.5px;
 left:0.5px;
 bottom: 0.5px;
 right: 0.5px;
 background-color: gray;
}
.item.click::before{
 content: none;
}
.item:hover{
 outline: 1px solid #2c3e50;
}

#menu {
 border-bottom: 1px solid lightgray;
 position: absolute;
 top: 0;
 left: 0;
 right: 0;
 height: 30px;
 display: flex;
 background-color: white;
}
.mitem{
 flex: 1;
 display: flex;
 justify-content: center;
 align-items: center;
}
.sl{
 border: none;
 border-bottom: 1px solid lightgray;
 outline: none;
 width: 60%;
 height: 80%;
}
.btn{
 border: none;
 border: 1px solid lightgray;
 outline: none;
 width: 60%;
 height: 80%;
 background-color: transparent;
 cursor: pointer;
}
.mitem *:hover{
 background-color: lightgray;
}
<!DOCTYPE html>
<html>
 <head>
  <meta charset=\"utf-8\">
  <title>做一个扫雷</title>
  <script src=\"js/jquery-3.4.1.min.js\"></script>
  <script src=\"js/yqlsl.js\"></script>
  <link href=\"css/yqlsl.css\" rel=\"external nofollow\" rel=\"stylesheet\" type=\"text/css\" />
 </head>
 <body>
  <div id=\"div\">
   <div id=\"box\">
    
   </div>
   <div id=\"menu\">
    <div class=\"mitem\">
     <select class=\"sl\" id=\"x\">
      <option value=\"10\">10</option>
      <option value=\"11\">11</option>
      <option value=\"12\">12</option>
      <option value=\"13\">13</option>
      <option value=\"14\">14</option>
      <option value=\"15\">15</option>
      <option value=\"16\">16</option>
      <option value=\"17\">17</option>
      <option value=\"18\">18</option>
      <option value=\"19\">19</option>
      <option value=\"20\">20</option>
     </select>
    </div>
    <div class=\"mitem\">
     <select class=\"sl\" id=\"y\">
      <option value=\"10\">10</option>
      <option value=\"11\">11</option>
      <option value=\"12\">12</option>
      <option value=\"13\">13</option>
      <option value=\"14\">14</option>
      <option value=\"15\">15</option>
      <option value=\"16\">16</option>
      <option value=\"17\">17</option>
      <option value=\"18\">18</option>
      <option value=\"19\">19</option>
      <option value=\"20\">20</option>
     </select>
    </div>
    <div class=\"mitem\">
     <select class=\"sl\" id=\"c\">
      <option value=\"10\">10</option>
      <option value=\"20\">20</option>
      <option value=\"30\">30</option>
      <option value=\"40\">40</option>
      <option value=\"50\">50</option>
      <option value=\"60\">60</option>
      <option value=\"70\">70</option>
      <option value=\"80\">80</option>
      <option value=\"90\">90</option>
      <option value=\"99\">99</option>
     </select>
    </div>
    <div class=\"mitem\">
     <button type=\"button\" class=\"btn\" id=\"pro\">生成</button>
    </div>
   </div>
  </div>
 </body>
</html>
$(document).ready(function() {
 var x = 10; //x轴
 var y = 10; //y轴
 var c = 10; //雷数
 var boom = []; //产生炸弹的坐标
 var $menu = $(\"#menu\");
 var $box = $(\"#box\");



 //同步参数
 $(\"#x\").change(function() {
  x = parseInt($(this).val());
  console.log(x);
 })
 $(\"#y\").change(function() {
  y = parseInt($(this).val());
 })
 $(\"#c\").change(function() {
  c = parseInt($(this).val());
 })
 $(document).on(\'click\', \'#box .item\', function() {
  $(this).addClass(\"click\");
 })
 $(\"#pro\").click(function() {
  console.log(x,y,c)
  draw();
 })
 draw();
 function draw() { //绘制图片
  $box.html(\'\');
  for (var a = 0; a < x; a++) {
   var $row = $(\"<div class=\'row\'></div>\");
   for (var b = 0; b < y; b++) {
    var $item = $(\"<div class=\'item\'></div>\");
    $item.appendTo($row);
   }
   $row.appendTo($box);
  }
 }
})

思路解释

首先就是参数的产生和内容的绘制,这些很容易做到
然后要做好准备的就是给每一个块状标记上坐标,方便后续的计算,直接操作
然后点击的效果通过伪类来实现,没点的时候伪类生成覆盖的遮罩,点完之后去掉就行了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持免费资源网。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容