JavaScript编写棋盘覆盖代码详解

 更新时间:2017年08月28日 17:06:25   作者:fyk曩昔  
这篇文章主要介绍了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棋盘覆盖

2.8*8棋盘覆盖

3.16*16棋盘覆盖

4.32*32棋盘覆盖

四、总结

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

以上所述是小编给大家介绍的JavaScript编写棋盘覆盖代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • javascript实现鼠标点击页面 移动DIV

    javascript实现鼠标点击页面 移动DIV

    本篇文章主要介绍javascript实现鼠标点击页面,移动DIV。话不多说,附上代码实例。需要的朋友来看下吧
    2016-12-12
  • 异步javascript的原理和实现技巧介绍

    异步javascript的原理和实现技巧介绍

    因为工作的需要,我要在网页端编写一段脚本,把数据通过网页批量提交到系统中去。所以我就想到了Greasemonkey插件,于是就开始动手写,发现问题解决得很顺利
    2012-11-11
  • 再论Javascript的类继承

    再论Javascript的类继承

    说到Javascript的类继承,就必然离不开原型链,但只通过原型链实现的继承有着不少缺陷。
    2011-03-03
  • JS获取URL中参数值(QueryString)的4种方法分享

    JS获取URL中参数值(QueryString)的4种方法分享

    今天碰到要在一个页面获取另外一个页面url传过来的参数,一开始很本能的想到了用 split("?")这样一步步的分解出需要的参数。后来想了一下,肯定会有更加简单的方法的!所以在网上找到了几个很又简单实用的方法,mark下。
    2014-04-04
  • js控制浏览器全屏示例代码

    js控制浏览器全屏示例代码

    控制浏览器全屏的方法有很多,下面为大家介绍下js是如何做到的
    2014-02-02
  • JS常用正则表达式总结

    JS常用正则表达式总结

    JS常用正则表达式总结。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • JavaScript函数中关于valueOf和toString的理解

    JavaScript函数中关于valueOf和toString的理解

    本文给大家介绍JavaScript函数中关于valueOf和toString的理解,简单的说就是需要转换为字符串时,会调用toString,需要转换为数字时需要调用valueOf。对js valueof tostring知识感兴趣的朋友一起学习吧
    2016-06-06
  • 微信小程序如何在页面跳转时进行页面导航

    微信小程序如何在页面跳转时进行页面导航

    小程序能够在不同的页面进行跳转切换,路由起到了至关重要的作用,下面这篇文章主要给大家介绍了关于微信小程序如何在页面跳转时进行页面导航的相关资料,需要的朋友可以参考下
    2022-09-09
  • 如何安装控制器JavaScript生成插件详解

    如何安装控制器JavaScript生成插件详解

    这篇文章主要给大家介绍了关于如何安装控制器JavaScript生成插件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • 微信公众号开发 实现点击返回按钮就返回到聊天界面

    微信公众号开发 实现点击返回按钮就返回到聊天界面

    本文分享了微信公众号开发实现点击返回按钮就返回到聊天界面的示例代码。需要的朋友一起来看下吧
    2016-12-12

最新评论