JavaScript編寫棋盤覆蓋代碼詳解
一、前言
之前做了一個算法作業(yè),叫做棋盤覆蓋,本來需要用c語言來編寫的,但是因為我的c語言是半桶水(哈哈),所以索性就把網(wǎng)上的c語言寫法改成JavaScript寫法,并且把它的覆蓋效果顯示出來
二、關(guān)鍵代碼
<!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>算法作業(yè)2</title> <style type="text/css"> #num{} #chess{ margin-top:20px; } </style> </head> <body> <div id="num"> <p>設(shè)置棋盤大?。? <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="設(shè)置棋盤參數(shù)" /> <input type="button" value="生成棋盤" /> </p> </div> <div id="chess"> </div> </body> </html> <script type="text/javascript"> window.onload=function() {//棋盤設(shè)置 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棋盤覆蓋
四、總結(jié)
棋盤覆蓋的C語言代碼我是參考課本的,為了能夠把它用進(jìn)JavaScript里面,突破口就是二維數(shù)組Matrix[][],只要能夠獲得它計算之后整個數(shù)組的數(shù)據(jù),那么就有思路了。要記住填寫進(jìn)表單里面的數(shù)據(jù)是在點(diǎn)擊按鈕之后才獲取的,所以獲取元素節(jié)點(diǎn)的代碼要放在onclick里面。
以上所述是小編給大家介紹的JavaScript編寫棋盤覆蓋代碼詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
javascript實現(xiàn)鼠標(biāo)點(diǎn)擊頁面 移動DIV
本篇文章主要介紹javascript實現(xiàn)鼠標(biāo)點(diǎn)擊頁面,移動DIV。話不多說,附上代碼實例。需要的朋友來看下吧2016-12-12異步j(luò)avascript的原理和實現(xiàn)技巧介紹
因為工作的需要,我要在網(wǎng)頁端編寫一段腳本,把數(shù)據(jù)通過網(wǎng)頁批量提交到系統(tǒng)中去。所以我就想到了Greasemonkey插件,于是就開始動手寫,發(fā)現(xiàn)問題解決得很順利2012-11-11JS獲取URL中參數(shù)值(QueryString)的4種方法分享
今天碰到要在一個頁面獲取另外一個頁面url傳過來的參數(shù),一開始很本能的想到了用 split("?")這樣一步步的分解出需要的參數(shù)。后來想了一下,肯定會有更加簡單的方法的!所以在網(wǎng)上找到了幾個很又簡單實用的方法,mark下。2014-04-04JavaScript函數(shù)中關(guān)于valueOf和toString的理解
本文給大家介紹JavaScript函數(shù)中關(guān)于valueOf和toString的理解,簡單的說就是需要轉(zhuǎn)換為字符串時,會調(diào)用toString,需要轉(zhuǎn)換為數(shù)字時需要調(diào)用valueOf。對js valueof tostring知識感興趣的朋友一起學(xué)習(xí)吧2016-06-06微信小程序如何在頁面跳轉(zhuǎn)時進(jìn)行頁面導(dǎo)航
小程序能夠在不同的頁面進(jìn)行跳轉(zhuǎn)切換,路由起到了至關(guān)重要的作用,下面這篇文章主要給大家介紹了關(guān)于微信小程序如何在頁面跳轉(zhuǎn)時進(jìn)行頁面導(dǎo)航的相關(guān)資料,需要的朋友可以參考下2022-09-09微信公眾號開發(fā) 實現(xiàn)點(diǎn)擊返回按鈕就返回到聊天界面
本文分享了微信公眾號開發(fā)實現(xiàn)點(diǎn)擊返回按鈕就返回到聊天界面的示例代碼。需要的朋友一起來看下吧2016-12-12