连连看html游戏全代码js、jquery操作

简介: 连连看html游戏全代码js、jquery操作

我会把html文件、css文件提供下载地址,文件夹路径也展示给大家。但是图片就不给大家了,毕竟博主辛辛苦苦做出来的游戏。 但是我其实是很愿意给那些为了自己锻炼而需要参考我的代码的同志们。所以,大家有需要的话

点击下载:https://download.csdn.net/download/qq_43592352/12368553

运行图片


image.png

目录路径


image.png

连连看水果方块版.html


<html>
<head>
    <title>水果连连看</title>
    <link rel="stylesheet" type="text/css" href="css/style.css"/>
    <script src="jquery-3.3.1.js" type="text/javascript"></script>
</head>
<body style="background:rgba(161, 92, 2, 0.651)">
    <div id=container>
        <div id=left-tab>
                <div id=tab_time class=tabStyle><p><span></span></p></div>
                <button id=re_button>重新开始</button>
        </div>
        <div id=right-con>
                <div id=gameBox>
                </div>
        </div>
    </div>
</body>
<script  type="text/javascript">
    var boxDomArray=new Array();
    var boxDomNum=196;
    var hasSelected=0;
    var selectedIndex=-1;
    var fruitPic=new Array('','css/img/1.png','css/img/2.png','css/img/3.png','css/img/4.png','css/img/5.png','css/img/6.png','css/img/7.png','css/img/8.png',
                'css/img/9.png','css/img/10.png','css/img/11.png','css/img/12.png','css/img/13.png');
/**********************自定义便捷函数*******************************/
function getRandom(min,max){//获取在区间[min.max]内的int数
        var s;
        s=parseInt(Math.random()*max+1);
        while(s<min)
        {
        s=parseInt(Math.random()*max+1);
        }
        return s;
    }
var initDataFlag=new Array();
for(var i=0;i<boxDomNum;i++)
    initDataFlag[i]=-1;
function isNum(num){
    var flag=0;
    for(var i=0;i<boxDomNum;i++)
        if(num==initDataFlag[i]) flag=1;
    return flag;
}
/**************************系统设置*****************************************/
    /***封装游戏容器居中*****/
    function onResizeContainer(){
        var screenHeight=parseInt($(window).height()); //浏览器时下窗口可视区域高度
        var screenWidth=parseInt($(window).width()); //浏览器时下窗口可视区域高度
        var containerHeigth=parseInt($("#container").height());//container容器高度
        var containerWidth=parseInt($("#container").width());//container容器宽度
        $("#container").css({
        'marginLeft':(screenWidth-containerWidth)/2+'px',
        'marginTop':(screenHeight-containerHeigth)/2+'px',
        })
    }
    onResizeContainer();
    //时间
    var minute=0,second=0;
    function timedCount()
    {
        if(second==60) {second=0;minute++;}
        second++;
        $("span")[0].innerHTML="时间 "+(minute>9?minute:"0"+minute)+":"+(second>9?second:"0"+second);
        setTimeout("timedCount()",1000); 
    }
    timedCount();
