js實(shí)現(xiàn)簡(jiǎn)單翻牌小游戲
本文實(shí)例為大家分享了js實(shí)現(xiàn)簡(jiǎn)單翻牌小游戲的具體代碼,供大家參考,具體內(nèi)容如下
1.簡(jiǎn)介
非常簡(jiǎn)單的一個(gè)網(wǎng)絡(luò)消消樂(lè)翻牌小游戲的實(shí)現(xiàn),代碼量較少,不過(guò)遇到的bug和自行開(kāi)發(fā)的步驟十分有紀(jì)念意義。
2.核心代碼塊
生成隨機(jī)數(shù)列,確定圖片隨機(jī)分布
function getImgIndex(is){
???var index = parseInt(Math.random()*8)+1;
?? ??? ??if(is[index] < 2){
?? ??? ???? ?is[index]++;
?? ??? ??? ? ?} else {
?? ??? ??? ??index = getImgIndex(is);
?? ??? ????}
?? ??? ?return index;
??}通過(guò)window.onload函數(shù)定義8個(gè)背景圖片隨機(jī)分布
window.onload = function(){
?? ???//規(guī)則:五個(gè)背景圖,每張圖出現(xiàn)兩次,隨機(jī)分配到16個(gè)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>";?? ?
?? ??? ??? ??? ?//通過(guò)字符串拼接方式,將H5代碼發(fā)送給網(wǎng)頁(yè)執(zhí)行?? ??? ??? ?
?? ??? ???}
}點(diǎn)擊圖片事件
oclick函數(shù)中利用f存儲(chǔ)上個(gè)圖片的index,;利用id2存儲(chǔ)上個(gè)圖片的id
再進(jìn)行以下操作比較
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);
?}重置頁(yè)面函數(shù)
function re(){
?? ??? ??? ??? ?window.location.reload();
?? ??? ??? ?}頁(yè)面的設(shè)計(jì)
<body> ?? <div id="parent" class="par"></div> ?? <input type="button" name="b1" id="b1" value="再van♂一次" onclick="re();"/> </body>
3.已知bug 說(shuō)明(已解決)
1.點(diǎn)擊圖片本身兩次導(dǎo)致匹配成功
解決方式:加入id判斷是否為自身比較
f==index&&id!=id2
2.已匹配的圖片再次點(diǎn)擊會(huì)消除
解決方式:加入find[]數(shù)組統(tǒng)計(jì)圖片點(diǎn)擊次數(shù),超過(guò)兩次不再比較
if(find[index]<2)
4.全文代碼
<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<style>
?? ??? ?/* 父子網(wǎng)頁(yè)界面設(shè)計(jì) */
?? ??? ? ? .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ī)則:五個(gè)背景圖,每張圖出現(xiàn)兩次,隨機(jī)分配到16個(gè)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
實(shí)現(xiàn)效果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript創(chuàng)建對(duì)象_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了JavaScript創(chuàng)建對(duì)象的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
JS實(shí)現(xiàn)無(wú)縫循環(huán)marquee滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)無(wú)縫循環(huán)marquee滾動(dòng)效果,兼容IE, FireFox, Chrome,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
js eval函數(shù)使用,js對(duì)象和字符串互轉(zhuǎn)實(shí)例
下面小編就為大家?guī)?lái)一篇js eval函數(shù)使用,js對(duì)象和字符串互轉(zhuǎn)實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
javascript寫(xiě)的一個(gè)鏈表實(shí)現(xiàn)代碼
今天在百度上看到有人問(wèn)怎么用Javascript 寫(xiě)一個(gè)學(xué)生管理系統(tǒng)。個(gè)人認(rèn)為沒(méi)有什么實(shí)現(xiàn)價(jià)值。無(wú)聊練練手吧,很久沒(méi)寫(xiě)JS了。2009-10-10
關(guān)于JS與jQuery中的文檔加載問(wèn)題
本文通過(guò)實(shí)例代碼給大家講解了js和jquery中的文檔加載問(wèn)題,感興趣的的朋友一起看看吧2017-08-08
比較全面的event對(duì)像在IE與FF中的區(qū)別 推薦
整理的比較全的event對(duì)像在ie與firefox瀏覽器中的區(qū)別。2009-09-09

