游戏介绍:

这是一个翻牌配对游戏,共十关。

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="data:images/card' + leveldata[i]['cardno'] + '.jpg"></div>';            cardhtml += '<div class="list flip"><img src="data: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);

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

JS小游戏-仙剑翻牌相关推荐

  1. js小游戏 (飞行的小鸟--canvas)

    js小游戏 (飞行的小鸟) 这个里面用到的主要是 canvas 绘图 <!DOCTYPE html> <html><head><meta charset=&q ...

  2. 是男人就要坚持30秒:原生JS小游戏

    在继之前完成的数个JavaScript demo后,我发现我还没有写过JS小游戏,这次呢,我就来分享一个,非常经典的"是男人就要坚持30s"的小游戏.当然我肯定 is a man, ...

  3. 100行JS代码实现❤坦克大战js小游戏源码 HTML5坦克大战游戏代码(HTML+CSS+JavaScript )

    坦克大战js小游戏源码 HTML5坦克大战游戏代码(HTML+CSS+JavaScript ) HTML5坦克大战网页小游戏,完美还原小霸王学习机效果,以坦克战斗及保卫基地为主题,属于策略型类游戏. ...

  4. js小游戏之经典炸弹人(1)--地图实现

    前段时间,写了一款js小游戏--经典炸弹人,因为这是第一次写游戏,对很多东西都不是很熟悉.于是,疯狂的上网找资料,结果发现,关于经典炸弹人的js资料少的可怜.所以,很是头疼了一段时间.在写完经典炸弹人 ...

  5. js小游戏动物连连看代码

    下载地址 js小游戏动物连连看代码,有多种语言切换,默认是中文.不用部署本地解压即可预览. dd:

  6. 糖果粉碎js小游戏代码

    下载地址 糖果粉碎js小游戏代码,糖果消消乐小游戏源码下载. dd:

  7. 【JavaScript】(一)解读一个js小游戏

    [前言] 离公司近的好处,就在于每天都能利用自己的下班时间,更好地查漏补缺,充实技能. 最近小编做的项目需要写js偏多,而我不擅长写前端js,利用工作之余,开始学习,下面通过一个成型的js小游戏,开始 ...

  8. js小游戏之经典炸弹人(2)--玩家的移动

    在js小游戏之经典炸弹人(1)--地图实现这篇文章中,我们已经实现了地图的绘制,接下来就来谈谈玩家是如何移动的呢? 实现玩家的移动主要依靠的是键盘事件onkeypress,我们要通过操作键盘控制玩家的 ...

  9. JS小游戏 - 盖房子

    写这个JS,源于CSDN上看到的一道思考题,挺有趣的一个算法,于是根据规则写了这个JS. < html > < head >      < title > JS小游 ...

最新文章

  1. 单片机对于大学生难学吗?
  2. 内网访问不到内网网站问题和不用端口号访问网站问题
  3. error C4668: 没有将“_WIN32_WINNT_WIN10_TH2”定义为预处理器宏,用“0”替换“#if/#elif”
  4. react方法返回html_React全家桶之React基础(推荐新手必看)
  5. vtk 转换视角_vtk使用基础[1]
  6. 华为机试HJ13:句子逆序
  7. windows c语言 socket通信
  8. Python-文件的管理
  9. 阿里云播放器SDK 不断读取播放事件【内部用】
  10. Qt界面程序中嵌入其他可执行exe程序
  11. 隐藏win11任务栏时间,开启专注模式
  12. Android如何修改手机文件名称
  13. 工会分销系统部署搭建维护定制工会分销高可用架构
  14. 使用cookie模拟登陆豆瓣影评
  15. python创建一个列表、用于存储同学姓名_python学习日记04,Python
  16. LeeCode 108 递归
  17. linux的帮助,帮助信息_Linux公社 - Linux系统门户网站
  18. factorytalk找不到OPC服务器,simatic net 做远程opc服务器问题
  19. 一寸Timing一寸金,寸金能买寸光阴——CCD
  20. 英特尔最新Xeon D-2100系列芯片,高能低耗瞄准边缘计算

热门文章

  1. 一个程序员对浏览器的使用
  2. C# Chrome浏览器网页自动化操作
  3. 异常exception与error-code
  4. JQuery插件开发研究
  5. SOC的多核启动流程详解
  6. 2021年全国职业技能大赛-软件测试赛项国赛总结-长春职业技术学院
  7. 工程项目管理与国际惯例接轨的几点思考(转)
  8. SV随机化Randomization
  9. Azure AI 水果分类模型
  10. [源码和文档分享]基于Android实现的OA办公自动化系统