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 append()方法与html()方法的区别及使用介绍
Aug 01 Javascript
JavaScript整除运算函数ceil和floor的区别分析
Apr 14 Javascript
JQuery实现简单的服务器轮询效果实例
Mar 31 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
May 05 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
Dec 02 Javascript
Web前端框架bootstrap实战【第一次接触使用】
Dec 28 Javascript
浅析Angular2子模块以及异步加载
Apr 24 Javascript
微信小程序解除10个请求并发限制
Dec 18 Javascript
小程序实现订单倒计时功能
Apr 23 Javascript
解决vue v-for src 图片路径问题 404
Nov 12 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 jQuery
微信小程序:报错(in promise) MiniProgramError
Oct 30 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
Banner程序
2006/10/09 PHP
php 问卷调查结果统计
2015/10/08 PHP
jquery 选取方法都有哪些
2014/05/18 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
JS实现小米轮播图
2020/09/21 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
python实现图像拼接
2020/03/05 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
python 贪心算法的实现
2020/09/18 Python
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
就业自荐信
2013/12/04 职场文书
关于打架的检讨书
2014/01/17 职场文书
测控技术自荐信
2014/06/05 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
辞职书格式样本
2015/02/26 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
高中体育课教学反思
2016/02/16 职场文书
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis