JavaScript编写棋盘覆盖代码详解


Posted in Javascript onAugust 28, 2017

一、前言

之前做了一个算法作业,叫做棋盘覆盖,本来需要用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编写棋盘覆盖代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
初学js插入节点appendChild insertBefore使用方法
Jul 04 Javascript
js模拟点击以提交表单为例兼容主流浏览器
Nov 29 Javascript
纯JS实现动态时间显示代码
Feb 08 Javascript
node.js中的fs.writeFile方法使用说明
Dec 14 Javascript
js封装可使用的构造函数继承用法分析
Jan 28 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
May 12 Javascript
js如何找出字符串中的最长回文串
Jun 04 Javascript
Javascript删除数组里的某个元素
Feb 28 Javascript
JavaScript中将值转换为字符串的五种方法总结
Jun 06 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
Dec 29 Javascript
vue-router之解决addRoutes使用遇到的坑
Jul 19 Javascript
JavaScript严格模式不支持八进制的问题讲解
Nov 07 Javascript
Angular4开发解决跨域问题详解
Aug 28 #Javascript
JavaScript实现各种排序的代码详解
Aug 28 #Javascript
JS如何设置元素样式的方法示例
Aug 28 #Javascript
weex slider实现滑动底部导航功能
Aug 28 #Javascript
js使用原型对象(prototype)需要注意的地方
Aug 28 #Javascript
vue2.0移除或更改的一些东西(移除index key)
Aug 28 #Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
Aug 28 #Javascript
You might like
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
php银联网页支付实现方法
2015/03/04 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
谈谈JS中的!!
2017/12/07 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
Django框架实现的分页demo示例
2019/05/25 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
解决python运行启动报错问题
2020/06/01 Python
在keras中实现查看其训练loss值
2020/06/16 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
学校十一活动方案
2014/02/01 职场文书
法律进机关实施方案
2014/03/12 职场文书
教师教学评估方案
2014/05/09 职场文书
冰峪沟导游词
2015/02/09 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
工作证明书
2015/06/15 职场文书
追悼词范文大全
2015/06/23 职场文书
军训阅兵新闻稿
2015/07/17 职场文书
python基础之文件处理知识总结
2021/05/23 Python
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