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 相关文章推荐
jquery EasyUI的formatter格式化函数代码
Jan 12 Javascript
javascript 原型继承介绍
Aug 30 Javascript
JQuery与JSon实现的无刷新分页代码
Sep 13 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
Oct 24 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
Jan 05 Javascript
canvas实现流星雨的背景效果
Jan 13 Javascript
在 Angular 中实现搜索关键字高亮示例
Mar 21 Javascript
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
Apr 04 jQuery
Vue 如何使用props、emit实现自定义双向绑定的实现
Jun 05 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设计模式 注册表模式
2012/02/05 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
React Component存在的几种形式详解
2018/11/06 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
Python全局变量用法实例分析
2016/07/19 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
python 实现客户端与服务端的通信
2020/12/23 Python
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
实习教师个人的自我评价
2013/11/08 职场文书
大学四年职业生涯规划书范文
2014/01/02 职场文书
企业介绍信范文
2015/01/30 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
《火烧云》教学反思
2016/02/23 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python