棋盘覆盖算法c语言解析,JavaScript编写棋盘覆盖代码详解

一、前言

之前做了一个算法作业,叫做棋盘覆盖,本来需要用c语言来编写的,但是因为我的c语言是半桶水(哈哈),所以索性就把网上的c语言写法改成JavaScript写法,并且把它的覆盖效果显示出来

二、关键代码

算法作业2

#num{}

#chess{

margin-top:20px;

}

设置棋盘大小:

请输入特殊方格的位置:

x:

y:

window.οnlοad=function()

{//棋盘设置

var chess=document.getElementById('chess');

var input=document.getElementsByTagName('input')[3];

input.οnclick=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

{

var tr=document.createElement('tr');

table.appendChild(tr);

tr.style.height = "20px";

tr.style.border='1px solid #ccc';

for(var j=0;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.οnclick=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);

}

}

}

三、效果

1.4*4棋盘覆盖

5cd32e59510b11972ac19f652e14cd16.png

db22515ebe8c88a63513e91ef707c51a.png

2.8*8棋盘覆盖

14ef047f1163a5fe1c82311b3fd3f1e3.png

3.16*16棋盘覆盖

af3907cf5e5040bd1209c19780a54205.png

4.32*32棋盘覆盖

1d9154296f538ac6be42680ebdcc421c.png

四、总结

棋盘覆盖的C语言代码我是参考课本的,为了能够把它用进JavaScript里面,突破口就是二维数组Matrix[][],只要能够获得它计算之后整个数组的数据,那么就有思路了。要记住填写进表单里面的数据是在点击按钮之后才获取的,所以获取元素节点的代码要放在onclick里面。

以上所述是小编给大家介绍的JavaScript编写棋盘覆盖代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值