用js實(shí)現(xiàn)拼圖小游戲
本文實(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è)對象,添加到數(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)建對象 var pox = { left: 200* i, top:200*j, } // 創(chuàng)建好的對象添加到數(shù)組里 if( i !== 3 || j !== 3 ){ arrs.push(pox) }else{ divNode.style.background = "none"; divNode.className = "space" } box.appendChild(divNode) } } console.log(arrs); // 隨機(jī)抽取對象 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>
效果圖
完成效果圖
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Ajax+FormData+javascript實(shí)現(xiàn)無刷新表單信息提交
在前端開發(fā)中ajax,formdata和js實(shí)現(xiàn)無刷新表單信息提交非常棒,接下來通過本文給大家介紹Ajax+FormData+javascript實(shí)現(xiàn)無刷新表單信息提交的相關(guān)資料,需要的朋友可以參考下2016-10-10javascript 開發(fā)之百度地圖使用到的js函數(shù)整理
這篇文章主要介紹了javascript 開發(fā)之百度地圖使用到的js函數(shù)整理的相關(guān)資料,需要的朋友可以參考下2017-05-05JS Array.from()將偽數(shù)組轉(zhuǎn)換成數(shù)組的方法示例
這篇文章主要介紹了JS Array.from()將偽數(shù)組轉(zhuǎn)換成數(shù)組的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03JavaScript canvas實(shí)現(xiàn)雨滴特效
這篇文章主要為大家詳細(xì)介紹了JavaScript canvas實(shí)現(xiàn)雨滴特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01uniapp使用webview嵌入vue頁面及通信實(shí)現(xiàn)方式
項(xiàng)目中有需要嵌入其他H5的頁面的業(yè)務(wù)需求,這篇文章主要給大家介紹了關(guān)于uniapp使用webview嵌入vue頁面及通信實(shí)現(xiàn)方式的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01全面了解構(gòu)造函數(shù)繼承關(guān)鍵apply call
下面小編就為大家?guī)硪黄媪私鈽?gòu)造函數(shù)繼承關(guān)鍵apply call。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07