上一篇我们说了网页的基本布局。接下来将为大家带来具体的实现方法。

拼图通表格来实现,做一个方形的表格,改变其大小使之如图所示。

试想一下如果我们将一张图片剪成6张分别放入对应位置,然后再把它打乱,这样就可以进行拼图了。

可是,将图片放入和打乱图片倒是不难,可想要实现移动图片,这就有一点麻烦了。

不知道别人使用的什么方法,博主接下来会讲一种非常简单的办法去实现移动图片。

(ps:博主正在尝试通过HTML5的新特性去实现图片的拖拽移动,貌似不太理想。。。)

目前博主只能通过给表格留一个空白处作为移动区,如图。

当你点击一张图片之后他会检测图片的上下左右哪个方向存在空白区,

接着将点击的图片与空白区想对换,

简单来说就是把点击区域的背景给空白区,

再删除点击区域的图片,这样看起来就像是移动了。

道理都懂,接下来就让我们回归实际,看一看代码应该怎么写。

function movepic(id)//移动图片函数,接受点击图片(需要移动图片)的id值
{
//我们通过一个函数iskong(id)来判断该位置是否存在图片
  //picnum为我们申明的全局变量用于存储拼图的大小(n*n)
  if(iskong(id-picnum))//点击图像上方是否为空
{
//alert("moveup");
move(id,id-picnum);//move()为执行的移动函数需要传两个值,一个移动元素id,另一个为目标id
}
else if(iskong(id+picnum))//点击图像下方是否为空
{
//alert("movedown");
move(id,id+picnum);
}
else if(iskong(id-1))//点击图像左方是否为空
{
//alert("moveleft");
move(id,id-1);
}
else if(iskong(id+1))//点击图像右方是否为空
{
//alert("moveright");
move(id,id+1);
}
if(isstart)//isstart判断是否已经开始游戏
{
isWin();//每次移动后判断是否完成拼图
}
}

这里是移动图片所需要调用的函数

function iskong(id)//判断改标签是否为空
{ var bg=$('#'+id).css("background-image");
if(bg=="none"){
return true;
}else
{
return false;
}
}
 function move(id,target)//移动
 {
   //var temp=$('#'+id).css("background-image");
   //temp=$('#'+id).css("background-image","");
   $('#'+target).css("background-size","cover");
   $('#'+target).css("background-image",$('#'+id).css("background-image"));//把需要移动的表格td的背景给目标td(当然也可以用img标签)
   $('#'+id).css("background-image","none");
 } function isWin()//判断是否胜利
{
k=0;//声明一个变量用作为图片索引
for(var i=1;i<picnum-1;i++)
{
for(var id=1;id<picnum*picnum;id++)
{
if(id>picnum*i+1&&id<picnum*(i+1))
{
var temp=$('#'+id).css("background-image");
if(temp==picData[k])//picData[k]为初始化拼图时所存储的每个图片顺序等信息
{
k++;
}
}
}
}
if(k==(picnum-2)*(picnum-2))//如果k等于图片总数表示图片和初始化时完全一致,这个时候就会执行赢的函数
{
clearTimeout(timer);//这里的timer为我们的计时器
windo();//胜利时执行该函数
}
}
function windo()//游戏胜利后执行
{
$('.wingame').css("display","block");//显示胜利的窗口
$('.pic2').click(function(){
$('.wingame').css("display","none");
startgame();
});
$('#timer2').text($('#timer').text());//显示所用时间
}

哈哈哈,这次就写这么多吧,博主我要看电影去了。(我买两千万德国赢,那部)

基本思路就是这样。

等我改天整理一下发完整的代码。

目前没有整理有点乱。。。

ps:博主小白 勿喷 勿喷 勿喷

欢迎指导交流,接受批评。

回见。

