JS小遊戲之仙劍翻牌源碼詳解,js小遊戲翻牌源碼

來源:互聯網
上載者:User

JS小遊戲之仙劍翻牌源碼詳解,js小遊戲翻牌源碼

本文執行個體講述了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遊戲設計的學習有一定的借鑒價值。


對於仙劍奇俠傳3小遊戲

LZ前面有引發劇情的必須支線任務沒完成哦

安溪重新開始哈~

1 在民居丁對方的房子的後方,可找到雪見。和花楹對話後可換得青瓷薰爐真品及得到5400文.對話有等待時間棒,在時間棒跑完前按下滑鼠(或空格)雪見好感度+2,任時間棒跑完則+0。

2 在民居戊旁邊可找到紫萱,她就站在一個墳墓前面,對話有等待時間棒,在時間棒跑完前按下滑鼠(或空格)紫瑄好感度+0,任時間棒跑完則+5。

3 在客棧客房甲中調查茶壺會睡夢,花楹好感度+3。

4 城左上方小屋中可救活當時在鬼界遇到的那人,紫萱好感度+6。

最後,在南方的海邊找到想去海底城的龍葵,雪見、紫萱加入,就可以出發了~~

樓主加油~~~
 
仙劍三小遊戲問題

是在草海~
草海地圖左上方,偏右一點點就是“山洞初體驗”
在遊戲開始雪見不在隊伍的時候,景天去到那個山洞(有石頭擋著,需要龍葵去開)會說這個洞是空空的,等雪見複活後再來到這裡,龍葵會建議玩這個遊戲,,可以獲得4樣物品,綠襆頭、元寶靴、左利、右利,雖然看似沒用,但實際上是最強裝備的4個組件
Q:山洞初體驗(抓迷藏遊戲)在那裡玩?
A:在草海內有一個被大石(由龍葵解機關)檔著的山洞,當沒有雪見或龍葵在要進入時會顯示說山洞內空空的而不能進入。但如果雪見與龍葵同時在場的話就可以進入並玩山洞初體驗這個小遊戲,因此等後期人齊後再回來玩即可。從小遊戲中可獲得4件破財裝。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.