/******************************游戏开始****************************/
    //初始化196个方格容器、html的文本
    function initialHtml(i){
        var div=$('<div class=box index='+i+' exist=1></div>');
        $("#gameBox").append(div);
    }
    for(var i=0;i<196;i++) initialHtml(i);
    //初始化游戏图片、数据以及一些后台数据
    function initialData(){
        for(var i=0;i<boxDomNum;i++)//把196个格子存为jq对象数组,方便访问,注意boxDomArray是全局变量
            boxDomArray[i]=$(".box").eq(i);
        for(var i=0;i<98;i++){
            var nowData=getRandom(1,13);
            var color=['','yellow','green','grey','wheat','sandybrown','red','pink','purple','teal','violet'];
            var data_l=getRandom(0,196)-1,data_r=getRandom(0,196)-1;
            while(isNum(data_l)) data_l=getRandom(0,196)-1;
            while(isNum(data_r)||data_l==data_r) data_r=getRandom(0,196)-1;
            initDataFlag[i*2]=data_l;initDataFlag[i*2+1]=data_r;
            boxDomArray[data_l].attr('value',nowData);boxDomArray[data_r].attr('value',nowData);
            boxDomArray[data_l].css('background','url('+fruitPic[nowData]+')');
            boxDomArray[data_r].css('background','url('+fruitPic[nowData]+')');
        }
    }
    initialData();
    $(".box").on("click",function(e){
        if(hasSelected==0){
            if($(e.target).attr("exist")!=0){
                $(e.target).css('border','1px solid black');
                selectedIndex=$(e.target).attr('index');
                hasSelected=1;
            }
        }
        else if(hasSelected==1){
            //判定操作
            if($(e.target).attr("index")!=selectedIndex){
            var nowIndex=$(e.target).attr('index');
            boxDomArray[selectedIndex].css('border','none');
            if(check_1(selectedIndex,nowIndex))
            {
                boxDomArray[selectedIndex].attr("exist",0);
                boxDomArray[nowIndex].attr("exist",0);
                boxDomArray[selectedIndex].css("background",'none');
                boxDomArray[nowIndex].css("background",'none');
            }
            else if(check_2(selectedIndex,nowIndex))
            {
                boxDomArray[selectedIndex].attr("exist",0);
                boxDomArray[nowIndex].attr("exist",0);
                boxDomArray[selectedIndex].css("background",'none');
                boxDomArray[nowIndex].css("background",'none');
            }
            else if(check_3(selectedIndex,nowIndex))
            {
                boxDomArray[selectedIndex].attr("exist",0);
                boxDomArray[nowIndex].attr("exist",0);
                boxDomArray[selectedIndex].css("background",'none');
                boxDomArray[nowIndex].css("background",'none');
            }
            //初始化状态
            hasSelected=0;
            selectedIndex=-1;
            }
        }
    })
    $("#re_button").on('click',function(){
        hasSelected=0;
        selectedIndex=-1;
        for(var i=0;i<boxDomNum;i++)
            initDataFlag[i]=-1;
        initialData();
    })
    function check(index1,index2){//检测直线连通、无拐点
        console.log("check!");
        var x1=parseInt(index1/14);
        var y1=parseInt(index1%14);
        var x2=parseInt(index2/14);
        var y2=parseInt(index2%14);
        index1=parseInt(index1);index2=parseInt(index2);
        if(x1==x2)
        {
            if(Math.abs(y1-y2)!=1)
            {
                for(var i=1;i<=Math.abs(y1-y2)-1;i++)
                {
                    if(y1>y2) index1=index2;
                    if(boxDomArray[index1+i].attr("exist")==1) return 0;
                }
            }
            return 1;
        }
        else if(y1==y2)
        {
            if(Math.abs(x1-x2)!=1)
            {
                for(var i=1;i<=Math.abs(x1-x2)-1;i++)
                {
                    if(x1>x2) index1=index2; 
                    if(boxDomArray[index1+i*14].attr("exist")==1) return 0;
                }
            }
            return 1;
        }
        return 0;
    }
    function check_1(index1,index2){//检测连通类型1
        console.log("CHECK_1!");
        if(boxDomArray[index1].attr("value")!=boxDomArray[index2].attr("value")) return 0;
        if(check(index1,index2)) return 1;
        return 0;
    }
    function check_2(index1,index2){//检测连通类型2
        console.log("CHECK_2!");
        var x1=parseInt(index1/14);
        var y1=parseInt(index1%14);
        var x2=parseInt(index2/14);
        var y2=parseInt(index2%14);
        index1=parseInt(index1);index2=parseInt(index2);
        //两个交点,坐标分别为:(x1,y2)、(x2,y1)
        var index3=x1*14+y2;
        var index4=x2*14+y1;
        if(boxDomArray[index1].attr("value")!=boxDomArray[index2].attr("value")) return 0;//颜色相同才可以消除
        if(boxDomArray[index3].attr("exist")!=1)
            if(check(index3,index1)&&check(index3,index2)) return 1;
        if(boxDomArray[index4].attr("exist")!=1)
            if(check(index4,index1)&&check(index4,index2)) return 1;
        return 0;
    }
    function check_3(index1,index2){//检测连通类型3
        console.log("check3");
        var x1=parseInt(index1/14);
        var y1=parseInt(index1%14);
        var x2=parseInt(index2/14);
        var y2=parseInt(index2%14);
        index1=parseInt(index1);
        index2=parseInt(index2);
        if(boxDomArray[index1].attr("value")!=boxDomArray[index2].attr("value")) return 0;//颜色相同才可以消除
        for(var i=0;i<14;i++)//对行遍历
        {
            if(i==y1) continue;
            var index3=x1*14+i;
            if(boxDomArray[index3].attr("exist")==1||check(index1,index3)==0) continue;
            else{
                var x3=parseInt(index3/14);
                var y3=parseInt(index3%14);
                var index4=x3*14+y2;
                var index5=x2*14+y3;
                if(boxDomArray[index4].attr("exist")!=1)
                    if(check(index4,index3)&&check(index4,index2)) return 1;
                if(boxDomArray[index5].attr("exist")!=1)
                    if(check(index5,index3)&&check(index5,index2)) return 1;
            }
        }
        for(var i=0;i<14;i++)//对列遍历
        {
            if(i==x1) continue;
            var index3=i*14+y1;
            if(boxDomArray[index3].attr("exist")==1||check(index1,index3)==0) continue;
            else{
                var x3=parseInt(index3/14);
                var y3=parseInt(index3%14);
                var index4=x3*14+y2;
                var index5=x2*14+y3;
                if(boxDomArray[index4].attr("exist")!=1)
                    if(check(index4,index3)&&check(index4,index2)) return 1;
                if(boxDomArray[index5].attr("exist")!=1)
                    if(check(index5,index3)&&check(index5,index2)) return 1;
            }
        }
        return 0;
    }
