Rumah >hujung hadapan web >tutorial js >JS实现棋盘覆盖

JS实现棋盘覆盖

php中世界最好的语言
php中世界最好的语言asal
2018-04-18 16:48:132093semak imbas

这次给大家带来JS实现棋盘覆盖,JS实现棋盘覆盖的注意事项有哪些,下面就是实战案例,一起来看一下。

之前做了一个算法作业,叫做棋盘覆盖,本来需要用c语言来编写的,但是因为我的c语言是半桶水(哈哈),所以索性就把网上的c语言写法改成JavaScript写法,并且把它的覆盖效果显示出来

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type"content="text/html; charset=utf-8"/>
<title>算法作业2</title>
<style type="text/css">
  #num{}
  #chess{
    margin-top:20px;
    }
</style>
</head>
<body>
  <p id="num">
    <p>设置棋盘大小:
      <input type="text"name="Num"size="4"/>
    </p>
    <p>请输入特殊方格的位置:</p>
    <p>
    x:<input type="text"name="X"size="25"/><br />
    y:<input type="text"name="Y"size="25"/>
    </p>
    <p>
      <input type="button"value="设置棋盘参数"/>
      <input type="button"value="生成棋盘"/>
    </p>
  </p>
  <p id="chess">
  </p>
</body>
</html>
<script type="text/javascript">
  window.onload=function()
  {//棋盘设置
    varchess=document.getElementById('chess');
    varinput=document.getElementsByTagName('input')[3];
    input.onclick=function()
    {
      varN=document.getElementsByTagName('input')[0].value;
      vartable=document.createElement('table');
      chess.appendChild(table);
      table.style.border='2px solid';
        table.style.borderCollapse='collapse';
      for(vari=0;i<N;i++)
      {
        vartr=document.createElement(&#39;tr&#39;);
        table.appendChild(tr);
        tr.style.height ="20px";
        tr.style.border=&#39;1px solid #ccc&#39;;
        for(varj=0;j<N;j++)
        {
          vartd=document.createElement(&#39;td&#39;);
          tr.appendChild(td);
          td.style.width ="20px";
          td.style.border=&#39;1px solid #ccc&#39;;
        }
      } 
    }
    varOut=document.getElementsByTagName(&#39;input&#39;)[4];
    varMatrix =newArray();  
    for(vari=0;i<100; i++)
    {//初始化棋盘矩阵
        Matrix[i] =newArray(); 
        for(varj=0;j<100;j++)
      {
         Matrix[i][j]=0;
        }
    }
    Out.onclick=function()
    {//棋盘生成
      varr,c;
      varX=document.getElementsByTagName(&#39;input&#39;)[1].value;
      varY=document.getElementsByTagName(&#39;input&#39;)[2].value;
      varN=document.getElementsByTagName(&#39;input&#39;)[0].value;
      chessBoard(0,0,X-1,Y-1,N);
      for(r = 0; r < N; r++)
      {
        for(c = 0; c < N; c++)
        {
           varq=Matrix[r][c];
           vartable=document.getElementsByTagName(&#39;table&#39;)[0];
           table.rows[r].cells[c].style.background=&#39;rgb(&#39;+13*q%256+&#39;,&#39;+43*q%256+&#39;,&#39;+73*q%256+&#39;)&#39;;
        }
      }
    }
    varnCount = 0;
    functionchessBoard(tr,tc,dr,dc,size)
    {
      vars,t;
      if(size == 1)return;
      s =size/2;
      t = ++nCount ;
      if(dr < tr + s && dc < tc +s)
        chessBoard(tr,tc,dr,dc,s);
      else
      {
        Matrix[tr+s-1][tc+s-1] = t;
        chessBoard(tr,tc,tr+s-1,tc+s-1,s);
      }
      if(dr < tr + s && dc >= tc + s )
        chessBoard(tr,tc+s,dr,dc,s);
      else
      {
        Matrix[tr+s-1][tc+s] = t;
        chessBoard(tr,tc+s,tr+s-1,tc+s,s);
      }
      if(dr >= tr + s && dc < tc + s)
        chessBoard(tr+s,tc,dr,dc,s);
      else
      {
        Matrix[tr+s][tc+s-1] = t;
        chessBoard(tr+s,tc,tr+s,tc+s-1,s);
      }
      if(dr >= tr + s && dc >= tc + s)
        chessBoard(tr+s,tc+s,dr,dc,s);
      else
      {
        Matrix[tr+s][tc+s] = t;
        chessBoard(tr+s,tc+s,tr+s,tc+s,s);
      }
    }
  }
</script>

棋盘覆盖的C语言代码我是参考课本的,为了能够把它用进JavaScript里面,突破口就是二维数组Matrix[][],只要能够获得它计算之后整个数组的数据,那么就有思路了。要记住填写进表单里面的数据是在点击按钮之后才获取的,所以获取元素节点的代码要放在onclick里面。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

js寄生组合式继承使用详解

react-router4.0实现重定向与404功能

Atas ialah kandungan terperinci JS实现棋盘覆盖. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:js寄生组合式继承使用详解Artikel seterusnya:WebPack入门教程详解