基于JS實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲的示例代碼
演示

技術(shù)棧
今天沒有什么特別要講的,要不我們提前介紹下次要做的技術(shù)吧。你不說話就是同意了。我們開始了。 下圖是正則表達(dá)式的一些總結(jié)大家可以先看看哦

(function() {
/**
* 1. JavaScript使用正則式的函數(shù)
*/
const str = "abchelloasdasdhelloasd";
// 1. 查找
console.log(str.search("h")); // 3
// 2. 替換
console.log(str.replace(/a/, "s")); // sbchelloasdasdhelloasd
// 3. 切割
console.log(str.split(/ab/)); // ["", "bchello", "sd", "sdhello", "sd"]
// 4. RegExp.prototype.test方法:檢測該字符串是否包含指定串
console.log(/hello/.test("abchello")); // true
// 5. RegExp.prototype.exec方法:將滿足條件的字符串放到數(shù)組
let reg=/hello/g;
reg.exec("abchelloasdasdhelloasd"); // ["hello"]
}());
源碼
<div id='box'></div>
定義敵方戰(zhàn)機(jī)
//敵方戰(zhàn)機(jī)
'enemy' : function(){
var oEnemy = Game.ctE('img');
oEnemy.src='images/enemy.png';
oEnemy.className='enemy';
Game.box.appendChild(oEnemy);
var left = Math.random()*(Game.box.clientWidth-Game.getstyle(oEnemy,'width')/2);
var top = Game.getstyle(oEnemy,'top');
oEnemy.style.left=left+'px';
oEnemy.timer=setInterval(function(){
/*敵軍下落速度*/
top+=3;
oEnemy.style.top=top+'px';
if(top>Game.box.clientHeight){
clearInterval(oEnemy.tiamr);
if(!oEnemy.parentNode){
return;
}else{
oEnemy.parentNode.removeChild(oEnemy);
};
}else{
var allB = Game.getclass(Game.box,'img','bullet');
for(var i=0;i<allB.length;i++){
if(Game.pz(oEnemy,allB[i])){
allB[i].parentNode.removeChild(allB[i]);
oEnemy.src='images/boom.png';
clearInterval(oEnemy.timer);
setTimeout(function(){
if(!oEnemy.parentNode){
return;
}else{
oEnemy.parentNode.removeChild(oEnemy);
};
},500);
Game.num+=10;
Game.oScore.innerHTML=Game.num+'分';
Game.fenshu=Game.oScore.innerHTML;
};
};
if(Game.pz(oEnemy,Game.oPlane)){
oEnemy.src='images/boom.png';
clearInterval(oEnemy.timer);
setTimeout(function(){
if(!oEnemy.parentNode){
return;
}else{
oEnemy.parentNode.removeChild(oEnemy);
};
},500);
Game.oPlane.src='images/boom2.png';
clearInterval(Game.bTimer);
clearInterval(Game.start.timer);
document.onmousemove=null;
setTimeout(function(){
Game.over();
},3000);
};
};
},30);
},
定義我方戰(zhàn)機(jī)
'plane' : function(ev,t,c){
Game.box.appendChild(Game.oPlane);
var bT = Game.box.offsetTop + Game.oPlane.clientHeight/2 + (Game.box.offsetHeight-Game.getstyle(Game.box,'height'))/2;
var bL = Game.box.offsetLeft + Game.oPlane.clientWidth/2 + (Game.box.offsetWidth-Game.getstyle(Game.box,'width'))/2;
var top = ev.pageY - bT;
var left = ev.pageX - bL;
Game.oPlane.style.cssText='top:'+top+'px;left:'+left+'px;';
var topMax = Game.getstyle(Game.box,'height')-Game.oPlane.clientHeight/2;
var leftMin = -Game.oPlane.clientWidth/2;
var leftMax = Game.getstyle(Game.box,'width')-Game.oPlane.clientWidth/2;
document.onmousemove = function(ev){
ev = ev||event;
top = ev.pageY - bT;
left = ev.pageX - bL;
if(top<0){
top=0;
}else if(top>topMax){
top = topMax;
};
if(left<leftMin){
left = leftMin;
}else if(left>leftMax){
left = leftMax;
};
Game.oPlane.style.cssText='top:'+top+'px;left:'+left+'px;';
};
/*子彈生成速度 */
Game.bTimer=setInterval(function(){Game.bullet(top,left,c);},t);
},
碰撞檢測
//碰撞檢測
'pz' : function(obj1,obj2){
var T1 = Game.getstyle(obj1,'top');
var B1 = T1+Game.getstyle(obj1,'height');
var L1 = Game.getstyle(obj1,'left');
var R1 = L1+Game.getstyle(obj1,'width');
var T2 = Game.getstyle(obj2,'top');
var B2 = T2+Game.getstyle(obj2,'height');
var L2 = Game.getstyle(obj2,'left');
var R2 = L2+Game.getstyle(obj2,'width');
if(T1>B2||L1>R2||B1<T2||R1<L2){
return false;
}else{
return true;
};
},

到此這篇關(guān)于基于JS實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲的示例代碼的文章就介紹到這了,更多相關(guān)JS飛機(jī)大戰(zhàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)發(fā)動(dòng)態(tài)功能的示例代碼
最近做了一個(gè)校園拍賣小程序,想在里面添加一個(gè)類似校園圈功能,現(xiàn)在來一步一步實(shí)現(xiàn),對微信小程序?qū)崿F(xiàn)發(fā)動(dòng)態(tài)功能感興趣的朋友一起看看吧2022-08-08
微信小程序踩坑記錄之解決tabBar.list[3].selectedIconPath大小超過40kb
這篇文章主要給大家介紹了關(guān)于微信小程序踩坑記錄之解決tabBar.list[3].selectedIconPath大小超過40kb的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
js拖拉表格實(shí)現(xiàn)內(nèi)容計(jì)算
這篇文章主要為大家詳細(xì)介紹了js拖拉表格實(shí)現(xiàn)內(nèi)容計(jì)算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
Navigator?sendBeacon頁面關(guān)閉也能發(fā)送請求方法示例
這篇文章主要為大家介紹了Navigator?sendBeacon頁面關(guān)閉也能發(fā)送請求的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
頁面實(shí)時(shí)更新時(shí)間的JS實(shí)例代碼
這篇文章主要介紹了頁面實(shí)時(shí)更新時(shí)間的JS實(shí)例代碼,有需要的朋友可以參考一下2013-12-12

