JavaScript编写棋盘覆盖代码详解
程序员文章站
2024-01-17 16:47:52
一、前言
之前做了一个算法作业,叫做棋盘覆盖,本来需要用c语言来编写的,但是因为我的c语言是半桶水(哈哈),所以索性就把网上的c语言写法改成javascript写法,并且...
一、前言
之前做了一个算法作业,叫做棋盘覆盖,本来需要用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棋盘覆盖
2.8*8棋盘覆盖
3.16*16棋盘覆盖
4.32*32棋盘覆盖
四、总结
棋盘覆盖的c语言代码我是参考课本的,为了能够把它用进javascript里面,突破口就是二维数组matrix[][],只要能够获得它计算之后整个数组的数据,那么就有思路了。要记住填写进表单里面的数据是在点击按钮之后才获取的,所以获取元素节点的代码要放在onclick里面。
以上所述是小编给大家介绍的javascript编写棋盘覆盖代码详解,希望对大家有所帮助
推荐阅读
-
JavaScript-定时器0~9抽奖系统详解(代码)
-
JavaScript编写棋盘覆盖代码详解
-
关于“编写可读代码”的一本简单明了的书——《编写可维护的JavaScript》书评
-
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
-
javascript函数参数、返回值和异常代码详解
-
PHP代码覆盖率统计详解
-
JavaScript的call方法,apply方法,caller属性,callee属性的代码详解
-
JavaScript中关于代码执行的先后顺序问题详解
-
unittest+coverage单元测试代码覆盖操作实例详解
-
林大妈的JavaScript基础知识(二):编写JavaScript代码前的一些简单工作