HTML+CSS+JS实现 ❤️美女拼图游戏❤️

🍅 作者主页:Java李杨勇 

🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌  简历模板、学习资料、面试题库、技术互助【关注我,都给你】

🍅 欢迎点赞 👍 收藏 ⭐留言 📝   

效果演示: 文末获取源码

代码目录:

主要代码实现:

CSS样式:

html {padding: 0px;margin: 0px;background: #eee;}#gameDiv {width: 460px;height: 460px;margin: 20px auto;background: #F9F9F9;padding: 1px 1px;position: relative;}#maskBox {opacity: 0.5;display: block;}

JavaScript代码 :

<script>/*** Created by jsonpeter on 2015/8/13.*/(function($g) {//游戏配置setting = {gameConfig: {url: "345.jpg",id: "gameDiv",//生成规格横4 纵4size: "4*4",//每个元素的间隔margin: 1,//拖动时候块透明度opacity: 0.8},setElement: {type: "div",id: "",float: "",display: "",margin: "",background: "",width: "",height: "",left: "",top: "",position: "", //absoluteopacity: 0.4,animate: 0.8}};//元素生成参数var _sg = setting.gameConfig;var _st = setting.setElement;var gameInfo = function() {};gameInfo.prototype = {init: function() {this.creatObj();this.eventHand();},sortObj: {rightlist: [], //正确的排序romdlist: [] //打乱后的排序},creatObj: function() {_sg.boxObj = document.getElementById(_sg.id) || "";//尺寸自动获取var _size = _sg.size.split('*') || [0, 0];//计算单个div的高宽var w = Math.floor(_sg.boxObj.offsetWidth / _size[0]);var h = Math.floor(_sg.boxObj.offsetHeight / _size[1]);//图片生成divvar _size = _sg.size.split('*') || [0, 0];var wt = _size[0],hg = _size[1];//创建一个素组并排序打散var sortList = [];for (var a = 0; a < wt * hg; a++) {sortList.push(a);}sortList.sort(randomsort);this.sortObj.rightlist = sortList;//---------var _i = 0,sid = 0;for (; _i < wt; _i++) {var _s = 0;for (; _s < hg; _s++) {//赋值随机打散后的id_st.id = sortList[sid++];_st.display = "block";_st.float = "left";//_st.top=w*_i+"px";//_st.left=h*_s+"px";_st.margin = _sg.margin + "px";_st.background = "url('" + _sg.url + "') " + (-w * _s) + "px " + (-h * _i) + "px";_st.width = w - _sg.margin * (wt / 2) + "px";_st.height = h - _sg.margin * (hg / 2) + "px";this.sortObj.romdlist.push(this.addElement());// console.log( (_w*_i)+"px "+(_h*_s)+"px ");}}this.boxSort();},boxSort: function() {var _arrySort = this.sortObj.romdlist;var _tmp = [],_n = 0;eachBox(_arrySort, function(d) {_tmp.push(parseInt(_arrySort[d].id));});//排序新数组_tmp.sort(function(a, b) {return a > b ? 1 : -1;});//排序后的带dom的素组for (; _n < _tmp.length; _n++) {var _s = 0;for (; _s < _arrySort.length; _s++) {if (_arrySort[_s].id == _tmp[_n]) {_sg.boxObj.appendChild(_arrySort[_s]);}}}return _tmp;},//添加元素addElement: function() {var _obj = document.createElement(_st.type);_obj.id = _st.id;_obj.style.display = _st.display;_obj.style.float = _st.float;_obj.style.margin = _st.margin;_obj.style.background = _st.background;_obj.style.width = _st.width;_obj.style.position = _st.position;_obj.style.top = _st.top;_obj.style.left = _st.left;_obj.style.height = _st.height;return _obj;},mouseEvent: {mousedown: function(ev) {ev = ev || ev.event;ev.preventDefault();//元素类型div_st.type = "span";_st.id = "maskBox";_st.width = this.offsetWidth + "px";_st.height = this.offsetHeight + "px";_st.position = "absolute";_st.background = "";//_st.opacity=_sg.opacity;_st.left = this.offsetLeft + "px";_st.top = this.offsetTop + "px";},mouseup: function(ev) {ev = ev || ev.event;//var _e=t.setElement;ev.preventDefault();var obj = document.getElementById(this.id);if (obj) {_sg.boxObj.removeChild(obj);}},mousemove: function(ev) {ev = ev || ev.event;this.style.left = getX_Y.call(this, "x", ev) + "px";this.style.top = getX_Y.call(this, "y", ev) + "px";}},//正确检查 对比两个数组gameCheck: function() {var s = 0,bols = true;var _arry = this.sortObj.rightlist;var _arryRom = this.sortObj.romdlist;console.log(_arry);console.log(_arryRom);for (; s < _arry.length; s++) {if (_arry[s] != _arryRom[s].id) {bols = false;break;}}return bols;},eventHand: function() {var _obj = _sg.boxObj.getElementsByTagName("div");var i = 0,olen = _obj.length;var that = this;var m = that.mouseEvent;var box_index = 0;for (; i < olen;) {(function(n) {//按下鼠标_obj[n].addEventListener("mousedown", function(e) {var _this = this;m.mousedown.call(_this, e);_st.background = _this.style.background;_this.style.background = "#FFF";//生成可移动的divvar _newObj = that.addElement();_sg.boxObj.appendChild(_newObj);_newObj.style.opacity = _sg.opacity;//移动位置_newObj.onmousemove = function(e) {m.mousemove.call(_newObj, e);// console.log("____"+this.offsetLeft);var _i = 0;for (; _i < olen; _i++) {var _w = parseInt(_obj[_i].style.width) / 1.5;var _h = parseInt(_obj[_i].style.height) / 1.5;var _left = _obj[_i].offsetLeft;var _top = _obj[_i].offsetTop;var _boxX = parseInt(this.style.left);var _boxY = parseInt(this.style.top);//还原样式eachBox(_obj, function(d) {_obj[d].style.opacity = 1.0;});//计算拖动到的位置if (_left + _w > _boxX || _left > _boxX + _w) {if (_top + _h > _boxY || _top > _boxY + _h) {box_index = _i;_obj[_i].style.opacity = _st.opacity;break;}}}};//鼠标松开_newObj.addEventListener("mouseup", function(e) {//删除移动事件_newObj.onmousemove = function(e) {};//获取当前停留元素的坐标var tagObj = {id1: _obj[box_index].id,id2: _this.id,bg1: _obj[box_index].style.background,bg2: this.style.background};//交换位置_this.id = tagObj.id1;_this.style.background = tagObj.bg1;_obj[box_index].id = tagObj.id2;_obj[box_index].style.background = tagObj.bg2;//获取拖动后的排序that.sortObj.romdlist = _obj;//还原样式eachBox(_obj, function(d) {_obj[d].style.opacity = 1.0;});//删除浮动divm.mouseup.call(_newObj, e);//计算是否完成拼图if (that.gameCheck()) {alert("O(∩_∩)O哈哈~");}}, false);}, false);})(i++);}}}//随机数function randomsort(a, b) {return Math.random() > .5 ? -1 : 1; //用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1}function eachBox(obj, fn) {var _s = 0;for (; _s < obj.length; _s++) {fn(_s);}}function getX_Y(s, ev) {var _b = (ev.clientX - this.parentNode.offsetLeft) - (this.offsetWidth / 2);if (s === "y") {_b = (ev.clientY - this.parentNode.offsetTop) - (this.offsetHeight / 2);}return _b;}$g.gameInfo = new gameInfo();})(window)</script>

上面的图片可以自己替换成喜欢

源码获取

大家可以点赞、收藏、关注、评论我啦 、查看博主主页或下方微信公众号获取更多~!

打卡 文章 更新 50  /  100天

精彩推荐更新中:

HTML5大作业实战案例《100套》

Java毕设项目精品实战案例《100套》 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab绘制三元位置函数,matlab – 在坐标(x,y)上用颜色z绘制(x,y,z)三元组

假设您不关心实际线条的颜色,而是标记.将绘图与散射结合使用.想象一下以下示例数据&#xff1a;t 0:pi/20:2*pi;x sin(t);y cos(t);z t;plot3(x,y,z);绘制在2D平面上&#xff1a;plot(x,y); hold onscatter(x,y,300,z); hold off结果是&#xff1a;从您的评论&#xff1a;如…

HTML+CSS+JS实现 ❤️圆圈倒计时间❤️

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

php语法高亮编辑器,最新PHPCMS V9编辑器代码高亮显示亲测可用(提前格式化)

最近PHPCMS V9更新挺频繁的&#xff0c;是好事&#xff0c;让我们更完美的用它的功能&#xff0c;是坏事&#xff0c;以前的教程都不能用了。譬如这篇在PHPCMS V9文章中实现代码高亮显示的功能&#xff0c;之前的教程已经不能用了&#xff0c;今天站长莪叆啰有空写了个最新版的…

php通过标识加锁,PHP通过加锁实现并发情况下抢码功能

基于php语言使用加锁实现并发情况下抢码功能&#xff0c;特定时间段开放抢码并不允许开放的码重复&#xff1a;需求&#xff1a;抢码功能要求&#xff1a;1、特定时间段才开放抢码&#xff1b;2、每个时间段放开的码是有限的&#xff1b;3、每个码不允许重复&#xff1b;实现&a…

HTML+CSS+JS实现 ❤️圆形倒数秒计时器❤️

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

php相隔几分钟变换随机数,PHP怎么固定随机出号几分钟时间再变?

/* 生成随机数 */function randKeys($len5){$str0123456789;$rand;for($x0;$x上面代码是用来网页显示5个数字&#xff0c;只要网页一刷新数字就变了&#xff0c;能不能固定8分钟内刷新网页数字不变&#xff1f;请问代码怎么写&#xff1f;回复讨论(解决方案)生成后存入session&…

HTML+CSS+JS实现 ❤️从亮到暗图片滤镜特效❤️

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

mysql树节点路径,关于mysql:从使用物化路径编码树的表中选择,按深度优先排序(无递归/ ltree)...

我在关系数据库中有一个表&#xff0c;其中我使用称为物化路径(也称为Lineage列)的技术对树进行编码。 也就是说&#xff0c;对于我树中的每个节点&#xff0c;我在表中有一行&#xff0c;并且对于每一行&#xff0c;我有一个名为ancestry的字符串列&#xff0c;其中我存储从根…

HTML+CSS+JS实现 ❤️Three碎片化图片切换❤️

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

w8系统搭建php网站,360W8系统下如何配置PHP网站运行环境

为例&#xff0c;跟大家带来具体的设置步骤&#xff0c;供大家学习参考使用&#xff01;1、大家可以现在百度软件中心下载我们需要的软件到电脑&#xff0c;然后解压到自己电脑&#xff0c;提醒大家将文件解压到电脑的磁盘根目录。还要说一句&#xff0c;目前小编介绍的方法适用…

HTML+CSS+JS实现 ❤️圣诞抓礼物小游戏❤️

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

HTML+CSS+JS实现 ❤️3D建筑结构旋转特效❤️

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

oracle 解死锁权限,讲解Oracle数据库中结束死锁进程的一般方法

1、查看死锁1)用dba用户执行以下语句select username,lockwait,status,machine,program from v$session where sid in(select session_id from v$locked_object)如果有输出的结果&#xff0c;则说明有死锁&#xff0c;且能看到死锁的机器是哪一台。字段说明&#xff1a;Usernam…

HTML+CSS+JS实现 ❤️H5图片列表滑动特效❤️

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

oracle 设置输出显示中文乱码,修改oracle当前会话的语言环境,解决oracle显示中文乱码的问题 | 信春哥,系统稳,闭眼上线不回滚!...

对于数据库ORACLE有时操作时&#xff0c;提示的是一串串???&#xff0c;不能起到提示的作用&#xff0c;这是由于语言环境的设置问题&#xff0c;下面是实际操作中要用到的。查看当前会话的语言环境&#xff1a;SQL> select userenv(language) from dual;USERENV(LANGUAG…

HTML+CSS+JS实现 ❤️绘制卡丁车动漫特效❤️

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

oracle删除排序数据库,数据库的数据操作:增删改查和排序

一、增1.1【插入单行】insert [into] (列名) values (列值)例&#xff1a;insert into Strdents (姓名,性别,出生日期) values (开心朋朋,男,1980/6/15)1.2【将现有表数据添加到一个已有表】insert into (列名) select from 例&#xff1a;insert into tongxunlu (姓名,地址,电…

HTML+CSS+JS实现美女canvas仿ps橡皮擦刮刮卡

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f…

oracle 并行用索引,分区索引并行导致的性能问题

问题现象;生产环境报ORA-17144statement handle not executed然后我把sql抓出来手工运行一遍执行计划如下&#xff1a;----------------------------------------------------------Plan hash value: 644608605--------------------------------------------------------------…

HTML+CSS+JS实现 ❤️贪吃蛇游戏、你能吃过我?❤️【源码送给你一起来玩-建议收藏】

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f…