JavaScript實(shí)現(xiàn)前端飛機(jī)大戰(zhàn)小游戲
更新時(shí)間:2022年05月08日 13:05:09 作者:敢跟頭像對(duì)視三秒嗎?
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)前端飛機(jī)大戰(zhàn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)前端飛機(jī)大戰(zhàn)的具體代碼,供大家參考,具體內(nèi)容如下
html:
<!DOCTYPE html> <html> ?? ?<head> ?? ??? ?<meta charset="utf-8" /> ?? ??? ?<title>飛機(jī)大戰(zhàn)</title> ?? ??? ?<link rel="stylesheet" type="text/css" href="css/commen.css" /> ?? ??? ?<link rel="stylesheet" type="text/css" href="css/main.css" /> ?? ??? ?<script src="js/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script> ?? ??? ?<script src="js/main.js" type="text/javascript" charset="utf-8"></script> ?? ??? ? ?? ??? ?<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> ?? ?</head> ?? ?<body> ?? ??? ?<div id="stage"> ?? ??? ??? ?<div class="bg1"></div> ?? ??? ??? ?<div class="bg2"></div> ?? ??? ??? ?<div class="plain"></div> ?? ??? ??? ?<div class="enemy enemy1"></div> ?? ??? ??? ?<div class="enemy enemy2"></div> ?? ??? ??? ?<div class="enemy enemy3"></div> ?? ??? ??? ?<div class="enemy enemy4"></div> ?? ??? ??? ?<!-- <div class="bullet"></div> --> ?? ??? ??? ? ?? ??? ??? ?<div class="func">功能切換</div> ?? ??? ??? ?<div class="func" style="left: 50px;">背景切換</div> ?? ??? ??? ?<audio id="mp3bg" src="music/background.mp3" autoplay loop> ?? ??? ??? ??? ?當(dāng)前瀏覽器不支持audio ?? ??? ??? ?</audio> ?? ??? ??? ?<audio id="mp3shoot" src="music/shoot.mp3" > ?? ??? ??? ??? ?當(dāng)前瀏覽器不支持audio ?? ??? ??? ?</audio> ?? ??? ??? ?<audio id="mp3destroy" src="./music/destoryed.mp3" > ?? ??? ??? ??? ?當(dāng)前瀏覽器不支持audio ?? ??? ??? ?</audio> ?? ??? ??? ?<button id="buttonmusic" type="button" style="position: absolute;right: 0;bottom: 0;">音樂(lè)</button> ?? ??? ?</div> ?? ? ?? ?</body> </html>
js:
// var pdirection // ?var plain // pdirection = [0, 0, 0, 0, 0]; // ?var bulletw = 50; // var bulleth = 65; // var stage // var move = 1 // var timerkiss $(function() { ?? ?//這里寫代碼的時(shí)候是可以控制所有htmldom節(jié)點(diǎn)的 ?? ?//dom ?? ?var pdirection = [0, 0, 0, 0, 0];?? ? ?? ? ?? ?//子彈的寬高 ?? ?var bulletw = 50; ?? ?var bulleth = 65; ?? ?//運(yùn)動(dòng)距離 ?? ?var move = 1 ?? ? ?? ? ?? ?// var timerkiss ?? ?var stage = document.getElementById("stage"); //獲取舞臺(tái)節(jié)點(diǎn) ?? ?var bg1 = stage.getElementsByClassName("bg1")[0]; //獲取背景圖片 ?? ?// console.log(bg1) ?//檢查是否捕獲bg1 ?? ?var bg2 = stage.getElementsByClassName("bg2")[0]; //獲取背景圖片 ?? ?var topval = -200; ?? ?var topval2 = -968; ?? ?var k = 0; ?? ?//玩家飛機(jī)對(duì)象 ?? ?var plain = stage.getElementsByClassName("plain")[0]; ?? ?//定義方向的變量數(shù)組,依次表示 上 右 下 左 空格用1表示按下,用0 表示未按下 ?? ?// pdirection = [0, 0, 0, 0, 0]; ?? ?//?? ?功能切換 ?? ?var funcsw=true;//true表示打開(kāi)鍵盤 ,關(guān)閉鼠標(biāo),false表示打開(kāi)鼠標(biāo),關(guān)閉鍵盤 ?? ? ?? ?//炮彈對(duì)象,寬高速度 ?? ?var bullet = stage.getElementsByClassName("bullet")[0]; ?? ?// var bulletw = 50; ?? ?// var bulleth = 65; ?? ?var bullets = 10; ?? ?// bg1.style.cssText="top: -30px;" ?? ?var t1 = setInterval(function() { ?? ??? ?k += 1; ?? ??? ?if (k == 768) { ?? ??? ??? ?topval = -968; ?? ??? ?} else if (k == 768 * 2) { ?? ??? ??? ?topval2 = -968; ?? ??? ??? ?k = 0; ?? ??? ?} ?? ??? ?// console.log("ddd") ?? ??? ?// console.log(bg1.style.cssText) ?? ??? ?// bg1.scrollTop=bg1.scrollTop+10; ?? ??? ?$(bg1).css({ ?? ??? ??? ?"top": topval ?? ??? ?}); ?? ??? ?$(bg2).css({ ?? ??? ??? ?"top": topval2 ?? ??? ?}); ?? ??? ?// bg1.style.cssText="top: "+topval+"px"; ?? ??? ?topval++; ?? ??? ?// bg2.style.cssText="top: "+topval2+"px"; ?? ??? ?topval2++; ?? ??? ?//topval++背景向下移動(dòng) ? ?? ?}, 3); ?? ?// t1.clearInterval(); ?//時(shí)鐘停止 ?? ?// 第二章圖片 ?? ?// var stage=document.getElementById("stage"); //獲取舞臺(tái)節(jié)點(diǎn) ?? ?// // console.log(bg1) ?//檢查是否捕獲bg1 ?? ?// // bg1.style.cssText="top: -30px;" ?? ?// var t1=setInterval(function(){ ?? ?// ?? ?// console.log("ddd") ?? ?// ?? ?// console.log(bg1.style.cssText) ?? ?// ?? ?// bg1.scrollTop=bg1.scrollTop+10; ?? ?// ?? ?bg2.style.cssText="top: "+topval2+"px"; ?? ?// ?? ?topval2+=1 ?? ?// ?? ?//topval++背景向下移動(dòng) ? ?? ?// },70); ?? ?// console.log(plain) ?? ?// var move = 1 ?? ?//鍵盤的監(jiān)控事件 ?? ?document.onkeydown = function(e) { ?? ??? ?// console.log(e) ?? ??? ?//向上運(yùn)動(dòng) ?? ??? ?// console.log("444") ?? ??? ?if (e.key == "w") { ?? ??? ??? ?//cons ?? ??? ??? ?//console.log("555") ?? ??? ??? ?pdirection[0] = 1; ?? ??? ??? ?//console.log(pdirection[0]); ?? ??? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ??? ?//if(parseFloat($(plain).css("top"))>=5) ?? ??? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ??? ?//?? ?$(plain).css({"top":parseFloat($(plain).css("top"))-move}); ?? ??? ??? ?// move++ ?? ??? ?} else if (e.key == "s") { //向下運(yùn)動(dòng) ?? ??? ??? ?pdirection[2] = 1; ?? ??? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ??? ?//if(parseFloat($(plain).css("top"))<=513) ?? ??? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ??? ?//?? ?$(plain).css({"top":parseFloat($(plain).css("top"))+move}); ?? ??? ??? ?// move++ ?? ??? ?} else if (e.key == "a") { //向左運(yùn)動(dòng) ?? ??? ??? ?pdirection[3] = 1; ?? ??? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ??? ?//$(plain).css({"left":parseFloat($(plain).css("left"))-move}); ?? ??? ??? ?// move++ ?? ??? ?} else if (e.key == "d") { //向右運(yùn)動(dòng) ?? ??? ??? ?pdirection[1] = 1; ?? ??? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ??? ?//$(plain).css({"left":parseFloat($(plain).css("left"))+move}); ?? ??? ??? ?// move++ ?? ??? ?} ?? ??? ?//else if(e.key==" "){ ?//炮彈向上運(yùn)動(dòng) ?? ??? ?//pdirection[4]=1; ?? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ?// var bulletx=parseFloat($(plain).css("left"))+$(plain).width()/2-bulletw/2; ?? ??? ?// console.log($(plain).css("left")) ?? ??? ?//console.log(parseFloat($(plain).css("left"))) ?? ??? ?// console.log(parseFloat($(plain).css("top"))-parseFloat($(bullet).css("height"))); ?? ??? ?//var bullety=parseFloat($(plain).css("top"))-bulleth; ?? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ?// $(plain).css({"left":parseFloat($(plain).css("left"))+move}); ?? ??? ?// move++ ?? ??? ?// $("<div class=\"bullet\"></div>") ? 轉(zhuǎn)義方法 ?? ??? ?//$("<div class='bullet'></div>").css({"left":bulletx,"top":bullety}).appendTo(stage); ?? ??? ?//}; ?? ?} ?? ?//炮彈單獨(dú) ?? ?document.onkeypress = function(e) { ?? ??? ?if (e.key == " ") { //炮彈向上運(yùn)動(dòng) ?? ??? ??? ?shoot(); ?? ??? ?}; ?? ?} ?? ?//鍵盤按鍵抬起來(lái) ?? ?document.onkeyup = function(e) { ?? ??? ?if (e.key == "w") { ?? ??? ??? ?//cons ?? ??? ??? ?//console.log("555") ?? ??? ??? ?pdirection[0] = 0; ?? ??? ?} else if (e.key == "s") { //向下運(yùn)動(dòng) ?? ??? ??? ?pdirection[2] = 0; ?? ??? ?} else if (e.key == "a") { //向左運(yùn)動(dòng) ?? ??? ??? ?pdirection[3] = 0; ?? ??? ?} else if (e.key == "d") { //向右運(yùn)動(dòng) ?? ??? ??? ?pdirection[1] = 0; ?? ??? ?} else if (e.key == " ") { //炮彈向上運(yùn)動(dòng) ?? ??? ??? ?pdirection[4] = 0; ?? ??? ?}; ?? ??? ?// console.log(pdirection) ?? ?}; ?? ?//定義飛機(jī)x軸y軸的坐標(biāo) ?? ??? ?// var plainx=e.clientX; ?? ??? ?// var plainy=e.clientY ?? ?//鼠標(biāo)移動(dòng)事件 ?? ?stage.onmousemove=function(e){ ?? ??? ?if(funcsw) return; ?//關(guān)閉鼠標(biāo)功能 ?? ??? ?var plainX=e.clientX-parseFloat($(stage).css("margin-left")); ?? ??? ?var plainY=e.clientY ?? ??? ? ?? ??? ?//console.log(e) ?? ??? ?//如有必要需要去掉子事件。此處并不需要 ?? ??? ?// e.defaultPrevented; ?? ??? ?// e.getPreventDefault()//取消事件默認(rèn)動(dòng)作 ?? ??? ?// console.log(e.path[1].id); ?? ??? ?// ($(plain[0]).css("top"))=e.clientX+"px" ?? ??? ? $(plain).css({"left":plainX-parseFloat($(plain).width()/2),"top":plainY-parseFloat($(plain).height()/2)}); ?? ??? ? //$(plain).css({"top":plainY+parseFloat($(plain).css("height")/2)}); ?? ??? ? // $(plain).css({"top":plainy}); ?? ??? ? // console.log(e.clientX) ?? ??? ? // console.log(e.clientY) ?? ??? ? // console.log($(plain).css("top")) ?? ?} ?? ?//綁定功能切換鍵 ?? ?$(".func").click(function(){ ?? ??? ?if($(this).html()=="功能切換"){ ?? ??? ??? ?if(funcsw){ ? ?? ??? ??? ??? ?funcsw=false;//關(guān)閉鍵盤 打開(kāi)鼠標(biāo) ?? ??? ??? ??? ?clearInterval(timerkey); ?? ??? ??? ??? ?timerfire=setInterval(shoot,170); ?? ??? ??? ??? ? ?? ??? ??? ?}else{? ?? ??? ??? ??? ?funcsw=true; //關(guān)閉鼠標(biāo) ,打開(kāi)鍵盤 ?? ??? ??? ??? ?clearInterval(timerfire); ?? ??? ??? ??? ?timerkey=monitorkey(); ?? ??? ??? ??? ? ?? ??? ??? ?} ?? ??? ?}; ?? ??? ? ?? ??? ? ?? ?}); ?? ?//控制敵機(jī)的時(shí)鐘 ?? ?var enemy = document.getElementsByClassName("enemy"); ?? ?setInterval(function() { ?? ??? ?for (var i = 0; i < enemy.length; i++) { ?? ??? ??? ?if ($(enemy[i]).attr("class") == "enemy enemy1") { ?? ??? ??? ??? ?$(enemy[i]).css("top", parseFloat($(enemy[i]).css("top")) + 1); ?? ??? ??? ?} else if ($(enemy[i]).attr("class") == "enemy enemy2") { ?? ??? ??? ??? ?$(enemy[i]).css("top", parseFloat($(enemy[i]).css("top")) + 2); ?? ??? ??? ?} else if ($(enemy[i]).attr("class") == "enemy enemy3") { ?? ??? ??? ??? ?$(enemy[i]).css("top", parseFloat($(enemy[i]).css("top")) + 3); ?? ??? ??? ?} else if ($(enemy[i]).attr("class") == "enemy enemy4") { ?? ??? ??? ??? ?$(enemy[i]).css("top", parseFloat($(enemy[i]).css("top")) + 4); ?? ??? ??? ?} ?? ??? ?} ?? ?}, 10); ?? ?//隨機(jī)產(chǎn)生敵機(jī) ?? ?// setInterval(function(){ ?? ?// ?? ?var num=parseInt(Math.random()*4)+1; ?? ?// ?? ?var rndwidth_stage=parseInt(Math.random()*parseInt($(stage).width()-45)); ?? ?// ?? ?$("<div class=\"enemy enemy"+num+"\"></div>").css({"left":rndwidth_stage}).appendTo("#stage") ?? ?// },1500); ?? ?//數(shù)組寫法 ?? ?setInterval(function() { ?? ??? ?var num = parseInt(Math.random() * 4) + 1; ?? ??? ?var enemyW = [50, 67, 67, 67]; ?? ??? ?var rndwidth_stage = parseInt(Math.random() * $(stage) ?? ?.width()); //展示三木運(yùn)算符(rndwidth_stage-enemyW[num-1] ?? ??? ?rndwidth_stage = rndwidth_stage > enemyW[num - 1] ? rndwidth_stage - enemyW[num - 1] : ?? ??? ??? ?rndwidth_stage; ?? ??? ?$("<div class=\"enemy enemy" + num + "\"></div>").css({ ?? ??? ??? ?"left": rndwidth_stage ?? ??? ?}).appendTo("#stage") ?? ?}, 1000); ?? ?//控制子彈的動(dòng)畫(huà)時(shí)間控件 ?? ?setInterval(function() { ?? ??? ?if ($(".bullet").length == 0) return; ?? ??? ?//設(shè)置好子彈移出屏幕后,移除子彈節(jié)點(diǎn) ?? ??? ?// $(".bullet").css({"top":parseFloat($(".bullet").css("top"))-10}) ?? ??? ?// // console.log($(this).css("top")) ?? ??? ?// console.log(parseFloat($(".bullet").css("top"))); ?? ??? ?//var bulltop=parseFloat($(".bullet[i]").css("top")); ?? ??? ?//$(".bullet").css({"top":(bulltop-10)+"px"}); ?? ??? ?var bullet = $(".bullet"); ?? ??? ?// console.log(bullet) ? ?? ??? ?// for(var i=0;i<bullet.length;i++){ ?? ??? ?// ?? ?var bulltop=parseFloat($(bullet[i]).css("top")); ?? ??? ?// ?? ?$(bullet[i]).css({"top":(bulltop-10)+"px"}); ?? ??? ?// } ?? ??? ?for (i = 0; i < bullet.length; i++) { ?? ??? ??? ?var tmp_bullet = parseFloat($(bullet[i]).css("top")); ?? ??? ??? ?// console.log(tmp_bullet); ?? ??? ??? ?if (tmp_bullet < 0) { ?? ??? ??? ??? ?$(bullet[i]).remove(); ?? ??? ??? ?} else { ?? ??? ??? ??? ?var bulltop = parseFloat($(bullet[i]).css("top")); ?? ??? ??? ??? ?$(bullet[i]).css({ ?? ??? ??? ??? ??? ?"top": (bulltop - 10) + "px" ?? ??? ??? ??? ?}); ?? ??? ??? ?} ?? ??? ?}; ?? ?}, bullets); ?? ?//單獨(dú)監(jiān)控子彈 ?? ?setInterval(function() { ?? ??? ?// var bullet=document.getElementsByClassName("bullet"); ?? ??? ?//兩種寫法都可以 ?? ??? ?var bullet = $(".bullet"); ?? ??? ?// for(i=0;i<bullet.length;i++){ ?? ??? ?// ?? ?var tmp_bullet=parseFloat($(bullet[i]).css("top")); ?? ??? ?// ?? ?// console.log(tmp_bullet); ?? ??? ?// ?? ?if(tmp_bullet<0){ ?? ??? ?// ?? ??? ?$(bullet[i]).remove(); ?? ??? ?// ?? ?}; ?? ??? ?// }; ?? ?}, 400); ?? ?//離開(kāi)舞臺(tái)的還記移除dom節(jié)點(diǎn) ?? ?setInterval(function() { ?? ??? ?for (i = 0; i < enemy.length; i++) { ?? ??? ??? ?var tmp_enemy = parseFloat($(enemy[i]).css("top")); ?? ??? ??? ?var tmp_stage = $(stage).height(); ?? ??? ??? ?// console.log(tmp_enemy);? ?? ??? ??? ?// console.log(typeof($(tmp_stage).height())); ?? ??? ??? ?if (tmp_enemy > tmp_stage) { ?? ??? ??? ??? ?$(enemy[i]).remove(); ?? ??? ??? ??? ?// console.log("移除成功"); ?? ??? ??? ?}; ?? ??? ?}; ?? ?}, 500); ?? ?//時(shí)鐘控件監(jiān)控?cái)?shù)組pdirection的值 ?? ?var timerkey=monitorkey(); //時(shí)鐘控件表示每個(gè)多少時(shí)間發(fā)射子彈 //第一種方法 ?鍵盤模擬事件 // setInterval(function(){ // ?? ?var e=jQuery.Event("keypress"); // ?? ?e.key=" " // ?? ?$(document).trigger(e); ?? ? // },500) //第二種方法 ?直接調(diào)用函數(shù) ?? ?function shoot(){ ?? ??? ?$("#mp3shoot")[0].currentTime=0; ?? ??? ?$("#mp3shoot")[0].play(); ?? ??? ?pdirection[4] = 1; ?? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ?// var bulletx=parseFloat($(plain).css("left"))+$(plain).width()/2-bulletw/2; ?? ??? ?// console.log($(plain).css("left")) ?? ??? ?//console.log(parseFloat($(plain).css("left"))) ?? ??? ?// console.log(parseFloat($(plain).css("top"))-parseFloat($(bullet).css("height"))); ?? ??? ?//var bullety=parseFloat($(plain).css("top"))-bulleth; ?? ??? ? ?? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ?// $(plain).css({"left":parseFloat($(plain).css("left"))+move}); ?? ??? ?// move++ ?? ??? ?// $("<div class=\"bullet\"></div>") ? 轉(zhuǎn)義方法 ?? ??? ?//$("<div class='bullet'></div>").css({"left":bulletx,"top":bullety}).appendTo(stage); ?? ??? ?//console.log(pdirection[4]); ?? ??? ?var bulletx = parseFloat($(plain).css("left")) + $(plain).width() / 2 - bulletw / 2; ?? ??? ?// console.log($(plain).css("left")) ?? ??? ?// console.log(parseFloat($(plain).css("left"))) ?? ??? ?// console.log(parseFloat($(plain).css("top"))-parseFloat($(bullet).css("height"))); ?? ??? ?var bullety = parseFloat($(plain).css("top")) - bulleth; ?? ??? ? ?? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ?// $(plain).css({"left":parseFloat($(plain).css("left"))+move}); ?? ??? ?// move++ ?? ??? ?// $("<div class=\"bullet\"></div>") ? 轉(zhuǎn)義方法 ?? ??? ?$("<div class='bullet'></div>").css({ ?? ??? ??? ?"left": bulletx, ?? ??? ??? ?"top": bullety ?? ??? ?}).appendTo(stage); ?? ??? ? ?? ??? ? ?? ?} ?? ? ?? ?//總結(jié)模型 ?? ?// function kissAB(A,B){ ?? ?// ?? ?var iskiss=false; ?? ?// ?? ?for(var i=0;i<A.length;i++){ ?? ?// ?? ??? ?for(var j=0;j<B.length;j++){ ?? ?// ?? ??? ??? ?// var a=$(A[i]).height()/2+parseFloat($(A[i]).css("top"))-$(B[j]).height()/2-parseFloat($(B[j]).css("top")); ?? ?// ?? ??? ??? ?// var b=$(B[j]).width()/2+parseFloat($(B[j]).css("left"))-$(A[i]).width()/2-parseFloat($(A[i]).css("left")); ?? ?// ?? ??? ??? ?// //console.log(a) ?? ?// ?? ??? ??? ?// var c=$(A[i]).height()/2+$(B[j]).width()/2 ?? ?// ?? ??? ??? ?// console.log(b); ?? ??? ??? ??? ? ?? ?// ?? ??? ??? ?// if(a*a+b*b<c*c){ ?? ?// ?? ??? ??? ?// ?? ?// $(B[j]).remove(); ?? ?// ?? ??? ??? ?// ?? ?// $(A[i]).remove(); ?? ?// ?? ??? ??? ?// ?? ?iskiss=true; ?? ?// ?? ??? ??? ?// ?? ?break; ?? ?// ?? ??? ??? ?// } ?? ??? ??? ??? ? ?? ??? ??? ??? ? ?? ?// ?? ??? ?} ?? ??? ??? ? ?? ??? ??? ? ?? ??? ??? ? ?? ?// ?? ?} ?? ?// } ?? ? ?? ?//調(diào)用模擬鍵盤函數(shù) ?? ??? ?//var timerfire=setInterval(shoot,500); ?? ??? ?//定義變量存儲(chǔ)子彈發(fā)射的動(dòng)畫(huà) ?? ?var timerfire; ?? ? ?? ??? ?//檢測(cè)是否碰撞 ?? ?function kissAB(A,B){ ?? ??? ??? ??? ?var iskiss=false; ?? ??? ??? ??? ??? ?var a=$(A).height()/2+parseFloat($(A).css("top"))-$(B).height()/2-parseFloat($(B).css("top")); ?? ??? ??? ??? ??? ?var b=$(B).width()/2+parseFloat($(B).css("left"))-$(A).width()/2-parseFloat($(A).css("left")); ?? ??? ??? ??? ??? ?//console.log(a) ?? ??? ??? ??? ??? ?var c=$(A).height()/2+$(B).width()/2-10; ?? ??? ??? ??? ??? ?//console.log(b); ?? ??? ??? ??? ??? ?if(a*a+b*b<c*c){ ?? ??? ??? ??? ??? ??? ?// $(B[j]).remove(); ?? ??? ??? ??? ??? ??? ?// $(A[i]).remove(); ?? ??? ??? ??? ??? ??? ?iskiss=true;?? ? ?? ??? ??? ??? ? ?? ??? ??? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ?return iskiss; ?? ??? ??? ? ?? ??? ??? ? ?? ??? ?}?? ? ?? ? ?? ?var timerkiss=monitorkiss(); ?? ? ?? ?function monitorkiss(){ ?? ??? ? ?? ??? ??? ?//獲取子彈 ?? ??? ??? ?//檢測(cè)子彈與敵機(jī)是否碰撞 ?? ??? ?return setInterval(function(){ ?? ??? ??? ? ?? ??? ??? ?var bullets=$(".bullet"); ?? ??? ??? ? ?? ??? ??? ?var enemys=$(".enemy"); ?? ??? ??? ?for(var i=0;i<bullets.length;i++){ ?? ??? ??? ??? ?for(var j=0;j<enemys.length;j++){ ?? ??? ??? ??? ??? ?// var a=$(bullets[i]).height()/2+parseFloat($(bullets[i]).css("top"))-$(enemys[j]).height()/2-parseFloat($(enemys[j]).css("top")); ?? ??? ??? ??? ??? ?// var b=$(enemys[j]).width()/2+parseFloat($(enemys[j]).css("left"))-$(bullets[i]).width()/2-parseFloat($(bullets[i]).css("left")); ?? ??? ??? ??? ??? ?// //console.log(a) ?? ??? ??? ??? ??? ?// var c=$(bullets[i]).height()/2+$(enemys[j]).width()/2 ?? ??? ??? ??? ??? ?// console.log(b); ?? ??? ??? ??? ??? ?// if(a*a+b*b<c*c){ ?? ??? ??? ??? ??? ?// ?? ?$(enemys[j]).remove(); ?? ??? ??? ??? ??? ?// ?? ?$(bullets[i]).remove(); ?? ??? ??? ??? ??? ?// ?? ?break; ?? ??? ??? ??? ??? ?//console.log("aaa") ?? ??? ??? ??? ??? ?// } ?? ??? ??? ??? ??? ?if (kissAB(bullets[i],enemys[j])){ ?? ??? ??? ??? ??? ??? ?//console.log("ttt") ?? ??? ??? ??? ??? ??? ?$("#mp3destroy")[0].play(); ?? ??? ??? ??? ??? ??? ?$(enemys[j]).remove(); ?? ??? ??? ??? ??? ??? ?$(bullets[i]).remove(); ?? ??? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ??? ? break; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?//檢測(cè)玩家與敵機(jī)是否碰撞 ?? ??? ??? ?for(var j=0;j<enemys.length;j++){ ?? ??? ??? ??? ?if(kissAB(plain,enemys[j])){ ?? ??? ??? ??? ??? ?alert("game over"); ?? ??? ??? ??? ??? ?gameover(); ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ?} ?? ??? ??? ??? ? ?? ??? ??? ??? ? ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ? ?? ??? ?},1); ?? ??? ? ?? ??? ? ?? ?} ?? ? ?? ?function monitorkey(){ ?? ??? ?return setInterval(function() { ?? ??? ??? ?//向上運(yùn)動(dòng) ?? ??? ??? ?//默認(rèn)方向 ?上 ?右 ?下 ?左 ? ?? ??? ??? ?if (pdirection[0] == 1) { ?? ??? ??? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ??? ??? ?if (parseFloat($(plain).css("top")) >= 5) ?? ??? ??? ??? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ??? ??? ??? ?$(plain).css({ ?? ??? ??? ??? ??? ??? ?"top": parseFloat($(plain).css("top")) - move ?? ??? ??? ??? ??? ?}); ?? ??? ??? ??? ?else ?? ??? ??? ??? ??? ?$(plain).css({"top":0}); ?? ??? ??? ??? ?// move++ ?? ??? ? ?? ??? ??? ?} ?? ??? ??? ?if (pdirection[2] == 1) { //向下運(yùn)動(dòng) ?? ??? ??? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ??? ??? ?if (parseFloat($(plain).css("top")) <= 513) ?? ??? ??? ??? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ??? ??? ??? ?$(plain).css({ ?? ??? ??? ??? ??? ??? ?"top": parseFloat($(plain).css("top")) + move ?? ??? ??? ??? ??? ?}); ?? ??? ??? ??? ?else ?? ??? ??? ??? ??? ?$(plain).css({"top":$(stage).Height-$(plain).Height}); ?? ??? ??? ??? ?// move++ ?? ??? ? ?? ??? ??? ?} ?? ??? ??? ?if (pdirection[3] == 1) { //向左運(yùn)動(dòng) ?? ??? ??? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ??? ??? ?if (parseFloat($(plain).css("left")) >= -10) ?? ??? ??? ??? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ??? ??? ??? ?$(plain).css({ ?? ??? ??? ??? ??? ??? ?"left": parseFloat($(plain).css("left")) - move ?? ??? ??? ??? ??? ?}); ?? ??? ??? ??? ?// move++ ?? ??? ? ?? ??? ??? ?} ?? ??? ??? ?if (pdirection[1] == 1) { //向右運(yùn)動(dòng) ?? ??? ??? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ??? ??? ?if (parseFloat($(plain).css("left")) <= 270) ?? ??? ??? ??? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ??? ??? ??? ?//console.log(parseFloat($(plain).css("right"))) ?? ??? ??? ??? ??? ?$(plain).css({ ?? ??? ??? ??? ??? ??? ?"left": parseFloat($(plain).css("left")) + move ?? ??? ??? ??? ??? ?}); ?? ??? ??? ??? ?// move++ ?? ??? ? ?? ??? ??? ?} ?? ??? ??? ?if (pdirection[4] == 1) { //炮彈向上運(yùn)動(dòng) ?? ??? ??? ??? ?// console.log(parseFloat($(plain).css("top"))) ?? ??? ??? ??? ?//var bulletx=parseFloat($(plain).css("left"))+$(plain).width()/2-bulletw/2; ?? ??? ??? ??? ?// console.log($(plain).css("left")) ?? ??? ??? ??? ?// console.log(parseFloat($(plain).css("left"))) ?? ??? ??? ??? ?// console.log(parseFloat($(plain).css("top"))-parseFloat($(bullet).css("height"))); ?? ??? ??? ??? ?//var bullety=parseFloat($(plain).css("top"))-bulleth; ?? ??? ? ?? ??? ??? ??? ?// plain.style.top.CSSValue=plain.style.top+10 ?? ??? ??? ??? ?// $(plain).css({"left":parseFloat($(plain).css("left"))+move}); ?? ??? ??? ??? ?// move++ ?? ??? ??? ??? ?// $("<div class=\"bullet\"></div>") ? 轉(zhuǎn)義方法 ?? ??? ??? ??? ?//$("<div class='bullet'></div>").css({"left":bulletx,"top":bullety}).appendTo(stage); ?? ??? ? ?? ??? ? ?? ??? ??? ?} ?? ??? ? ?? ??? ?}, 1); ?? ?} ?? ?// 載入背景音樂(lè) ?? ?// $("#mp3bg").play(); ?? ?var mp3bg=document.getElementById("mp3bg"); ?? ?// var timerbg= setInterval(function(){ ?? ?// ?? ?mp3bg.currentTime=0; ?? ?// ?? ?// mp3bg.controls ?? ?// ?? ?mp3bg.play(); ?? ?// ?? ?clearInterval(timerbg); ?? ?// }) ?? ?$("#buttonmusic").click(); ?? ?$("#buttonmusic").click(function(){ ?? ??? ?if($(this).html()=="音樂(lè)"){ ?? ??? ??? ?$(this).html("暫停"); ?? ??? ??? ?//mp3bg.currentTime=0; ?? ??? ??? ?// mp3bg.controls ?? ??? ??? ?mp3bg.play(); ?? ??? ??? ?//clearInterval(timerbg); ?? ??? ?}else{ ?? ??? ??? ?//mp3bg.currentTime=0; ?? ??? ??? ?// mp3bg.controls ?? ??? ??? ?mp3bg.pause(); ?? ??? ??? ?$(this).html("音樂(lè)"); ?? ??? ??? ? ?? ??? ?} ?? ??? ? ?? ?}) ?? ? ?? ? ?? ?function startgame(){ ?? ??? ?//碰撞檢測(cè)開(kāi)始 ?? ??? ?timerkiss=monitorkiss(); ?? ??? ?//重置方向鍵盤 ?? ??? ?console.log(pdirection); ?? ??? ?pdirection = [0, 0, 0, 0, 0]; ?? ??? ? ?? ??? ?//生成玩家飛機(jī) ?? ??? ?// var timertmp=setInterval(function(){ ?? ??? ??? ?//var aa=$(stage).height()-$(plain).height()*2 ?? ??? ??? ?//console.log(aa) ?? ??? ?// ?? ?if(parseFloat($(plain).css("top"))<($(stage).height()-$(plain).height()*2)){ ?? ??? ?// ?? ??? ?//alert("33"); ?? ??? ??? ??? ? ?? ??? ?// ?? ??? ?console.log("666"); ?? ??? ?// ?? ??? ?clearInterval(timertmp); ?? ??? ??? ??? ? ?? ??? ?// ?? ?}else ?? ??? ?// ?? ??? ?plain.style.cssText="top:"+(parseFloat($(plain).css("top"))-5)+"px;left:"+$(stage).width()/2-$(plain).width()/2+"px;"; ?? ??? ??? ? ?? ??? ?// }); ?? ?} ?? ? ?? ?function gameover(){ ?? ??? ?//碰撞檢測(cè)停止 ?? ??? ?clearInterval(timerkiss); ?? ??? ?// alert("gameover"); ?? ??? ?//移除玩家飛機(jī) ?? ??? ?// plain.remove(); ?? ??? ?//移除玩家飛機(jī)使用隱藏的方法 ?? ??? ?//plain.hidden=true; ?? ??? ? ?? ??? ?//移除所有敵機(jī) ?? ??? ?$(".enemy").remove(); ?? ??? ? ?? ??? ?// console.log(pdirection) ?? ??? ?//移除玩家飛機(jī),使用隱藏的方法 ?? ??? ?// $(plain).hide(); ?? ??? ?plain.style.cssText="top:"+$(stage).height()+"px;left:"+($(stage).width()/2-$(plain).width()/2+"px"); ?? ??? ?if(confirm("你玩不起,你個(gè)小垃圾,你沒(méi)有實(shí)力")){ ?? ??? ??? ?startgame(); ?? ??? ??? ? ?? ??? ?} ?? ??? ?//重置方向鍵盤 ?? ??? ?pdirection = [0, 0, 0, 0, 0]; ?? ??? ? ?? ??? ? ?? ?} ?? ? }); // 第二章圖片 // $(function(){ // ?? ?//這里寫代碼的時(shí)候是可以控制所有htmldom節(jié)點(diǎn)的 // ?? ?//dom // ?? ?var stage=document.getElementById("stage"); //獲取舞臺(tái)節(jié)點(diǎn) // ?? ?var bg2=stage.getElementsByClassName("bg2")[0];//獲取背景圖片 // ?? ?// console.log(bg1) ?//檢查是否捕獲bg1 // ?? ?var topval=-968; // ?? ?// bg1.style.cssText="top: -30px;" // ?? ?var t2=setInterval(function(){ // ?? ??? ?// console.log("ddd") // ?? ??? ?// console.log(bg1.style.cssText) // ?? ??? ?// bg1.scrollTop=bg1.scrollTop+10; // ?? ??? ?bg2.style.cssText="top: "+topval+"px"; // ?? ??? ?topval+=1 // ?? ??? ?//topval++背景向下移動(dòng) ? // ?? ?},70); // ?? ?// t1.clearInterval(); ?//時(shí)鐘停止 // }); // alert("4444") ? 不使用jq的話無(wú)法完全加載再?gòu)棌椏? // function myapp(){ // ?? ?定義函數(shù)的基本格式 // } // function xxxx (){ // ?? ??? ?// console.log("ddd") // ?? ??? ?console.log(bg1.style.cssText) // ?? ??? ?// bg1.scrollTop=bg1.scrollTop+10; // ?? ??? ?bg1.style.cssText="top: "+topval+"px"; // ?? ??? ?topval+=1 // ?? ?}
css:
#stage{ ?? ?width: 320px; ?? ?height: 568px; ?? ?background-color: antiquewhite; ?? ?color: white; ?? ?overflow: hidden; ?? ?margin: auto; ?? ?position: relative; ?? ? } .bg1{ ?? ?background-image: url(../img/bg_01.png); ?? ?height: 768px; ?? ?width: 100%; ?? ?position: absolute; ?? ?top: -200px; ?? ?/* z-index: 5; */ } .bg2{ ?? ? ?? ?background-image: url(../img/bg_01.png); ?? ?height: 768px; ?? ?width: 100%; ?? ?position: absolute; ?? ?top: -968px; ?? ?/* z-index: 5; */ } .plain{ ?? ?height: 53px; ?? ?width: 67px; ?? ?background-image: url(../img/plane_blue_01.png); ?? ?z-index: 11; ?? ?position: absolute; ?? ?bottom: 0; ?? ?background-size: 100% 100%; } .enemy{ ?? ?height: 53px; ?? ?width: 67px; ?? ?position: absolute; ?? ?background-size: 100% 100%; ?? ? } .enemy1{ ?? ? ?? ?background-image: url(../img/enemy_04.png); ?? ?/* z-index: 10; */ ?? ?height: 40px; ?? ?width: 50px; ?? ?top:0; ?? ?left: 20px; } .enemy2{ ?? ? ?? ?background-image: url(../img/enemy_03.png); ?? ?/* z-index: 10; */ ?? ?top:0; ?? ?left: 90px; ?? ? } .enemy3{ ?? ?background-image: url(../img/enemy_02.png); ?? ?/* z-index: 10; */ ?? ?top:0; ?? ?left: 160px; ?? ?height: 70px; } .enemy4{ ?? ?background-image: url(../img/enemy_01.png); ?? ?/* z-index: 10; */ ?? ?top:0; ?? ?left: 230px; ?? ? } /* 子彈 */ .bullet{ ?? ?background-image: url(../img/bullet_01.png); ?? ?width: 50px; ?? ?height: 65px; ?? ?position: absolute; ?? ?/* z-index: 10; */ ?? ? ?? ? ?? ? } /* 按鈕 */ .func{ ?? ?width: 40px; ?? ?height: 20px; ?? ?position: absolute; ?? ?z-index: 12; ?? ?background-color: skyblue; ?? ?opacity: 0.6; ?? ?color: white; ?? ?cursor: pointer; } .func:hover{ ?? ?opacity: 1; ?? ?transition-duration: 1s; ?? ? ?? ? }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js基于FileSaver.js 瀏覽器導(dǎo)出Excel文件的示例
本篇文章主要介紹了js基于FileSaver.js 瀏覽器導(dǎo)出Excel文件的示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08BootStrap下的彈出框加載select2框架失敗的解決方法
本文通過(guò)簡(jiǎn)單的代碼給大家介紹了BootStrap下的彈出框加載select2框架失敗的解決方法,需要的朋友參考下吧2017-08-08js動(dòng)態(tài)給table添加/刪除tr的方法
這篇文章介紹了js動(dòng)態(tài)給table添加/刪除tr的方法,有需要的朋友可以參考一下2013-08-08