JavaScript编写棋盘覆盖
来源:互联网 发布:淘宝怎么看微淘 编辑:程序博客网 时间:2024/06/10 01:18
一、前言
之前做了一个算法作业,叫做棋盘覆盖,本来需要用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里面
阅读全文
0 0
- JavaScript编写棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- Veeam.Backup.and.Replication.v9.0-ISO 1DVD
- RFID电子标签改变了城市的交通拥堵
- 七夕节,祝大家情人节快乐
- C++的单例模式与线程安全单例模式(懒汉/饿汉)
- Spring Cloud(五):服务消费者Feign
- JavaScript编写棋盘覆盖
- LeetCode题解(Golang实现)--Add Two Numbers
- Java对象的创建
- Fortify SCA报告模板汇总
- webservice 的service.xml配置
- openjudge 二维数组右上坐下遍历(二维数组)
- 基于OpenCV实现最简单的数字识别
- Java自定义注解Annotation及取注解值的例子
- 4.19 leetcode -19 candy