一、前言
之前做了一个算法作业,叫做棋盘覆盖,本来需要用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编写棋盘覆盖代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]