JavaScript编写棋盘覆盖代码详解
作者:fyk曩昔 时间:2024-04-17 10:30:05
一、前言
之前做了一个算法作业,叫做棋盘覆盖,本来需要用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编写棋盘覆盖代码详解网站的支持!
来源:http://www.cnblogs.com/nangxi/archive/2017/08/28/7444603.html
标签:js,棋盘
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
像数艺术
2010-02-08 12:33:00
![](https://img.aspxhome.com/file/UploadPic/20102/8/banner-78s.jpg)
Python configparser模块操作代码实例
2021-11-05 18:48:08
详解pandas删除缺失数据(pd.dropna()方法)
2021-03-26 04:36:33
![](https://img.aspxhome.com/file/2023/8/115098_0s.png)
30个出色的分页设计
2009-05-12 17:49:00
![](https://img.aspxhome.com/file/UploadPic/20095/12/220023a63-30s.jpg)
Python读写Excel文件的实例
2023-03-05 03:25:10
![](https://img.aspxhome.com/file/2023/1/96911_0s.png)
vue axios请求拦截实例代码
2024-05-13 09:14:17
python判断计算机是否有网络连接的实例
2023-01-28 22:36:27
Python数据处理numpy.median的实例讲解
2022-07-24 06:36:04
Win10下Python环境搭建与配置教程
2023-08-24 03:25:18
![](https://img.aspxhome.com/file/2023/3/61453_0s.png)
网站的新趋势
2008-12-11 13:36:00
Navicat Premium15连接云服务器中的数据库问题及遇到坑
2024-01-19 05:41:50
![](https://img.aspxhome.com/file/2023/2/77212_0s.png)
js放大缩小容器:仿动画
2008-02-15 11:34:00
Python3导入CSV文件的实例(跟Python2有些许的不同)
2023-09-21 05:19:29
Python WSGI的深入理解
2021-04-20 21:48:25
sqlserver 2008手工修改表结构,表不能保存的问题与解决方法
2024-01-23 03:07:26
![](https://img.aspxhome.com/file/2023/0/102060_0s.jpg)
Element 头像上传的实战
2024-04-30 10:45:11
![](https://img.aspxhome.com/file/2023/6/130056_0s.png)
python用pyecharts画矩形树图实例
2022-12-20 21:42:04
![](https://img.aspxhome.com/file/2023/0/90310_0s.png)
MySQL数据库管理必备工具 phpMyAdmin 3.0
2008-12-10 14:12:00
![](https://img.aspxhome.com/file/UploadPic/200812/20081212115238456.jpg)
SQL Server中选出指定范围行的SQL语句代码
2024-01-28 08:39:14
内容添加asp.net
2024-06-05 09:27:29