用js實(shí)現(xiàn)拼圖小游戲
更新時(shí)間:2021年03月14日 14:21:40 作者:我愛H5
這篇文章主要為大家詳細(xì)介紹了用js實(shí)現(xiàn)拼圖小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了js實(shí)現(xiàn)拼圖小游戲的具體代碼,供大家參考,具體內(nèi)容如下
一、js拼圖是什么?
用js做得小游戲
二、使用步驟
1、先創(chuàng)建div盒子
<style>
div,body{
margin: 0;
height: 0;
}
#box{
width: 800px;
height: 800px;
background-color: burlywood;
position: relative;
}
#box div {
width: 200px;
height: 200px;
background: url(./imgs/bg.jpg) no-repeat;
position: absolute;
}
</style>
</head>
<body>
<div id="box"></div>
</body>
2.寫js
<script>
// 獲取標(biāo)簽
var box = document.getElementById("box");
var arrs = [];
// 循環(huán)創(chuàng)建16個(gè)對(duì)象,添加到數(shù)組中
for(var i = 0; i < 4; i++){
for(var j = 0; j < 4; j++){
var divNode = document.createElement("div")
divNode.style.top = 200 * i + "px"
divNode.style.left = 200 * j + "px"
// 創(chuàng)建對(duì)象
var pox = {
left: 200* i,
top:200*j,
}
// 創(chuàng)建好的對(duì)象添加到數(shù)組里
if( i !== 3 || j !== 3 ){
arrs.push(pox)
}else{
divNode.style.background = "none";
divNode.className = "space"
}
box.appendChild(divNode)
}
}
console.log(arrs);
// 隨機(jī)抽取對(duì)象
for(var i = 0; i < 15; i++){
var ranNum = parseInt(Math.random() * (15 - i))
var x = arrs[ranNum].left;
var y = arrs[ranNum].top;
box.children[i].style.backgroundPosition = - x + "px "+ - y + "px";
arrs.splice(ranNum,1);
}
// 鍵盤事件
document.onkeyup = function(event) {
// 得到按的那個(gè)鍵
var key = event.keyCode
// 上
if (key == 38) {
var x = box.querySelector(".space").style.left
var y = box.querySelector(".space").style.top
for (var i = 0; i < 16; i++) {
if (parseInt(box.children[i].style.top) == parseInt(y) - 200 && parseInt(box.children[i].style.left) == parseInt(x)) {
box.children[i].style.top = y
box.querySelector(".space").style.top = parseInt(y) - 200 + "px"
}
}
// 下
}else if (key == 40) {
var x = box.querySelector(".space").style.left
var y = box.querySelector(".space").style.top
// 遍歷所有小div,找到空白上面得那張 賦值 為y
for(var i = 0; i < 16; i++){
if (parseInt(box.children[i].style.top) == parseInt(y) + 200 && parseInt(box.children[i].style.left) == parseInt(x)) {
box.children[i].style.top = y
box.querySelector(".space").style.top = parseInt(y) + 200 + "px"
}
}
// 左
}else if (key = 38) {
var x = box.querySelector(".space").style.left
var y = box.querySelector(".space").style.top
for (var i = 0; i < 16; i++) {
if (parseInt(box.children[i].style.left) == parseInt(x) - 200 && parseInt(box.children[i].style.top) == parseInt(y)) {
box.children[i].style.left = x
box.querySelector(".space").style.left = parseInt(x) - 200 + "px"
}
}
// 右
}else if (key = 39) {
var x = box.querySelector(".space").style.left
var y = box.querySelector(".space").style.top
for (var i = 0; i < 16; i++) {
if (parseInt(box.children[i].style.left) == parseInt(x) + 200 && parseInt(box.children[i].style.top) == parseInt(y)) {
box.children[i].style.left = x
box.querySelector(".space").style.left = parseInt(x) + 200 + "px"
}
}
}
}
</script>
效果圖

完成效果圖

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS實(shí)現(xiàn)微信彈出搜索框 多條件查詢功能
這篇文章主要介紹了JS實(shí)現(xiàn)微信彈出搜索框 多條件查詢功能的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12
JavaScript中async與await實(shí)現(xiàn)原理與細(xì)節(jié)
這篇文章主要介紹了JavaScript中async與await實(shí)現(xiàn)原理與細(xì)節(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
JavaScript this關(guān)鍵字指向常用情況解析
這篇文章主要介紹了JavaScript this關(guān)鍵字指向常用情況解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

