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

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 16:09:12
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JS小游戲之仙劍翻牌源碼,是一款比較經典的卡牌類游戲,對于javascript游戲設計有不錯的借鑒價值,需要的朋友可以參考下

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

一、游戲介紹:

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

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

游戲圖片:

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

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

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

二、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>';cardhtml += '<div>';cardhtml += '<div><img src="images/card' + leveldata[i]['cardno'] + '.jpg"></div>';cardhtml += '<div><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游戲設計的學習有一定的借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 嘉义县| 施甸县| 禹州市| 夏河县| 承德市| 虹口区| 鄢陵县| 伊宁县| 黎川县| 筠连县| 中西区| 延安市| 玉屏| 庐江县| 东港市| 东光县| 象山县| 盱眙县| 河曲县| 澄江县| 萍乡市| 桑植县| 西乌| 龙江县| 胶南市| 宣化县| 古丈县| 商丘市| 长乐市| 台北市| 滨州市| 漾濞| 黄大仙区| 神池县| 喀什市| 武宣县| 邢台市| 泌阳县| 张掖市| 九龙城区| 长岛县|