HTML+Javascript制作拼图小游戏详解(二)的更多相关文章

  1. HTML+Javascript制作拼图小游戏详解(终)

    上次我们已经讲解了制作的原理,并且展示了主要代码. 这次我将完整的代码给大家,仅供参考. HTML部分如下: <!DOCTYPE html> <html lang="en& ...

  2. HTML+Javascript制作拼图小游戏详解(一)

    本文章将分享一个来自前端菜鸟突发奇想的拼图游戏制作方法以及实现过程. 话不多说,先上图. 首先我们需要写好网页的基本布局(此处涉及简单的HTML和CSS知识). 网页一共分为三个区域,左侧时间显示区, ...

  3. JavaScript版拼图小游戏

    慕课网上准备开个新的jQuery教程,花了3天空闲时间写了一个Javascript版的拼图小游戏,作为新教程配套的分析案例 拼图游戏网上有不少的实现案例了,但是此源码是我自己的实现,所以不做太多的比较 ...

  4. java贪吃蛇小游戏详解

    https://blog.csdn.net/u011622021/article/details/81162083

  5. 壁球小游戏详解(附有源码.cpp)

    1.在python中安装pygame 2.将下列源码复制过去,运行. #引用 import pygame, sys #初始化 pygame.init() size = width, height = ...

  6. 教你用Python自制拼图小游戏,一起来制作吧

    摘要: 本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyt ...

  7. javascript中=、==、===区别详解

    javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...

  8. 使用NGUI实现拖拽功能(拼图小游戏)

    上一次用UGUI实现了拼图小游戏,这次,我们来用NGUI来实现 实现原理 NGUI中提供了拖拽的基类UIDragDropItem,所以我们要做的就是在要拖拽的图片上加一个继承于该类的脚本,并实现其中的 ...

  9. jQuery拼图小游戏

    jQuery拼图小游戏 最后样式 核心代码部分 <script type="text/javascript" > $(function () { $("td& ...

随机推荐

  1. 01 Linux 网络配置和克隆

    Linux 网络配置和克隆 一.配置 Linux 网络 当在 VMware 中安装完 Linux 以后需要通过一些网络配置才能使 Linux 能够连能网络: 首先如果是在虚拟机上安装的 Linux 必 ...

  2. struts spring 整合

    错误 :Unable to load jar:file:WEB-INF/lib/struts2-spring-plugin-2.3.15.1.jar!/struts-default.xml 原因: 我 ...

  3. div添加滚动条常见属性

    由于页面上的表里的末一列的内容太多,显示的内容不美观了,就想在这一列上加滚动条,在网上搜了一下,用div可以实现,感觉还不错,下面的是在网上查到的.  想在div里添加滚动条设置一下style就ok了 ...

  4. 20155335俞昆《java程序设计》第七周总结

    学号  2016-2017-2  <Java程序设计>第X周学习总结 ##  教材学习内容总结 Lambda  的语法概览 String[]  names={“Justin”,”cater ...

  5. JavaScript 静态方法和实例方法

    总结: 直接定义在构造函数上的方法和属性是静态的,  定义在构造函数的原型和实例上的方法和属性是非静态的 静态方法: function ClassA(){ //定义构造函数 }; ClassA.fun ...

  6. Java转换Json日期/Date(1487053489965+0800)/格式以及js时间格式 Tue Feb 14 2017 14:06:32 GMT+0800

    /Date(1487053489965+0800)/用Java怎么转换成yyyy-MM-dd的格式 Tue Feb 14 2017 14:06:32 GMT+0800用Java怎么转换成yyyy-MM ...

  7. I2C笔记

      SCL:上升沿将数据输入到每个EEPROM器件中:下降沿驱动EEPROM器件输出数据.(边沿触发) SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成"线与"关系. ...

  8. Winfrom 嵌入word、excel实现源码

    效果图: winform中嵌入word的方法有多种:调用API,使用webBroser或使用DSOFRAMER控件: API过于繁琐: webbroser读取小文件还行,大文件就太痛苦了: 所以还是选 ...

  9. #ing#我的日常知识管理160421

    1. 知识来源:浏览是无时无刻的,知识爆炸的时代,信息在互联网上不再难以获得,却变得难以选择,取得有效的信息成了如今获取知识的重要环节…… 前端关注—— alloyteam.github.io  腾讯 ...

  10. VMware Workstation 12 OpenGL ES版本支持情况与设置

    概述 开始学习Opengl时,发现VMware Workstation虚拟机无法运行Opengl ES2.0的程序.后来,经过查找最终得知,是因为VMware Workstation11及之前的版本对 ...