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 相关文章推荐
把JS与CSS写在同一个文件里的书写方法
Jun 02 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
Aug 24 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
Aug 28 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
Nov 30 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
Nov 09 Javascript
vue监听滚动事件实现滚动监听
Apr 11 Javascript
微信小程序 下拉菜单简单实例
Apr 13 Javascript
vue中各选项及钩子函数执行顺序详解
Aug 25 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
Sep 05 Javascript
微信小程序实现左右列表联动
May 19 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
Feb 18 Javascript
vue setInterval 定时器失效的解决方式
Jul 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
PHP聊天室技术
2006/10/09 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
php导出生成word的方法
2015/12/25 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
jquery.validate使用攻略 第二部
2010/07/01 Javascript
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
python关键字and和or用法实例
2015/05/28 Python
Python操作串口的方法
2015/06/17 Python
Python实现截屏的函数
2015/07/25 Python
Ruby元编程基础学习笔记整理
2016/07/02 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
python装饰器原理与用法深入详解
2019/12/19 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
2020/09/20 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
俄罗斯游戏商店:Buka
2020/03/01 全球购物
采购部部门职责
2013/12/15 职场文书
韩国商务邀请函
2014/01/14 职场文书
小学生红领巾广播稿
2014/01/21 职场文书
料理师求职信
2014/01/30 职场文书
初中英语演讲稿
2014/04/29 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
亮剑观后感500字
2015/06/05 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
我去timi了,一起去timi是什么意思?
2022/04/13 杂记