拼图小游戏的简单制作

闲暇时光,有人会用拼图、扫雷等等小游戏来打发时间,今天我就做了一下拼图小游戏,下面分享一下写js的过程和一点心得。
首先,做一个拼图需要一个完整图片,然后将其分成几块,为了方便,以下我就将我所找来的图片用ps分成了6部分。

以下是我的html部分。首先设定一个大容器,然后分别放入6张图片的碎片,每张图片高宽都为100px。

<html>
<head>
    <title>拼图</title>
    <link rel="stylesheet" href="style.css">  
</head>
<body>
    <div style="width:800px;height:600px;background:#555"></div>
    <//img src="./images/李光洙_01.jpg" id="L1" class="l">
    <//img src="./images/李光洙_02.jpg" id="L2" class="l">
    <//img src="./images/李光洙_03.jpg" id="L3" class="l">
    <//img src="./images/李光洙_04.jpg" id="L4" class="l">
    <//img src="./images/李光洙_05.jpg" id="L5" class="l">
    <//img src="./images/李光洙_06.jpg" id="L6" class="l">
//简书里面会自动把img标签转化为markdown格式,所以我在img前面加上"//",实际操作中img标签是没有斜杠的。
</body>
<script src="main.js"></script>
</html> 

css部分很简单,就是将每张图片的定位设置成绝对定位,这样才能自由地通过js来调整每张图片的位置。

.l{
position:absolute;
}

下面就是最主要的js部分,作为对象语言,这部分充分展现了它的风采。

//首先拼图游戏主要部分就是用鼠标移动来控制所选图片的移动,所以直接可以把这部分写成一个功能。我暂时将其叫做move,move的对象就是每张碎片(dom)。
var move =function(dom){
    dom.style.left=Math.random()*600+50+"px";
    dom.style.top=Math.random()*250+50+"px";
    //首先对每张碎片进行随机位置,其中50是碎片一半的高宽。这也是游戏开始前的工作。
    //然后鼠标点下的时候对对象进行下面的操作。
    dom.onmousedown=function(){
        dom.style.zIndex=100;//所选碎片移到所有碎片的最上层。
        dom.style.width=110;
        dom.style.height=150;//放大所选图片,方便观察。

   //然后在鼠标点击的情况下进行移动,执行以下代码。
        document.onmousemove=function(e){
            e.preventDefault();
            //获取鼠标位置。
            dom.style.left=e.clientX-50+"px";
            dom.style.top=e.clientY-50+"px";
            //让碎片随着鼠标移动而改变位置。
        }
    }
    //当鼠标抬起时,执行以下操作。
    dom.onmouseup=function(){
        dom.style.zIndex=0;//所选图片回到原始层数。
        dom.style.width=100;
        dom.style.height=140;//所选图片回到原始高宽。
        var x =parseInt(dom.style.left);
        var y =parseInt(dom.style.top);//获取此时碎片的位置,如果x和y不是10的倍数,4舍5入让其强制等于10的倍数,这样才能让拼图进行下去,不然要将碎片移到分毫不差的位置很难。
        if(x%10>5){
            dom.style.left=x-x%10+10+"px";
        }else{
            dom.style.left=x-x%10+"px";
        }
        if(y%10>5){
            dom.style.top=y-y%10+10+"px";
        }else{
            dom.style.top=y-y%10+"px";
        }
        document.onmousemove=function(){
        }
    }
}

//上面的功能写完,现在获取6张碎片。
var L1=document.getElementById("L1")
var L2=document.getElementById("L2")
var L3=document.getElementById("L3")
var L4=document.getElementById("L4")
var L5=document.getElementById("L5")
var L6=document.getElementById("L6")
//分别对每张图片进行move功能的设定。
move(L1)
move(L2)
move(L3)
move(L4)
move(L5)
move(L6)
//最后要判断每张碎片是否在正确位置,当每次鼠标抬起的时候进行以下的判断。
document.onmouseup=function(){
     //因为每张碎片的位置属性都是字符创,所以通过parseInt来获取具体数值。
    var x =parseInt(L1.style.left);
    var y =parseInt(L1.style.top);
    var x1 =parseInt(L2.style.left);
    var y1 =parseInt(L2.style.top);
    var x2 =parseInt(L3.style.left);
    var y2 =parseInt(L3.style.top);
    var x3 =parseInt(L4.style.left);
    var y3 =parseInt(L4.style.top);
    var x4 =parseInt(L5.style.left);
    var y4 =parseInt(L5.style.top);
    var x5 =parseInt(L6.style.left);
    var y5 =parseInt(L6.style.top);
    //r如果每张碎片的位置相差都正确的话就输出“恭喜过关!”
    if(x1-x==100&&y1-y==0&&x2-x1==100&&y2-y==0&&x3-x==0&&y3-y==140&&x4-x3==100&&y4-y3==0&&x5-x4==100&&y5-y4==0){
        alert("恭喜过关!")
    }
}

js部分也讲完了,拼图小游戏的简单制作到这也大功告成,如果你对这个感兴趣的话,不妨尝试一下用这种思路去完成这个游戏。
最后,由于水平的有限,如果有何做得不够完善的话,请大家多多包涵。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容