</script>
</html>

连连看算法


博主这里采用了相关的算法,这里进行解释。


首先,我们知道,在连连看游戏中,两个相同图片有三种方式相连:

1,直线相连,即有0个拐点相连

2,有1个拐点相连

3,有2个拐点相连


假设现在有点index1(x1,y1),index2(x2,y2)。

image.png

image.png

image.png

进行下一个游戏的开发!

指尖大冒险、跳一跳

是男人就下一百层

注意事项

【1】 原创博客,转载本篇请与我联系,尊重版权。

【2】 关于阅读本篇博客的所有问题、代码源码、图片素材、编程技巧、编程经历都可联系我,与我交流讨论。

【3】 本人部分时间承接各种毕业设计、网站编写、微信小程序编写、数据库作业编写。需要请加QQ:1460787433,详聊。

相关文章
|
15天前
jQuery+CSS3实现404背景游戏动画源码
jQuery+CSS3实现404背景游戏动画源码
47 22
|
14天前
|
JavaScript
jQuery仿Key社游戏风格右键菜单特效源码
jQuery二次元风格右键菜单插件HTML源码,该插件将原生的浏览器右键菜单转换为一个动画的圆形菜单,并且带音效,效果非常的炫酷。 本段代码兼容目前最新的各类主流浏览器,是一款非常优秀的特效源码。
42 18
|
2天前
|
JavaScript
jQuery实现的卡片式翻转时钟HTML源码
jQuery实现的卡片式翻转时钟HTML源码
7 0
jQuery实现的卡片式翻转时钟HTML源码
|
13天前
jQuery+Slick插件实现游戏人物轮播展示切换源码
jQuery+Slick插件实现游戏人物轮播展示切换源码
33 14
|
11天前
|
JavaScript
jQuery+HTML5实现的微信大转盘抽奖源码
这是一款基于jQuery+HTML5实现的微信大转盘抽奖效果源码,是一款可配置奖品抽奖的jQuery大转盘抽奖代码,可实现点击按钮转轮旋转实现抽奖功能,效果逼真自然,代码里面有详细的注释,可以修改文字或者二次开发都可以
30 11
|
14天前
|
JavaScript
jQuery仿方块人物头像消除游戏源码
jQuery人物头像迷阵消除游戏代码是一款类似《宝石迷阵》类的方块消除类型的小游戏源码。
36 13
|
2月前
|
JavaScript 前端开发
js+jquery实现贪吃蛇经典小游戏
本项目采用HTML、CSS、JavaScript和jQuery技术,无需游戏框架支持。通过下载项目文件至本地,双击index.html即可启动贪吃蛇游戏。游戏界面简洁,支持方向键控制蛇移动,空格键实现游戏暂停与恢复功能。
76 14
|
2月前
|
JavaScript 前端开发 容器
jQuery多功能滑块插件r-slider.js
r-slider.js是一款jQuery多功能滑块插件。使用该插件,可以制作出滑块、开关按钮、进度条、向导步骤等多种效果。
54 5
|
2月前
|
JavaScript
基于jQuery实现文字点击验证代码
jQuery文字点击验证代码基于jquery-3.4.1.min.js制作,按顺序,依次点击文字通过验证。
37 5
|
2月前
|
JavaScript
jQuery实现的星级打分带评价及颜色区分代码
jQuery实现的星级打分带评价及颜色区分效果代码是一款支持自定义评论颜色的星级评价打分,其中红色为一星级,差评、绿色位五星级、满分好评,本段代码适应于所有网页使用,有需要的朋友们就来下载使用吧。
36 2