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复选框CHECKBOX全选、反选
Aug 30 Javascript
自写的一个jQuery圆角插件
Oct 26 Javascript
基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
Sep 28 Javascript
autoPlay 基于jquery的图片自动播放效果
Dec 07 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
Sep 05 Javascript
详解Node.js串行化流程控制
May 04 Javascript
vue cli使用绝对路径引用图片问题的解决
Dec 06 Javascript
基于jQuery ztree实现表格风格的树状结构
Aug 31 jQuery
微信小程序实现简单跑马灯效果
May 26 Javascript
使用PreloadJS加载图片资源的基础方法详解
Feb 03 Javascript
Javascript confirm多种使用方法解析
Sep 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
PHP导入Excel到MySQL的方法
2011/04/23 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
使用python绘制温度变化雷达图
2019/10/18 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
python如何调用java类
2020/07/05 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
什么是接口(Interface)?
2013/02/01 面试题
施工质量承诺书范文
2014/05/30 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
技术员个人工作总结
2015/03/03 职场文书
感恩教师节主题班会
2015/08/12 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
Python常遇到的错误和异常
2021/11/02 Python