js實現(xiàn)簡單翻牌小游戲
本文實例為大家分享了js實現(xiàn)簡單翻牌小游戲的具體代碼,供大家參考,具體內(nèi)容如下
1.簡介
非常簡單的一個網(wǎng)絡(luò)消消樂翻牌小游戲的實現(xiàn),代碼量較少,不過遇到的bug和自行開發(fā)的步驟十分有紀念意義。
2.核心代碼塊
生成隨機數(shù)列,確定圖片隨機分布
function getImgIndex(is){ ???var index = parseInt(Math.random()*8)+1; ?? ??? ??if(is[index] < 2){ ?? ??? ???? ?is[index]++; ?? ??? ??? ? ?} else { ?? ??? ??? ??index = getImgIndex(is); ?? ??? ????} ?? ??? ?return index; ??}
通過window.onload函數(shù)定義8個背景圖片隨機分布
window.onload = function(){ ?? ???//規(guī)則:五個背景圖,每張圖出現(xiàn)兩次,隨機分配到16個div中 ?? ??? ?var ele = document.getElementById("parent"); ?? ??? ?var imgs = [1,2,3,4,5,6,7,8]; ?? ??? ?var is = [0,0,0,0,0,0,0,0,0]; ?? ??? ??for(var i = 0; i < 16; i++){ ?? ??? ??? ???var index = getImgIndex(is); ?? ??? ??? ??? console.info(index); ?? ??? ??? ??? ele.innerHTML += "<div id='k"+i+"' class='kid' " ?? ??? ??? ??? ???+"οnclick='oclick(this.id,"+index+");'></div>";?? ? ?? ??? ??? ??? ?//通過字符串拼接方式,將H5代碼發(fā)送給網(wǎng)頁執(zhí)行?? ??? ??? ? ?? ??? ???} }
點擊圖片事件
oclick函數(shù)中利用f存儲上個圖片的index,;利用id2存儲上個圖片的id
再進行以下操作比較
function oclick(id,index) ?? ??? ??? ?{ ?? ?? ??? ??? ??? ?if(find[index]<2) ?? ??? ??? ??? ?{ ?? ??? ??? ? ? ?if(f==0){ ?? ??? ??? ? ? ?find[index]++; ?? ??? ??? ??? ?look(id,index); ?? ??? ??? ??? ?f=index; ?? ??? ??? ??? ?id2=id; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if(f==index&&id!=id2) ?? ??? ??? ??? ??? ?{ ?? ?? ??? ??? ??? ??? ??? ?find[index]++; ?? ??? ??? ??? ??? ??? ?look(id,index); ?? ??? ??? ??? ??? ??? ?f=0; ?? ??? ??? ??? ??? ??? ?id2=0; ?? ??? ??? ??? ??? ??? ?marked++; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?else ?? ??? ??? ??? ??? ?{ ?? ?? ??? ??? ??? ??? ??? ?find[f]=0; ?? ??? ??? ??? ??? ??? ?look(id,index); ?? ??? ??? ??? ??? ??? ?look(id2,f); ?? ??? ??? ??? ??? ??? ?clearStyle(id); ?? ??? ??? ??? ??? ??? ?clearStyle(id2); ?? ??? ??? ??? ??? ??? ?f=0; ?? ??? ??? ??? ??? ??? ?id2=0; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?if(marked==8) ?? ??? ??? ??? ?{ ?? ??? ??? ???alert("恭喜完成"); ?? ??} }
圖片操作函數(shù)
function look(id,index){ ?var ele = document.getElementById(id); ?? ??ele.style="background-image: url("+index+".gif);"; ?? ??? } ?? ??? ??function clearStyle(id){ ?? ??? ???setTimeout(function(){ ?? ??? ??? ?var ele = document.getElementById(id); ?? ??? ??? ?ele.style=""; ?? ??? ???}, 200); ?}
重置頁面函數(shù)
function re(){ ?? ??? ??? ??? ?window.location.reload(); ?? ??? ??? ?}
頁面的設(shè)計
<body> ?? <div id="parent" class="par"></div> ?? <input type="button" name="b1" id="b1" value="再van♂一次" onclick="re();"/> </body>
3.已知bug 說明(已解決)
1.點擊圖片本身兩次導(dǎo)致匹配成功
解決方式:加入id判斷是否為自身比較
f==index&&id!=id2
2.已匹配的圖片再次點擊會消除
解決方式:加入find[]數(shù)組統(tǒng)計圖片點擊次數(shù),超過兩次不再比較
if(find[index]<2)
4.全文代碼
<!DOCTYPE html> <html> ?? ?<head> ?? ??? ?<meta charset="utf-8"> ?? ??? ?<title></title> ?? ??? ?<style> ?? ??? ?/* 父子網(wǎng)頁界面設(shè)計 */ ?? ??? ? ? .kid{ ?? ??? ? ? ?? ?width: 100px; ?? ??? ? ? ?? ?height: 100px; ?? ??? ? ? ?? ?background-color: #aaffff; ?? ??? ? ? ?? ?border: 1px solid black; ?? ??? ? ? ?? ?margin: 10px; ?? ??? ? ? ?? ?float: left; ?? ??? ? ? } ?? ??? ? ? .par{ ?? ??? ? ? ?? ?width: 1000px; ?? ??? ? ? ?? ?padding: 10px; ?? ??? ? ? ?? ?border: 1px solid black; ?? ??? ? ? ?? ?float: left; ?? ??? ? ? } ?? ??? ?</style> ?? ??? ?<script> ?? ??? ? ? ? var f=0; ?? ??? ??? ? var id2=0; ?? ??? ??? ? var find = [0,0,0,0,0,0,0,0,0]; ?? ??? ??? ? var marked=0; ?? ??? ??? ?window.onload = function(){ ?? ??? ??? ??? ?//規(guī)則:五個背景圖,每張圖出現(xiàn)兩次,隨機分配到16個div中 ?? ??? ??? ??? ?var ele = document.getElementById("parent"); ?? ??? ??? ??? ? ?? ??? ??? ??? ?var imgs = [1,2,3,4,5,6,7,8]; ?? ??? ??? ??? ? ?? ??? ??? ??? ? ?? ??? ??? ??? ?var is = [0,0,0,0,0,0,0,0,0]; ?? ??? ??? ??? ? ?? ??? ??? ??? ?for(var i = 0; i < 16; i++){ ?? ??? ??? ??? ??? ?var index = getImgIndex(is); ?? ??? ??? ??? ??? ?console.info(index); ?? ??? ??? ??? ??? ?ele.innerHTML += "<div id='k"+i+"' class='kid' " ?? ??? ??? ??? ??? ??? ?+"οnclick='oclick(this.id,"+index+");'></div>";?? ??? ??? ??? ? ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?function getImgIndex(is){ ?? ??? ??? ??? ?var index = parseInt(Math.random()*8)+1; ?? ??? ??? ??? ?if(is[index] < 2){ ?? ??? ??? ??? ??? ?is[index]++; ?? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ?index = getImgIndex(is); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?return index; ?? ??? ??? ?} ?? ??? ??? ?function oclick(id,index) ?? ??? ??? ?{ ?? ?? ??? ??? ??? ?if(find[index]<2) ?? ??? ??? ??? ?{ ?? ??? ??? ? ? ?if(f==0){ ?? ??? ??? ? ? ?find[index]++; ?? ??? ??? ??? ?look(id,index); ?? ??? ??? ??? ?f=index; ?? ??? ??? ??? ?id2=id; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if(f==index&&id!=id2) ?? ??? ??? ??? ??? ?{ ?? ?? ??? ??? ??? ??? ??? ?find[index]++; ?? ??? ??? ??? ??? ??? ?look(id,index); ?? ??? ??? ??? ??? ??? ?f=0; ?? ??? ??? ??? ??? ??? ?id2=0; ?? ??? ??? ??? ??? ??? ?marked++; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?else ?? ??? ??? ??? ??? ?{ ?? ?? ??? ??? ??? ??? ??? ?find[f]=0; ?? ??? ??? ??? ??? ??? ?look(id,index); ?? ??? ??? ??? ??? ??? ?look(id2,f); ?? ??? ??? ??? ??? ??? ?clearStyle(id); ?? ??? ??? ??? ??? ??? ?clearStyle(id2); ?? ??? ??? ??? ??? ??? ?f=0; ?? ??? ??? ??? ??? ??? ?id2=0; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?if(marked==8) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?alert("恭喜完成"); ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?function look(id,index){ ?? ??? ??? ??? ?var ele = document.getElementById(id); ?? ??? ??? ??? ?ele.style="background-image: url("+index+".gif);"; ?? ??? ??? ?} ?? ??? ??? ?function clearStyle(id){ ?? ??? ??? ??? ?setTimeout(function(){ ?? ??? ??? ??? ??? ??? ?var ele = document.getElementById(id); ?? ??? ??? ??? ??? ??? ?ele.style=""; ?? ??? ??? ??? ??? ?}, 200); ?? ??? ??? ?} ?? ??? ??? ?function re(){ ?? ??? ??? ??? ?window.location.reload(); ?? ??? ??? ?} ?? ??? ?</script> ?? ?</head> ?? ?<body> ?? ??? ?<div id="parent" class="par"></div> ?? ??? ??? ?<input type="button" name="b1" id="b1" value="再van♂一次" onclick="re();"/> ?? ?</body> </html>
注意:使用需修改圖片地址url
實現(xiàn)效果
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript創(chuàng)建對象_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細介紹了JavaScript創(chuàng)建對象的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06JS實現(xiàn)無縫循環(huán)marquee滾動效果
這篇文章主要為大家詳細介紹了JS實現(xiàn)無縫循環(huán)marquee滾動效果,兼容IE, FireFox, Chrome,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05js eval函數(shù)使用,js對象和字符串互轉(zhuǎn)實例
下面小編就為大家?guī)硪黄猨s eval函數(shù)使用,js對象和字符串互轉(zhuǎn)實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03