国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript編寫棋盤覆蓋代碼詳解

2019-11-19 15:39:02
字體:
供稿:網(wǎng)友

一、前言

之前做了一個(gè)算法作業(yè),叫做棋盤覆蓋,本來需要用c語言來編寫的,但是因?yàn)槲业腸語言是半桶水(哈哈),所以索性就把網(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[][],只要能夠獲得它計(jì)算之后整個(gè)數(shù)組的數(shù)據(jù),那么就有思路了。要記住填寫進(jìn)表單里面的數(shù)據(jù)是在點(diǎn)擊按鈕之后才獲取的,所以獲取元素節(jié)點(diǎn)的代碼要放在onclick里面。

以上所述是小編給大家介紹的JavaScript編寫棋盤覆蓋代碼詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宝鸡市| 京山县| 荔浦县| 亳州市| 揭西县| 平阴县| 安平县| 万载县| 淳化县| 明溪县| 会理县| 和硕县| 隆回县| 临海市| 民权县| 桦川县| 故城县| 大悟县| 二连浩特市| 松江区| 彩票| 桂平市| 通城县| 和龙市| 西丰县| 外汇| 左云县| 个旧市| 安达市| 通榆县| 黄浦区| 甘孜县| 民丰县| 左云县| 和顺县| 子长县| 广饶县| 当雄县| 北宁市| 西充县| 黑龙江省|