亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

原生javascript實現連連看游戲

2024-05-06 16:47:31
字體:
來源:轉載
供稿:網友

本文實例為大家分享了js實現連連看游戲的具體代碼,供大家參考,具體內容如下

<!DOCTYPE html><html><head><title>連連看</title><meta charset="gbk"><style type="text/css"> body {  text-align: center; } .text {text-align: center; margin-top: 60px; color: #fff;} .agin {text-align: center; margin-top: 60px; color: #fff;}  #game-box {   margin: 60px auto;   position: relative; }  #game-box img {  float: left;  width: 59px;  height: 59px;  border: 1px solid #000000; }  #game-box img.hover {   border: 1px solid #ffffff; }  #game-box img.active {   border: 1px solid #7fff00; } #game-box div {  background-color: #7fff00;  position: absolute; }</style><script type="text/javascript">  var byId = function (id) {   return document.getElementById(id);  }  var boxWidth = 61; //格子寬度  var gameBox;  var mapid = 'game-box';//地圖 id  //22張圖片  var arr = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'.split(',');  var h = 8; //圖片共8行  var w = 11; //圖片共11列  var boxsLength = h*w;  var boxArr = {};  //map對象  var startBox = ''; //開始的格子  var endBox = '';  //結束的格子  window.onload = init;   //初始化  function init() {   byId('agin').style.display = 'none';//隱藏再來一把按鈕   boxsLength = h*w;//圖片方框的個數   boxArr = {};   startBox = '';   endBox = '';   var str = '';   gameBox = byId(mapid);   for (var i = 0; i < h; i++) {    for (var j = 0; j < w; j++) {     str += '<img class="" onclick="choose(this);" id="t' + i + '_l'       + j + '" src="img/blank.gif">'     // alert(str);    }//id="t0_l0,t0_l1,t0_l2,t0_l3..."   }   gameBox.innerHTML = str;   gameBox.style.width = w * boxWidth + 'px';   pushBoxArr();   toHTML();  }   // 隨機獲取坐標  function getPosition() {   var t, f;   (function () {    t = parseInt(Math.random() * h);    l = parseInt(Math.random() * w);    if (('t' + t + '_l' + l) in boxArr) {      arguments.callee();    }   })();   return {t:t, l:l}  }   // 創建隨機坐標的格子  function CearteBox(name) {  var p = getPosition();  this.name = name;//圖片名  this.t = p.t;//行  this.l = p.l;//列  this.position = 't' + p.t + '_l' + p.l;//位置  this.love = 0;//這個用于特殊,某些圖片不同也可以連接  switch (name) {   case '100':   case '200':    this.love = 1;    break;   case '300':   case '400':   case '500':    this.love = 2;    break;   case '600':   case '700':    this.love = 3;    break;   case '800':   case '900':    this.love = 4;    break;   }  }   // 產生88個格子(圖片框)  function pushBoxArr() {   var index = 0;   var last = arr.length - 1;   for (var i=0; i< h;i++) {    for (var j=0;j< w;j++) {     var a = new CearteBox(arr[index]);//用圖片名創建,每張圖片四次     boxArr['t' + a.t + '_l' + a.l] = a;//格子的位置(也是每張圖片的id)     if (index === last) {      index = 0;     } else {      index += 1;     }    }   }  }   // 初始化html  function toHTML() {   for (var i in boxArr) {//遍歷所有圖片的id    byId(i).src = 'img/' + boxArr[i].name + '.png';   }  }   // choose  function choose(el) {   if (el.src.indexOf('blank') >= 0) {//鼠標點擊了空白圖片     return false;   }else{    el.className = 'active';//更改點擊圖片的樣式     //第一次點擊或點擊了同一張圖片    if (startBox == '' || startBox == el.id) {     startBox = el.id;    } else {//點擊了第二張圖片     endBox = el.id;     test(boxArr[startBox], boxArr[endBox]);    }   }  }  // 判斷是不是可連接格子 function test(a, b) {  var can = function (a, b) {    if (a.name == b.name) {//圖片名相同就可以連接     return true;    } else {     if (a.love != 0 && b.love != 0) {      if (a.love == b.love) {       return true;      } else {       return false;      }     } else {      return false;     }   }  }(a, b);//立即執行  if (can) {//可以連接   go(a, b);  } else {//不能連接   byId(startBox).className = '';   startBox = endBox;//指向第二張圖片   endBox = '';  } }  // 判斷是否連通 function go(a, b) {  var _ap = a.position, _bp = b.position;  var a = a, b = b, temp, isKill = false;   // 建立四個點,判斷是否兩兩相通  var pt1, pt2, pt3, pt4;  // 上到下掃描  if (isKill == false) {   //交換位置   if (a.t > b.t) {    temp = a;    a = b;    b = temp;   }   for (var i = -1, len = h; i <= len; i++) {    pt1 = a;    pt2 = {t:i, l:a.l};    pt3 = {t:i, l:b.l};    pt4 = b;    if( (!isNull(pt2) && (pt2.t != a.t) ) || ( !isNull(pt3) && (pt3.t != b.t) ) ){       continue;    }    else if (link4pt(pt1, pt2, pt3, pt4)){      isKill = true;      kill(a, b);      showLine(pt1, pt2, pt3, pt4);      break;      return;    }  }  }     // 左到右掃描   if (isKill == false) {    //交換位置      if (a.l > b.l) {        temp = a;        a = b;        b = temp;      }      for (var i = -1, len = w; i <= len; i++) {        pt1 = a;        pt2 = {t:a.t, l:i};        pt3 = {t:b.t, l:i};        pt4 = b;        if( (!isNull(pt2) && (pt2.l != a.l) ) || ( !isNull(pt3) && (pt3.l != b.l) ) ){          continue;        }        else if (link4pt(pt1, pt2, pt3, pt4)){          isKill = true;          kill(a, b);          showLine(pt1, pt2, pt3, pt4);          break;          return;        }      }    }     //掃描完畢    if(isKill == false){      endBox = '';      byId(_ap).className = '';      startBox = _bp;    }  }   //干掉格子,刪除boxArr中相應格子  function kill(a, b) {    boxArr[a.position] = null;    boxArr[b.position] = null;    boxsLength -= 2;    startBox = '';    endBox = '';  }   // 顯示鏈接路徑  function showLine(a, b, c, d) {    var line1 =show2pt(a,b);    var line2 = show2pt(b,c);    var line3 = show2pt(c,d);    var hideLine = function () {      gameBox.removeChild(line1);      gameBox.removeChild(line2);      gameBox.removeChild(line3);      byId(a.position).src = byId(d.position).src ='img/blank.gif';      byId(a.position).className = byId(d.position).className = '';      if (boxsLength<=0) {        alert('親,你贏了!好膩害啊。');        byId('agin').style.display = 'block';      }    }    setTimeout(hideLine, 300);     function show2pt (a, b){      var top, left, width, height, line = document.createElement('div');      var a = a, b = b, temp;      // 交換位置      if (a.t > b.t || a.l > b.l) {        temp = a;        a = b;        b = temp;      }      top = boxWidth * a.t + 30 + 'px';      left = boxWidth * a.l + 30 + 'px';      // 同行(t相等)      if (a.t == b.t) {        width = boxWidth * (b.l - a.l) + 1 + 'px';        height = '1px';      }      // 同列(l相等)      if (a.l == b.l) {        width = '1px';        height = boxWidth * (b.t - a.t) + 1 + 'px';      }      line.style.top = top;      line.style.left = left;      line.style.width = width;      line.style.height = height;      return gameBox.appendChild(line);    }  }   // 單個格子是否空值  function isNull (a) {    return boxArr['t' + a.t + '_l' + a.l] ? false : true;  }   // 2點是否連通  function link2pt (a, b) {    var a = a, b = b, temp, canLink = true;    // 交換位置    if (a.t > b.t || a.l > b.l) {      temp = a;      a = b;      b = temp;    }    if (a.t == b.t) {  //同行(t相等),a在b的左邊      for (var i = a.l + 1, len = b.l - 1; i <= len; i++) {        if (boxArr['t' + a.t + '_l' + i]) {          canLink = false;          break;        }      }    }else if (a.l == b.l) {  //同列(l相等),a在b的上邊      for (var i = a.t + 1, len = b.t - 1; i <= len; i++ ) {        if(boxArr['t' + i + '_l' + a.l]) {          canLink = false;          break;        }      }    } else {      throw ('位置錯誤:a.t=' + a.t + ' b.t=' + b.t + ' a.l=' + a.l + ' b.l=' + b.l);    }    return canLink;  }   // 4個點是否兩兩連通  function link4pt (pt1, pt2, pt3, pt4) {    return link2pt(pt1, pt2) && link2pt(pt2, pt3) && link2pt(pt3, pt4);  }</script></head><body><p class="agin" id="agin" style="display: none;"><input type="button" onclick="init()" value="再來一把"></p><div id="game-box"></div><p class="text" style="">相同圖片可以連哦!啊哈哈哈~~ </p></body></html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91在线看www| 国产美女精品免费电影| 亚洲最大成人网色| 亚洲无限乱码一二三四麻| 欧美一级免费看| 国产剧情久久久久久| 国产区亚洲区欧美区| 欧美国产激情18| 日韩专区在线播放| 精品免费在线视频| 国产精品久久久久久久久久尿| 日韩欧美福利视频| 亚洲一区二区三区四区在线播放| 51ⅴ精品国产91久久久久久| 日本精品视频在线| 国产福利精品av综合导导航| 一区二区三区国产视频| 亚洲社区在线观看| 欧美性videos高清精品| 日韩激情视频在线播放| 欧美激情2020午夜免费观看| 日韩国产精品一区| 茄子视频成人在线| 久久激情视频免费观看| 国产a∨精品一区二区三区不卡| 亚洲japanese制服美女| 亚洲深夜福利视频| 久久99久久99精品免观看粉嫩| 综合久久五月天| 亚洲欧美中文另类| 精品视频—区二区三区免费| 久久91精品国产91久久跳| 久久精品成人一区二区三区| 日韩久久午夜影院| 亚洲石原莉奈一区二区在线观看| 亚洲黄在线观看| 日韩精品免费在线视频观看| 国产精品v日韩精品| 日韩小视频在线观看| 日本免费在线精品| 亚洲视频一区二区| 一区二区日韩精品| 日韩国产欧美精品一区二区三区| 欧美激情久久久| 国产精品成人v| 成人疯狂猛交xxx| 欧美日韩午夜激情| 色琪琪综合男人的天堂aⅴ视频| 91亚洲精品视频| 国产精品女人网站| 欧美最猛性xxxx| 国产偷亚洲偷欧美偷精品| 91极品女神在线| 91久久精品视频| 午夜精品一区二区三区av| 韩国日本不卡在线| 欧洲一区二区视频| 国产精品狼人色视频一区| 欧美日韩一区二区免费视频| 中文字幕在线看视频国产欧美在线看完整| 亚洲xxxx在线| 插插插亚洲综合网| 亚洲性无码av在线| 国产成人精品视频在线观看| 91精品视频在线免费观看| 欧美高清激情视频| 欧美激情亚洲视频| 久久久999精品视频| 日韩**中文字幕毛片| 亚洲日韩中文字幕| 亚洲国产成人久久综合一区| 欧美成人亚洲成人| 欧美最近摘花xxxx摘花| 91久久在线观看| 不卡毛片在线看| 欧美性猛交xxxx富婆弯腰| 欧美另类老女人| 欧美老女人xx| 成人一区二区电影| 久久91亚洲精品中文字幕| 91精品视频观看| 国产69久久精品成人看| 欧美理论电影在线观看| 成人精品在线视频| 日韩中文字幕国产| 岛国av在线不卡| 亚洲欧美色婷婷| 另类图片亚洲另类| 精品色蜜蜜精品视频在线观看| 国产精品久久久久免费a∨大胸| 国产欧美精品xxxx另类| 欧美国产中文字幕| 久久久国产精品一区| 久久久久久久久久久91| 亚洲精品久久久久| 日韩毛片在线观看| 久久精品国产一区| 国产日本欧美一区二区三区| 青草青草久热精品视频在线网站| 国产日韩精品综合网站| 亚洲一区二区久久久| 欧美精品久久久久a| 这里只有精品久久| 欧美裸体xxxx| 97福利一区二区| 成人午夜黄色影院| 一区二区三区在线播放欧美| 亚洲国产精久久久久久久| 国产精品91久久| 国产精品久久久久久av下载红粉| 久久久欧美一区二区| 精品成人69xx.xyz| 欧美精品久久久久久久久久| 曰本色欧美视频在线| 国产99在线|中文| 久久久久久久久国产精品| 91av在线视频观看| 色琪琪综合男人的天堂aⅴ视频| 久久久综合免费视频| 国产日韩欧美中文在线播放| 欧美性生交xxxxxdddd| 国内成人精品一区| 国产有码在线一区二区视频| 国外成人免费在线播放| 精品色蜜蜜精品视频在线观看| 中文字幕亚洲字幕| 精品久久久久久电影| 亚洲深夜福利网站| 欧美性高潮在线| 韩国v欧美v日本v亚洲| 高跟丝袜一区二区三区| 日韩欧美视频一区二区三区| 日韩欧美国产网站| 欧洲成人在线观看| 日韩视频免费在线| 亚洲国产日韩欧美综合久久| 日韩欧美999| 中文字幕自拍vr一区二区三区| 在线视频日本亚洲性| 久久久久亚洲精品| 国产97色在线| 国产99久久精品一区二区 夜夜躁日日躁| 91免费人成网站在线观看18| 亚洲视频欧美视频| 亚洲天堂成人在线视频| 久久视频国产精品免费视频在线| 日本亚洲欧洲色| 韩日精品中文字幕| 日韩视频免费观看| 高清欧美性猛交xxxx| 欧美日韩免费一区| 亚洲理论在线a中文字幕| 国产精品稀缺呦系列在线| 日韩在线观看免费高清| 国产日韩精品综合网站| 久久久国产精品x99av| 国产精品黄色影片导航在线观看| 国产精品视频区1| 久久这里只有精品视频首页| 91在线免费看网站| 中文字幕v亚洲ⅴv天堂| 亚洲伊人久久大香线蕉av| 4438全国亚洲精品在线观看视频| 亚洲一区二区三区乱码aⅴ蜜桃女|