js實(shí)現(xiàn)簡(jiǎn)單拼圖小游戲
本文實(shí)例為大家分享了js實(shí)現(xiàn)簡(jiǎn)單拼圖小游戲的具體代碼,供大家參考,具體內(nèi)容如下
游戲很簡(jiǎn)單,拼拼圖,鼠標(biāo)拖動(dòng)一塊去和另一塊互換。語(yǔ)言是HTML+js,注釋寫(xiě)的有不明白的可以留言問(wèn)一下。
截圖


代碼區(qū)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<style type="text/css">
div{
width: 200px;
height: 200px;
}
.tu{
background-image:url(anni.jpg);
}
//利用background-position給每個(gè)div添加不同的圖片;即9個(gè)div組成一幅完成的圖片;
#z-1{
background-position: 0px 0px;
}
#z-2{
background-position:-200px 0px;
}
#z-3{
background-position:-400px 0px;
}
#z-4{
background-position:0 -200px;
}
#z-5{
background-position: -200px -200px;
}
#z-6{
background-position: -400px -200px;
}
#z-7{
background-position: 0px -400px;
}
#z-8{
background-position: -200px -400px;
}
#z-9{
background-position: -400px -400px;
}
</style>
<script>
//完成兩個(gè)圖片拖拽后的互換;
function over(e){
e.preventDefault();//阻止默認(rèn)
}
//抓起
function drag(e){
var id=e.target.id;
// console.log(e.target.id);
e.dataTransfer.setData("id",id);//設(shè)置傳輸?shù)氖潜蛔d;
}
//經(jīng)過(guò)
function drop(e){
var beizhuaId=e.dataTransfer.getData("id");//接受被抓id;
// console.log(beizhuaId);//被抓ID
var fangID=e.target.id;//所放位置的id;
var beizhua=document.getElementById(beizhuaId);//獲取被抓對(duì)象;
var fang=document.getElementById(fangID);//獲取放的對(duì)象;
var f_beizhua=beizhua.parentNode;//分別找到對(duì)應(yīng)的父節(jié)點(diǎn)
var f_fang=fang.parentNode;
//互換兒子
f_beizhua.appendChild(fang);
f_fang.appendChild(beizhua);
win();
}
//判斷贏得方法;每個(gè)父和子id名字序號(hào)相同,循環(huán) ,累加count;
function win(){
var tus=document.getElementsByClassName('tu');
var count=0;
for(var i=0;i<tus.length;i++){
var tu=tus[i];
var fu=tu.parentNode;
var tu_id=tu.getAttribute("id");
var fu_id=fu.getAttribute("id");
if(tu_id.replace("z-","")==fu_id.replace("f-","")){
count++;
console.log(count);
}else{
return;
}
}
if(count==9){
alert("you win!");
}
}
//打亂按鈕;通過(guò)生成隨機(jī)數(shù);appenChild方法去多次互換,則為打亂;
function daluan(){
for(var i=0;i<100;i++){
var tus=document.getElementsByClassName('tu');
var m=parseInt(Math.random()*9);
var n=parseInt(Math.random()*9);
var tusmp=tus[m].parentNode;
var tusnp=tus[n].parentNode;
tusmp.appendChild(tus[n]);
tusnp.appendChild(tus[m]);
}
}
</script>
<body>
<table border="1">
<tr>
<td>
<div id="f-1" ondragover="over(event)" ondrop="drop(event)">
<div id="z-1" class="tu" draggable="true" ondragstart="drag(event)"></div>
</div>
</td>
<td>
<div id="f-2" ondragover="over(event)" ondrop="drop(event)">
<div id="z-2" class="tu" draggable="true" ondragstart="drag(event)"></div>
</div>
</td>
<td>
<div id="f-3" ondragover="over(event)" ondrop="drop(event)">
<div id="z-3" class="tu" draggable="true" ondragstart="drag(event)"></div>
</div>
</td>
</tr>
<tr>
<td>
<div id="f-4" ondragover="over(event)" ondrop="drop(event)">
<div id="z-4" class="tu" draggable="true" ondragstart="drag(event)"></div>
</div>
</td>
<td>
<div id="f-5" ondragover="over(event)" ondrop="drop(event)">
<div id="z-5" class="tu" draggable="true" ondragstart="drag(event)"></div>
</div>
</td>
<td>
<div id="f-6" ondragover="over(event)" ondrop="drop(event)">
<div id="z-6" class="tu" draggable="true" ondragstart="drag(event)"></div>
</div>
</td>
</tr>
<tr>
<td>
<div id="f-7" ondragover="over(event)" ondrop="drop(event)">
<div id="z-7" class="tu" draggable="true" ondragstart="drag(event)"></div>
</div>
</td>
<td>
<div id="f-8" ondragover="over(event)" ondrop="drop(event)">
<div id="z-8" class="tu" draggable="true" ondragstart="drag(event)"></div>
</div>
</td>
<td>
<div id="f-9" ondragover="over(event)" ondrop="drop(event)">
<div id="z-9" class="tu" draggable="true" ondragstart="drag(event)"></div>
</div>
</td>
</tr>
</table>
<input type="button" value="打亂" onclick="daluan()" />
</body>
</html>
結(jié)語(yǔ)
東西很少,邏輯也不算強(qiáng),但是思路需要清晰。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js+canvas實(shí)現(xiàn)滑動(dòng)拼圖驗(yàn)證碼功能
- JS實(shí)現(xiàn)PC手機(jī)端和嵌入式滑動(dòng)拼圖驗(yàn)證碼三種效果
- js實(shí)現(xiàn)九宮格拼圖小游戲
- JS快速實(shí)現(xiàn)移動(dòng)端拼圖游戲
- JS 拼圖游戲 面向?qū)ο?,注釋完整?/a>
- js+html5實(shí)現(xiàn)可在手機(jī)上玩的拼圖游戲
- JS寫(xiě)的數(shù)字拼圖小游戲代碼[學(xué)習(xí)參考]
- JS實(shí)現(xiàn)滑動(dòng)拼圖驗(yàn)證功能完整示例
- 使用 Node.js 模擬滑動(dòng)拼圖驗(yàn)證碼操作的示例代碼
- 圖片拼圖記憶力測(cè)試游戲,網(wǎng)頁(yè)+JS版
相關(guān)文章
淺談typescript中keyof與typeof操作符用法
本文主要介紹了typescript中keyof與typeof操作符用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
經(jīng)常用到的javascript驗(yàn)證函數(shù)收集
經(jīng)常用到的javascript驗(yàn)證函數(shù)收集...2007-11-11
利用JavaScript腳本實(shí)現(xiàn)滾屏效果的方法
這篇文章主要介紹了利用JavaScript腳本實(shí)現(xiàn)滾屏效果的方法,即一個(gè)公告欄顯示般的效果,需要的朋友可以參考下2015-07-07
使用3D引擎threeJS實(shí)現(xiàn)星空粒子移動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了使用3D引擎threeJS實(shí)現(xiàn)星空粒子移動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
uniapp實(shí)現(xiàn)橫向滾動(dòng)選擇日期
這篇文章主要為大家詳細(xì)介紹了uniapp實(shí)現(xiàn)橫向滾動(dòng)選擇日期,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10
js通過(guò)audioContext實(shí)現(xiàn)3D音效
這篇文章主要為大家詳細(xì)介紹了js通過(guò)audioContext實(shí)現(xiàn)3D音效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
關(guān)于RxJS Subject的學(xué)習(xí)筆記
這篇文章主要介紹了關(guān)于RxJS Subject的學(xué)習(xí)筆記,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Js動(dòng)態(tài)設(shè)置rem來(lái)實(shí)現(xiàn)移動(dòng)端字體的自適應(yīng)代碼
這篇文章主要介紹了Js動(dòng)態(tài)設(shè)置rem來(lái)實(shí)現(xiàn)移動(dòng)端字體的自適應(yīng)代碼,代碼簡(jiǎn)單易懂非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10

