国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

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

2019-11-20 14:06:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

一、游戲介紹:

這是一個(gè)翻牌配對(duì)游戲,共十關(guān)。

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

游戲圖片:

完整實(shí)例代碼點(diǎn)擊此處本站下載

二、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]; // 每關(guān)的游戲時(shí)間  var turntime = 8;                 // 觀看牌時(shí)間  var level = 1;                  // 當(dāng)前關(guān)卡  var carddata = [];                // 記錄牌的數(shù)據(jù)  var leveldata = [];                // 當(dāng)前關(guān)卡牌數(shù)據(jù)  var is_lock = 0;                 // 是否鎖定  var is_over = 0;                 // 游戲結(jié)束  var first = -1;                  // 第一次翻開(kāi)的卡  var matchnum = 0;                 // 配對(duì)成功次數(shù)  // 初始化  init = function(){    tips('show');    $('startgame').onclick = function(){      tips('hide');      start();    }  }  // 開(kāi)始游戲  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)  }  // 隨機(jī)抽取N張牌  create = function(n){    carddata = [];    leveldata = [];        // 創(chuàng)建所有牌    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});    }    // 生成隨機(jī)順序游戲牌    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);  }  // 全部翻轉(zhuǎn)  turnall = function(){    for(var i=0; i<leveldata.length; i++){      turn_animate(i);    }  }  // 翻轉(zhuǎn)動(dòng)畫  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);  }  // 設(shè)置點(diǎn)擊事件  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);        }      }    }  }  // 計(jì)時(shí)開(kāi)始  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);  }  // 游戲訊息動(dòng)畫  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){ // 未翻開(kāi)      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']){ // 配對(duì)成功      matchnum ++;      if(matchnum==cardnum){        var et = setTimeout(function(){          message('success', levelup);        }, 225);      }      first = -1;      is_lock = 0;    }else{ // 配對(duì)失敗,將翻開(kāi)的牌翻轉(zhuǎn)      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);    }  }  // 過(guò)關(guān)  levelup = function(){    if(level<gametime.length-1){      level ++;      setHtml('level', level);      start();    }else{      clear();    }  }  // 全部通關(guān)  clear = function(){    level = 1;    disp('levelplane','hide');    disp('process', 'hide');    setHtml('gameplane','');    message('clear',init);  }  // 音樂(lè)播放  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);  }  // 獲取牌總數(shù)  get_total = function(){    return total;  }  // 重置參數(shù)  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);

相信本文所述對(duì)大家javascript游戲設(shè)計(jì)的學(xué)習(xí)有一定的借鑒價(jià)值。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丹巴县| 商城县| 开封市| 绍兴县| 湟源县| 六盘水市| 武邑县| 蚌埠市| 安徽省| 芒康县| 忻城县| 潜山县| 庄浪县| 抚州市| 绥中县| 新乡县| 花莲市| 苍溪县| 巴彦淖尔市| 汉源县| 平乡县| 赣榆县| 大英县| 桂东县| 镇远县| 班戈县| 玛曲县| 宁陕县| 永平县| 绥江县| 泰来县| 太原市| 南安市| 乳源| 左贡县| 图木舒克市| 潮州市| 渑池县| 永顺县| 岳阳县| 遂平县|