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 相关文章推荐
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
js动态往表格的td中添加图片并注册事件
Jun 12 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
浅谈jQuery构造函数分析
May 11 Javascript
基于javascript制作经典传统的拼图游戏
Mar 22 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
Dec 13 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
Apr 20 Javascript
WebPack配置vue多页面的技巧
May 15 Javascript
在vue中给列表中的奇数行添加class的实现方法
Sep 05 Javascript
学习node.js 断言的使用详解
Mar 18 Javascript
vue如何截取字符串
May 06 Javascript
微信小程序中weui用法解析
Oct 21 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 简单日历实现代码
2009/10/28 PHP
php笔记之:AOP的应用
2013/04/24 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
PHP 断点续传实例详解
2017/11/11 PHP
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
Python读写文件方法总结
2015/06/09 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python三级目录展示的实现方法
2016/09/28 Python
Python查看微信撤回消息代码
2018/06/07 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
带你认识Django
2019/01/15 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
Python序列类型的打包和解包实例
2019/12/21 Python
python中的列表和元组区别分析
2020/12/30 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
网络教育自我鉴定
2013/11/01 职场文书
舞蹈教师自荐信
2014/01/27 职场文书
办护照工作证明
2014/10/01 职场文书
公民授权委托书
2014/10/15 职场文书
施工现场安全管理制度
2015/08/05 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书