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

首頁 > 編程 > JavaScript > 正文

JS小游戲之仙劍翻牌源碼詳解

2019-11-20 14:06:25
字體:
來源:轉載
供稿:網友

本文實例講述了JS小游戲的仙劍翻牌源碼,是一款非常優秀的游戲源碼。分享給大家供大家參考。具體如下:

一、游戲介紹:

這是一個翻牌配對游戲,共十關。

1.游戲隨機從42張牌中抽取9張進行游戲,每組為2張相同的牌,共18張牌。
2.連續翻到兩張相同的為勝利,當9組全部翻到則過關。如不是翻到連續兩張相同的,則需要重新翻。
3.游戲共有10關,在規定時間內通過為挑戰成功。
4.如果某關在規定時間內沒有通過,則會從當前關繼續游戲。
5.游戲中的卡牌圖片與音樂均為大宇公司所有。
6.需要支持html5的瀏覽器,chrome與firefox效果最好。

游戲圖片:

完整實例代碼點擊此處本站下載。

二、Javascript部分:

/** 仙劍翻牌游戲*  Date:  2013-02-24*  Author: fdipzone*  Ver   1.0*/window.onload = function(){  var gameimg = [          'images/start.png',           'images/success.png',          'images/fail.png',          'images/clear.png',          'images/cardbg.jpg',          'images/sword.png'         ];  for(var i=1; i<=card.get_total(); i++){    gameimg.push('images/card' + i + '.jpg');  }  var callback = function(){    card.init();  }  img_preload(gameimg, callback);}/** card class */var card = (function(total,cardnum){  var gametime = [0,65,60,55,50,45,40,35,30,25,20]; // 每關的游戲時間  var turntime = 8;                 // 觀看牌時間  var level = 1;                  // 當前關卡  var carddata = [];                // 記錄牌的數據  var leveldata = [];                // 當前關卡牌數據  var is_lock = 0;                 // 是否鎖定  var is_over = 0;                 // 游戲結束  var first = -1;                  // 第一次翻開的卡  var matchnum = 0;                 // 配對成功次數  // 初始化  init = function(){    tips('show');    $('startgame').onclick = function(){      tips('hide');      start();    }  }  // 開始游戲  start = function(){    reset();    create(cardnum);    show();    var curtime = turntime;    setHtml('livetime', curtime);        var et = setInterval(function(){      if(curtime==0){        clearInterval(et);        turnall();        set_event();        message('start', process);        return ;      }      if(curtime==turntime){        turnall();      }      curtime--;      setHtml('livetime', curtime);    }, 1000)  }  // 隨機抽取N張牌  create = function(n){    carddata = [];    leveldata = [];        // 創建所有牌    for(var i=1; i<=total; i++){      carddata.push(i);    }      // 抽取牌    for(var i=0; i<n; i++){      var curcard = carddata.splice(Math.random()*carddata.length, 1).pop();      leveldata.push({'cardno':curcard,'turn':0}, {'cardno':curcard,'turn':0});    }    // 生成隨機順序游戲牌    leveldata = shuffle(leveldata);  }  // 生成牌  show = function(){    var cardhtml = '';    for(var i=0; i<leveldata.length; i++){      cardhtml += '<div class="cardplane">';      cardhtml += '<div class="card viewport-flip" id="card' + i + '">';      cardhtml += '<div class="list flip out"><img src="images/card' + leveldata[i]['cardno'] + '.jpg"></div>';      cardhtml += '<div class="list flip"><img src="images/cardbg.jpg"></div>';      cardhtml += '</div>';      cardhtml += '</div>';    }    setHtml('gameplane', cardhtml);  }  // 全部翻轉  turnall = function(){    for(var i=0; i<leveldata.length; i++){      turn_animate(i);    }  }  // 翻轉動畫  turn_animate = function(key){    var obj = $_tag('div', 'card' + key);    var cardfont, cardback;        if(getClass(obj[0]).indexOf('out')!=-1){      cardfont = obj[0];      cardback = obj[1];    }else{      cardfont = obj[1];      cardback = obj[0];    }    setClass(cardback, 'list flip out');    var et = setTimeout(function(){      setClass(cardfont, 'list flip in');    }, 225);  }  // 設置點擊事件  set_event = function(){    var o = $_tag('div', 'gameplane');    for(var i=0,count=o.length; i<count; i++){      if(getClass(o[i])=='card viewport-flip'){        o[i].onclick = function(){          turn(this.id);        }      }    }  }  // 計時開始  process = function(){    is_lock = 0;    var curtime = gametime[level];    setHtml('livetime', curtime);    var et = setInterval(function(){      if(matchnum==cardnum){        clearInterval(et);        return ;      }      curtime--;      setHtml('livetime', curtime);            if(curtime==0){        clearInterval(et);        is_over = 1;        message('fail', start);      }    }, 1000);  }  // 游戲訊息動畫  message = function(type, callback){    is_lock = 1;    var message = $('message');    var processed = 0;    var opacity = 0;    var soundtime = {          'start': 1500,          'success': 4000,          'fail': 6000,          'clear': 4000    };    disp('message','show');    setClass(message,'message_' + type);    setOpacity(message, opacity);    setPosition(message, 'left', 0);    setPosition(message, 'top', 390);    if(type=='start'){      bgsound(type, true);    }else{      bgsound(type);    }    var et = setInterval(function(){      var message_left = getPosition(message,'left');      processed = processed + 25;      if(processed>=500 && processed<=750){        opacity = opacity+10;        setPosition(message, 'left', message_left + 30);        setOpacity(message, opacity);      }else if(processed>=soundtime[type] && processed<=soundtime[type]+250){        opacity = opacity-10;        setPosition(message, 'left', message_left + 35);        setOpacity(message, opacity);      }else if(processed>soundtime[type]+250){        disp('message','hide');        clearInterval(et);        if(typeof(callback)!='undefined'){          callback();        }      }    },25);  }  // 翻牌  turn = function(id){    if(is_lock==1){      return ;    }    var key = parseInt(id.replace('card',''));      if(leveldata[key]['turn']==0){ // 未翻開      if(first==-1){ // 第一次翻        turn_animate(key);        first = key;        leveldata[key]['turn'] = 1;      }else{ // 第二次翻        turn_animate(key);        leveldata[key]['turn'] = 1;        check_turn(key);      }    }  }  // 檢查是否翻牌成功  check_turn = function(key){    is_lock = 1;    if(leveldata[first]['cardno']==leveldata[key]['cardno']){ // 配對成功      matchnum ++;      if(matchnum==cardnum){        var et = setTimeout(function(){          message('success', levelup);        }, 225);      }      first = -1;      is_lock = 0;    }else{ // 配對失敗,將翻開的牌翻轉      var et = setTimeout(function(){          turn_animate(first);          leveldata[first]['turn'] = 0;          turn_animate(key);          leveldata[key]['turn'] = 0;          first = -1;                    if(is_over==0){            is_lock = 0;          }        }, 300);    }  }  // 過關  levelup = function(){    if(level<gametime.length-1){      level ++;      setHtml('level', level);      start();    }else{      clear();    }  }  // 全部通關  clear = function(){    level = 1;    disp('levelplane','hide');    disp('process', 'hide');    setHtml('gameplane','');    message('clear',init);  }  // 音樂播放  bgsound = function(file, loop){    var id = 'audioplayer';    if(typeof(file)!='undefined'){      if(typeof(loop)=='undefined'){        loop = false;      }      var audiofile = [];      audiofile['mp3'] = 'music/' + file + '.mp3';      audiofile['ogg'] = 'music/' + file + '.ogg';      audioplayer(id, audiofile, loop);    }else{      audioplayer(id);    }  }  // 游戲玩法  tips = function(type){    disp('tips', type);  }  // 獲取牌總數  get_total = function(){    return total;  }  // 重置參數  reset = function(){    disp('levelplane','show');    setHtml('level', level);    disp('process', 'show');    setHtml('livetime', '');    setHtml('gameplane', '');    is_lock = 1;    is_over = 0;    first = -1;    matchnum = 0;  }  return this;})(42,9);

相信本文所述對大家javascript游戲設計的學習有一定的借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩专区在线观看| 国产亚洲美女精品久久久| 精品免费在线视频| 亚洲精品一区二区三区婷婷月| 欧美性在线视频| 性色av一区二区三区| 91社区国产高清| 国产精品丝袜久久久久久不卡| 91精品国产91久久久| 日韩av网站大全| 亚洲精品美女免费| 日韩美女在线看| 亚洲美女自拍视频| 91精品国产成人www| 国产精品免费一区二区三区都可以| 欧美日韩免费观看中文| 亚洲qvod图片区电影| 7777精品久久久久久| 狠狠做深爱婷婷久久综合一区| 欧美精品一二区| 国产午夜精品麻豆| 国产不卡av在线免费观看| 欧美日韩激情美女| 国产日韩欧美日韩| 国产成人精品最新| 欧美中文字幕第一页| 久久免费少妇高潮久久精品99| 欧美最猛性xxxxx(亚洲精品)| 日韩精品免费看| 日韩在线精品一区| 国产精品久久久久久久久久ktv| 欧美性生交xxxxx久久久| 亚洲毛片在线观看| 亚洲精品一区久久久久久| 亚洲精品日产aⅴ| 最近2019中文字幕大全第二页| 欧美日韩一区二区在线| 日本午夜人人精品| 亚洲va久久久噜噜噜久久天堂| 成人性生交大片免费看小说| 亚洲美女又黄又爽在线观看| 97精品在线观看| 中文字幕欧美精品日韩中文字幕| 亚洲高清色综合| 精品视频—区二区三区免费| 亚洲精品美女在线观看| 精品久久久久久中文字幕大豆网| 一区二区成人精品| 久久精品久久久久电影| 国产精品情侣自拍| 91精品国产综合久久香蕉| 韩国19禁主播vip福利视频| 国产精品一区二区久久国产| 久久99久久亚洲国产| 久久综合色88| 欧美日韩加勒比精品一区| 最近的2019中文字幕免费一页| 国产成人鲁鲁免费视频a| 欧美日韩xxxxx| 国产精品入口免费视频一| 日韩高清av在线| 国产日韩综合一区二区性色av| 91九色精品视频| 日韩精品在线看| 欧美精品videossex88| 欧美激情一区二区久久久| 午夜精品久久久久久99热软件| 8x拔播拔播x8国产精品| 中文字幕亚洲在线| 欧美激情2020午夜免费观看| 国产精品久久久久久久久免费看| 欧美精品福利视频| 日韩中文字幕在线免费观看| 亚洲欧洲日产国码av系列天堂| 精品呦交小u女在线| 国产精品九九九| 日韩精品丝袜在线| 国产伦精品一区二区三区精品视频| 国产亚洲精品久久久久久牛牛| 国产91|九色| 国产日韩欧美综合| 97精品伊人久久久大香线蕉| 成人网欧美在线视频| www.日韩免费| 最好看的2019年中文视频| 这里只有精品视频在线| 日韩av观看网址| 国产精品一区二区久久久| 亚洲精品720p| 亚洲欧美在线看| 麻豆国产精品va在线观看不卡| 亚洲欧洲国产伦综合| 4p变态网欧美系列| 日本亚洲欧洲色| xvideos亚洲| 国产精品永久免费在线| 久久亚洲精品一区二区| 大荫蒂欧美视频另类xxxx| 久久综合色88| 日韩欧美高清视频| 久久夜色精品亚洲噜噜国产mv| 日韩欧美在线视频观看| www.日韩视频| 国产日产欧美精品| 午夜剧场成人观在线视频免费观看| 午夜精品久久久久久99热| 日韩hd视频在线观看| 中文字幕国产精品| 国内精品视频一区| 久久久久亚洲精品成人网小说| 国产精品视频免费观看www| 美女久久久久久久久久久| 一区二区三区视频免费| 久久久久久亚洲| 丝袜亚洲欧美日韩综合| 2019av中文字幕| 日本久久久久亚洲中字幕| 久久九九全国免费精品观看| 欧美在线视频一区| 九九久久久久99精品| 国产精品久久久久久久久久尿| 伊是香蕉大人久久| 久久久精品国产| 91国内产香蕉| 国产亚洲xxx| 91九色精品视频| 国产91精品高潮白浆喷水| 欧美亚洲另类制服自拍| 欧美在线中文字幕| 亚洲欧美国产视频| 国产精品日韩在线| 欧美激情国产精品| 欧美专区中文字幕| 理论片在线不卡免费观看| 欧美丰满片xxx777| 在线电影av不卡网址| 成人黄在线观看| 久久97精品久久久久久久不卡| 狠狠色狠色综合曰曰| 91亚洲精华国产精华| 最近2019中文免费高清视频观看www99| 国产一区二区黑人欧美xxxx| 国产日韩欧美成人| 色婷婷综合成人av| 国产精品日韩在线观看| www.亚洲男人天堂| 欧美黑人巨大精品一区二区| 8x拔播拔播x8国产精品| 日韩视频在线免费观看| 欧美电影在线免费观看网站| 亚洲在线www| 狠狠躁夜夜躁人人爽天天天天97| 亚洲精品自拍偷拍| 亚洲色图日韩av| 欧美性xxxxx极品娇小| 国内精久久久久久久久久人| 色哟哟入口国产精品| 97在线观看免费| 国产精品电影观看| 欧美激情精品久久久久久| 91精品国产精品| 亚洲日本中文字幕| 91精品一区二区| 国产欧美久久久久久|