js實(shí)現(xiàn)拖拽拼圖游戲
本文實(shí)例為大家分享了js實(shí)現(xiàn)拖拽拼圖游戲的具體代碼,供大家參考,具體內(nèi)容如下

該游戲主要使用了一些拖拽事件,以及對(duì)數(shù)據(jù)傳遞的應(yīng)用,直接上代碼,感興趣的可以參考
html:代碼
<div class="box">
<div id="d1" class="d1"></div>
<div id="d2" class="d1"></div>
<div id="d3" class="d1"></div>
<div id="d4" class="d1"></div>
<div id="d5" class="d1"></div>
<div id="d6" class="d1"></div>
<div id="d7" class="d1"></div>
<div id="d8" class="d1"></div>
<div id="d9" class="d1"></div>
</div>
<div id="but">
<button id="but1">一鍵完成</button>
<button id="but2">開始游戲</button>
<button id="but3">看一眼原圖</button>
<div>
<img id="yan" src="../../圖片/2222.jpg" alt="">
</div>
</div>
css代碼:
* {
margin: 0;
padding: 0;
}
.box {
width: 312px;
height: 312px;
border: 3px solid #000;
margin: 50px auto 5px;
font-size: 0;
}
.box div {
width: 100px;
height: 100px;
display: inline-block;
border: 2px solid #000;
}
.d1 {
background-image: url(../../圖片/2222.jpg);
background-size: 300px 300px;
background-position: 0px 0px;
}
#but {
border: 1px solid #000 transparent;
width: 300px;
height: 30px;
margin: 0 auto;
}
#but img {
width: 100px;
height: 100px;
float: right;
display: none;
}
button {
margin: 1px auto;
border: 1px solid #000;
}
js代碼:
var data = [['0 0'], ['-100px 0'], ['-200px 0'], ['0 -100px'], ['-100px -100px'], ['-200px -100px'], ['0 -200px'], ['-100px -200px'], ['-200px -200px']]
var but1 = document.getElementById("but1")
var but2 = document.getElementById("but2")
var but3 = document.getElementById("but3")
var yan = document.getElementById("yan")
var divs = document.querySelectorAll(".d1")
// 剛打開保持完整
for (var i = 0; i < divs.length; i++) {
divs[i].style.backgroundPosition = data[i][0]
}
// 一鍵完成
but1.addEventListener("click", function () {
for (var i = 0; i < divs.length; i++) {
divs[i].style.backgroundPosition = data[i][0]
}
})
// 開始游戲
but2.addEventListener("click", function () {
var arr = [];
var maxTimes = 9
do {
var num = Math.floor(Math.random() * 9);
if (-1 == arr.indexOf(num)) {
arr.push(num);
maxTimes--;
}
} while (maxTimes);
for (var i = 0; i < divs.length; i++) {
const k = arr[i]
divs[k].style.backgroundPosition = data[i][0]
}
})
// 看一眼原圖
but3.addEventListener("mousedown", function () {
yan.style.display = "block"
})
but3.addEventListener("mouseup", function () {
yan.style.display = "none"
})
divs.forEach(function (v, i) {
v.draggable = "true"
//開始拖拽的時(shí)候觸發(fā)事件
v.addEventListener("dragstart", function (e) {
// console.log('666');
e.dataTransfer.setData("newdivID",e.target.getAttribute("id"))
e.dataTransfer.setData("newdiv",e.target.style.backgroundPosition)
})
// 拖拽松開的時(shí)候觸發(fā)事件
v.addEventListener("drop",function (e) {
e.stopPropagation()
e.preventDefault()
var oldDiv = document.querySelector("#"+e.dataTransfer.getData('newdivID'))//取出并保存開始拖拽的div的id屬性的div
var pos=e.dataTransfer.getData("newdiv") // 取出并保存開始拖拽的div的backgroundPosition屬性
oldDiv.style.backgroundPosition=e.target.style.backgroundPosition//把準(zhǔn)備松開到的div的backgroundPosition屬性值傳遞給取出的那個(gè)舊div
e.target.style.backgroundPosition=pos// 把取出的那個(gè)舊div的backgroundPosition屬性值傳遞給當(dāng)前準(zhǔn)備松開到的div
})
v.addEventListener("dragover",function(e){
e.preventDefault()
})
})
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
多模塊項(xiàng)目引入SpringSecurity后一直報(bào)404的解決方案
這篇文章主要介紹了多模塊項(xiàng)目引入SpringSecurity后一直報(bào)404的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Java concurrency之互斥鎖_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
本文通過示例代碼給大家介紹了Java concurrency之互斥鎖的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06
Spring實(shí)戰(zhàn)之Bean的后處理器操作示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之Bean的后處理器操作,結(jié)合實(shí)例形式詳細(xì)分析了Bean的后處理器相關(guān)配置、操作方法及使用注意事項(xiàng),需要的朋友可以參考下2019-12-12
Java實(shí)現(xiàn)導(dǎo)出合并Excel單元格
隨著數(shù)據(jù)的不斷增長(zhǎng),很多時(shí)候需要將數(shù)據(jù)導(dǎo)出到Excel中進(jìn)行分析、處理和展示。本文將介紹如何使用Java實(shí)現(xiàn)Excel導(dǎo)出,并且可以合并單元格,需要的可以參考一下2023-04-04
詳解Spring注解@Autowired的實(shí)現(xiàn)原理和使用方法
在使用Spring開發(fā)的時(shí)候,配置的方式主要有兩種,一種是xml的方式,另外一種是 java config的方式,在使用的過程中,我們使用最多的注解應(yīng)該就是@Autowired注解了,所以本文就給大家講講@Autowired注解是如何使用和實(shí)現(xiàn)的,需要的朋友可以參考下2023-07-07
springcloud本地調(diào)試feign調(diào)用出現(xiàn)的詭異404問題及解決
這篇文章主要介紹了springcloud本地調(diào)試feign調(diào)用出現(xiàn)的詭異404問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03

