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)遍歷對(duì)比
?? ??? ??? ?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ù)組 ?來存儲(chǔ)點(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中存儲(chǔ)了兩個(gè)li ?就清空 ?為下次存儲(chǔ)li做準(zhǔn)備
?? ??? ??? ?arr = [];
?? ??? ?}
?? ??? ?}
?? ?}
</script>運(yùn)行結(jié)果:

點(diǎn)兩個(gè)數(shù)字相同的棋子:

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解CocosCreator項(xiàng)目結(jié)構(gòu)機(jī)制
這篇文章主要介紹了詳解CocosCreator項(xiàng)目結(jié)構(gòu)機(jī)制,只有了解這些機(jī)制后,才能更好的進(jìn)行項(xiàng)目開發(fā),避免潛在錯(cuò)誤,并且快速的除錯(cuò)2021-04-04
Javascript獲取background屬性中url的值
Javascript獲取CSS中屬性值方法有很多,今天工作的時(shí)候遇到了一個(gè)問題是需要利用Javascript獲取css中background-img屬性u(píng)rl的值,通過查閱網(wǎng)站的資料找到了解決方法,現(xiàn)在將方法分享給大家,有需要的朋友們們可以參考借鑒,下面來一起看看吧。2016-10-10
JavaScript實(shí)現(xiàn)商品放大鏡效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)商品放大鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
JavaScript?進(jìn)階問題列表(各種js代碼段1-65)
從基礎(chǔ)到進(jìn)階,測(cè)試你有多了解?JavaScript,刷新你的知識(shí),或者幫助你的?coding?面試!?:muscle:?:rocket:?我每周都會(huì)在這個(gè)倉庫下更新新的問題2024-11-11
JS使用正則截取兩個(gè)字符串之間的字符串實(shí)現(xiàn)方法詳解
這篇文章主要介紹了JS使用正則截取兩個(gè)字符串之間的字符串實(shí)現(xiàn)方法,結(jié)合實(shí)例形式簡單分析了JS正則匹配與截取操作的實(shí)現(xiàn)技巧,并拓展分析了數(shù)量詞的概念與功能,需要的朋友可以參考下2017-01-01
javascript實(shí)現(xiàn)圖片輪播簡單效果
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)圖片輪播簡單效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
微信小程序如何調(diào)用新聞接口實(shí)現(xiàn)列表循環(huán)
這篇文章主要介紹了微信小程序如何調(diào)用新聞接口實(shí)現(xiàn)列表循環(huán),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07

