欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript编写棋盘覆盖代码详解

程序员文章站 2024-01-17 16:47:52
一、前言 之前做了一个算法作业,叫做棋盘覆盖,本来需要用c语言来编写的,但是因为我的c语言是半桶水(哈哈),所以索性就把网上的c语言写法改成javascript写法,并且...

一、前言

之前做了一个算法作业,叫做棋盘覆盖,本来需要用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>
  <div 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>
  </div>
  <div id="chess">
  </div>
</body>
</html>
<script type="text/javascript">
  window.onload=function()
  {//棋盘设置
    var chess=document.getelementbyid('chess');
    var input=document.getelementsbytagname('input')[3];
    input.onclick=function()
    {
      var n=document.getelementsbytagname('input')[0].value;
      var table=document.createelement('table');
      chess.appendchild(table);
      table.style.border='2px solid';
        table.style.bordercollapse='collapse';
      for(var i=0;i<n;i++)
      {
        var tr=document.createelement('tr');
        table.appendchild(tr);
        tr.style.height = "20px";
        tr.style.border='1px solid #ccc';
        for(var j=0;j<n;j++)
        {
          var td=document.createelement('td');
          tr.appendchild(td);
          td.style.width = "20px";
          td.style.border='1px solid #ccc';
        }
      }  
    }
    var out=document.getelementsbytagname('input')[4];
    var matrix = new array();   
    for(var i=0;i<100; i++)
    { //初始化棋盘矩阵
        matrix[i] = new array();  
        for(var j=0;j<100;j++)
      {
         matrix[i][j]=0;
        }
    }
    out.onclick=function()
    { //棋盘生成
      var r,c;
      var x=document.getelementsbytagname('input')[1].value;
      var y=document.getelementsbytagname('input')[2].value;
      var n=document.getelementsbytagname('input')[0].value;
      chessboard(0,0,x-1,y-1,n);
      for (r = 0; r < n; r++)
      {
        for (c = 0; c < n; c++)
        {
           var q=matrix[r][c];
           var table=document.getelementsbytagname('table')[0];
           table.rows[r].cells[c].style.background='rgb('+13*q%256+','+43*q%256+','+73*q%256+')';
        }
      }
    }
    var ncount = 0;
    function chessboard(tr,tc,dr,dc,size)
    {
      var s,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>

三、效果

1.4*4棋盘覆盖

JavaScript编写棋盘覆盖代码详解JavaScript编写棋盘覆盖代码详解

2.8*8棋盘覆盖

JavaScript编写棋盘覆盖代码详解

3.16*16棋盘覆盖

JavaScript编写棋盘覆盖代码详解

4.32*32棋盘覆盖

JavaScript编写棋盘覆盖代码详解

四、总结

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

以上所述是小编给大家介绍的javascript编写棋盘覆盖代码详解,希望对大家有所帮助