js實(shí)現(xiàn)連連看游戲
本文實(shí)例為大家分享了js實(shí)現(xiàn)連連看游戲的具體代碼,供大家參考,具體內(nèi)容如下
<!DOCTYPE html> <html> ?? ?<head> ?? ??? ?<meta charset="utf-8" /> ?? ??? ?<style type="text/css"> ?? ??? ??? ?*{ ?? ??? ??? ??? ?margin: 0; ?? ??? ??? ??? ?padding: 0; ?? ??? ??? ?} ?? ??? ??? ?ul{ ?? ??? ??? ??? ?width: 400px; ?? ??? ??? ??? ?height: 400px; ?? ??? ??? ??? ?border: 1px solid goldenrod; ?? ??? ??? ??? ?margin: 30px auto; ?? ??? ??? ??? ?list-style: none; ?? ??? ??? ??? ?display: flex; ?? ??? ??? ??? ?flex-wrap: wrap; ?? ??? ??? ??? ?justify-content: space-between; ?? ??? ??? ?} ?? ??? ??? ?li{ ?? ??? ??? ??? ?width: 100px; ?? ??? ??? ??? ?height: 100px; ?? ??? ??? ??? ?border: 1px solid goldenrod; ?? ??? ??? ??? ?text-align: center; ?? ??? ??? ??? ?line-height: 100px; ?? ??? ??? ??? ?font-size: 30px; ?? ??? ??? ??? ?/*怪異盒模型*/ ?? ??? ??? ??? ?box-sizing: border-box; ?? ??? ??? ?} ? ? ? ?? ??? ?</style> ?? ??? ?<title></title> ?? ?</head> ?? ?<body> ?? ??? ? ?? ??? ?<ul> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ??? ?<li></li> ?? ??? ?</ul>?? ??? ? ?? ?</body> </html> <script type="text/javascript"> ?? ?//1.獲取標(biāo)簽 ?? ?var liArray = document.getElementsByTagName("li"); ?? ? ?? ?//2.定義變量 ?? ?var numArray = [];?? ? ?? ? ?? ?//3.封裝函數(shù) ?? ?//隨機(jī)數(shù) ?? ?function randomNum(min, max){ ?? ??? ?return Math.floor(Math.random() * (max - min + 1) + min); ?? ?} ?? ?//隨機(jī)顏色 ?? ?function randomColor(){ ?? ??? ?var red = randomNum(0, 255); ?? ??? ?var green = randomNum(0, 255); ?? ??? ?var blue = randomNum(0, 255); ?? ??? ?return "rgb(" + red + "," + green + "," + blue + ")"; ?? ?} ?? ? ?? ?//封裝函數(shù) 用于填滿數(shù)組 ?? ?function setNumberArray(){ ?? ??? ?//16個(gè)數(shù) 兩兩相等 ?? ??? ?for(var i = 0; i < 8; i++){ ?? ??? ??? ?var temp = randomNum(30, 90); ?? ??? ??? ?//卡著!!一旦隨機(jī)數(shù)已經(jīng)出現(xiàn)過!就重新再取數(shù)字! ?? ??? ??? ?//標(biāo)記 ?查看是否可用 ?? ??? ??? ?var isExits = false;//默認(rèn)希望temp不存在 ?? ??? ??? ?//經(jīng)過for循環(huán)遍歷對比 ?? ??? ??? ?for(var j = 0; j < numArray.length; j++){ ?? ??? ??? ??? ?if(temp == numArray[j]){ ?? ??? ??? ??? ??? ?//隨機(jī)數(shù)已經(jīng)出現(xiàn)過了! ?? ??? ??? ??? ??? ?isExits = true; ?? ??? ??? ??? ??? ?break;//結(jié)束 for..j循環(huán) ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?//for..j結(jié)束 ?查看isExits的標(biāo)記狀態(tài) ?? ??? ??? ?if(isExits == false){ ?? ??? ??? ??? ?//隨機(jī)數(shù)可用 ?? ??? ??? ??? ?numArray.push(temp); ?? ??? ??? ??? ?numArray.push(temp); ?? ??? ??? ?}else{ ?? ??? ??? ??? ?i--; //此次循環(huán)失效!i-- 再來一次!! ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ? ?? ??? ?} ?? ??? ?//循環(huán)結(jié)束 ? 16個(gè)數(shù)字已經(jīng)進(jìn)入數(shù)組中 ?? ??? ?console.log(numArray); ?? ??? ?//打亂數(shù)組?? ? ?? ??? ?crash(numArray); ?? ??? ?console.log(numArray); ?? ??? ? ?? ?} ?? ?//調(diào)用函數(shù) ?? ?setNumberArray(); ?? ?//封裝打亂數(shù)組的函數(shù) ?? ?function crash(arr){ ?? ??? ?for(var i = 0; i < 15; i++){ ?? ??? ??? ?var n1 = randomNum(0, 15); ?? ??? ??? ?//16個(gè)元素,下標(biāo)是0---15 ?? ??? ??? ?var n2 = randomNum(0, 15); ?? ??? ??? ?if(n1 != n2){ ?? ??? ??? ??? ?var t = arr[n1]; ?? ??? ??? ??? ?arr[n1] = arr[n2]; ?? ??? ??? ??? ?arr[n2] = t; ?? ??? ??? ?}?? ? ?? ??? ?} ?? ??? ? ?? ?} ?? ? ?? ?//封裝函數(shù) 用于設(shè)置li標(biāo)簽 ?? ?function setLiArray(){ ?? ??? ?for(var i = 0; i < liArray.length; i++){ ?? ??? ??? ?//賦值文本 ?li的個(gè)數(shù)和數(shù)字個(gè)數(shù)一致! 所以下標(biāo)也一致! ?? ??? ??? ?liArray[i].innerHTML = numArray[i]; ?? ??? ??? ?//設(shè)置字體顏色隨機(jī) ?? ??? ??? ?liArray[i].style.color = randomColor(); ?? ??? ??? ?//設(shè)置li的背景顏色 ?? ??? ??? ?liArray[i].style.backgroundColor = randomColor(); ?? ??? ?} ?? ?} ?? ?//調(diào)用函數(shù) ?? ?setLiArray(); ?? ? ?? ?//-------------------------------- ?? ?//給li添加點(diǎn)擊事件 ?? ?//專門定義一個(gè)數(shù)組 ?來存儲點(diǎn)擊的li標(biāo)簽 ?? ?var arr = []; ?? ?for(var i = 0; i < liArray.length; i++){ ?? ??? ?liArray[i].onclick = function(){ ?? ??? ??? ?arr.push(this); ?? ??? ??? ?console.log(arr); ?? ??? ? ?? ??? ?//兩個(gè)就得判斷 ?? ??? ?if(arr.length == 2){ ?? ??? ??? ?//不能重復(fù)點(diǎn)擊一個(gè)標(biāo)簽且點(diǎn)擊的兩個(gè)標(biāo)簽值還得一樣 ?? ??? ??? ?if(arr[0] != arr[1] && arr[0].innerHTML == arr[1].innerHTML){ ?? ??? ??? ??? ?//消除成功! ?? ??? ??? ??? ?arr[0].style.visibility = "hidden"; ?? ??? ??? ??? ?arr[1].style.visibility = "hidden"; ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ?//在這里 ?只要arr中存儲了兩個(gè)li ?就清空 ?為下次存儲li做準(zhǔn)備 ?? ??? ??? ?arr = []; ?? ??? ?} ?? ??? ?} ?? ?} </script>
運(yùn)行結(jié)果:
點(diǎn)兩個(gè)數(shù)字相同的棋子:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深入學(xué)習(xí)js函數(shù)的隱式參數(shù) arguments 和 this
這篇文章主要介紹了 深入學(xué)習(xí)js函數(shù)的隱式參數(shù) arguments 和 this,arguments是一個(gè)類數(shù)組結(jié)構(gòu),它保存了調(diào)用時(shí)傳遞給函數(shù)的所有實(shí)參;this是函數(shù)執(zhí)行時(shí)的上下文對象, 這個(gè)對象有些讓人感到困惑的行為。 下面分別對他們進(jìn)行討論。,需要的朋友可以參考下2019-06-06javascript禁制后退鍵(Backspace)實(shí)例代碼
這篇文章介紹了javascript禁制后退鍵(Backspace)實(shí)例代碼,有需要的朋友可以參考一下2013-11-11JavaScript實(shí)現(xiàn)表單注冊、表單驗(yàn)證、運(yùn)算符功能
在本篇文章里我們給大家整理了關(guān)于JavaScript中表單注冊、表單驗(yàn)證、運(yùn)算符的代碼示例,有興趣的朋友們可以測試學(xué)習(xí)下。2018-10-10微信小程序 高德地圖路線規(guī)劃實(shí)現(xiàn)過程詳解
這篇文章主要介紹了微信小程序 路線規(guī)劃實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08JavaScript知識點(diǎn)總結(jié)(十六)之Javascript閉包(Closure)代碼詳解
閉包是可以包含自由(未綁定)變量的代碼塊;這些變量不是在這個(gè)代碼塊或者任何全局上下文中定義的,而是在定義代碼塊的環(huán)境中定義。本文主要介紹了javascript中的閉包,感興趣的朋友一起看看吧2016-05-05JavaScript實(shí)現(xiàn)求最大公共子串的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)求最大公共子串的方法,涉及javascript針對字符串的遍歷、匹配、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02