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 相关文章推荐
在线编辑器中换行与内容自动提取
Apr 24 Javascript
基于JQuery的一句代码实现表格的简单筛选
Jul 26 Javascript
Jquery知识点三 jquery表单对象操作
Jan 17 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
Sep 21 Javascript
javascript父、子页面交互技巧总结
Aug 08 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
Dec 31 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
Apr 17 Javascript
jQuery中$.each()函数的用法引申实例
May 12 Javascript
Webpack 之 babel-loader文件预处理器详解
Mar 23 Javascript
ECharts地图绘制和钻取简易接口详解
Jul 12 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
May 13 Javascript
js 动态校验开始结束时间的实现代码
May 25 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python进阶教程之文本文件的读取和写入
2014/08/29 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
python 画图 图例自由定义方式
2020/04/17 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
童年读书笔记
2015/06/26 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
Redis实现短信验证码登录的示例代码
2022/06/14 Redis