純javascript模仿微信打飛機小遊戲_javascript技巧
七夕情人節也不要忘了打遊戲喔喔~,下面小編為大家準備的情人節禮物之純javascript模仿微信打飛機小遊戲分享給天下的情人們。
先給大家看效果圖:
純JavaScript模仿微信打飛機遊戲,做網頁小遊戲的借鏡下,介面設計是豎長仿手機螢幕風格,遊戲效果流暢。具有分數統計,裡面的JS封裝類中包括有創建飛機類、飛機移動行為控制,創建子彈類,產生min到max之間的隨機數,判斷本方飛機是否移出邊界,如果移出邊界,則取消mousemove事件,反之加上mousemove事件,為暫停界面的繼續按鈕添加暫停事件,創建敵方飛機類、碰撞判斷、完成界面的初始化,敵方小飛機一個,我方飛機一個。
//取得主介面
var mainDiv=document.getElementById("maindiv");
//取得開始介面
var startdiv=document.getElementById("startdiv");
//取得遊戲中分數顯示介面
var scorediv=document.getElementById("scorediv");
//取得分數介面
var scorelabel=document.getElementById("label");
//取得暫停介面
var suspenddiv=document.getElementById("suspenddiv");
//取得遊戲結束介面
var enddiv=document.getElementById("enddiv");
//取得遊戲結束後分數統計介面
var planscore=document.getElementById("planscore");
//初始化分數
var scores=; <span style="color: #0000ff">/* 创建飞机类 */ </span>function plan(hp,X,Y,sizeX,sizeY,score,dietime,sudu,boomimage,imagesrc){ this.planX=X; this.planY=Y; this.imagenode=null; this.planhp=hp; this.planscore=score; this.plansizeX=sizeX; this.plansizeY=sizeY; this.planboomimage=boomimage; this.planisdie=false; this.plandietimes=; this.plandietime=dietime; this.plansudu=sudu; <span style="color: #0000ff">//行为 /* 移动行为 */ </span> this.planmove=function(){ if(scores<=){ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu+"px"; } else if(scores>&&scores<=){ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu++"px"; } else if(scores>&&scores<=){ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu++"px"; } else if(scores>&&scores<=){ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu++"px"; } else if(scores>&&scores<=){ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu++"px"; } else{ this.imagenode.style.top=this.imagenode.offsetTop+this.plansudu++"px"; } } this.init=function(){ this.imagenode=document.Element("img"); this.imagenode.style.left=this.planX+"px"; this.imagenode.style.top=this.planY+"px"; this.imagenode.src=imagesrc; mainDiv.appendChild(this.imagenode); } this.init(); } <span style="color: #0000ff">/* 创建子弹类 */ </span>function bullet(X,Y,sizeX,sizeY,imagesrc){ this.bulletX=X; this.bulletY=Y; this.bulletimage=null; this.bulletattach=; this.bulletsizeX=sizeX; this.bulletsizeY=sizeY; <span style="color: #0000ff">//行为 /* 移动行为 */ </span> this.bulletmove=function(){ this.bulletimage.style.top=this.bulletimage.offsetTop-+"px"; } this.init=function(){ this.bulletimage=document.Element("img"); this.bulletimage.style.left= this.bulletX+"px"; this.bulletimage.style.top= this.bulletY+"px"; this.bulletimage.src=imagesrc; mainDiv.appendChild(this.bulletimage); } this.init(); } <span style="color: #0000ff">/* 创建单行子弹类 */ </span>function oddbullet(X,Y){ bullet.call(this,X,Y,,,"image/bullet.png"); } <span style="color: #0000ff">/* 创建敌机类 */ </span> function enemy(hp,a,b,sizeX,sizeY,score,dietime,sudu,boomimage,imagesrc){ plan.call(this,hp,random(a,b),-,sizeX,sizeY,score,dietime,sudu,boomimage,imagesrc); } <span style="color: #0000ff">//产生min到max之间的随机数 </span> function random(min,max){ return Math.floor(min+Math.random()*(max-min)); } <span style="color: #0000ff">/* 创建本方飞机类 */ </span> function ourplan(X,Y){ var imagesrc="image/我的飞机.gif"; plan.call(this,,X,Y,,,,,,"image/本方飞机爆炸.gif",imagesrc); this.imagenode.setAttribute('id','ourplan'); } <span style="color: #0000ff">/* 创建本方飞机 */ </span> var selfplan=new ourplan(,); <span style="color: #0000ff">//移动事件 </span> var ourPlan=document.getElementById('ourplan'); var yidong=function(){ var oevent=window.event||arguments[]; var chufa=oevent.srcElement||oevent.target; var selfplanX=oevent.clientX-; var selfplanY=oevent.clientY; ourPlan.style.left=selfplanX-selfplan.plansizeX/+"px"; ourPlan.style.top=selfplanY-selfplan.plansizeY/+"px"; // document.getElementsByTagName('img')[].style.left=selfplanX-selfplan.plansizeX/+"px"; // document.getElementsByTagName('img')[]..style.top=selfplanY-selfplan.plansizeY/+"px"; } <span style="color: #0000ff">/* 暂停事件 */ </span>var number=; var zanting=function(){ if(number==){ suspenddiv.style.display="block"; if(document.removeEventListener){ mainDiv.removeEventListener("mousemove",yidong,true); bodyobj.removeEventListener("mousemove",bianjie,true); } else if(document.detachEvent){ mainDiv.detachEvent("onmousemove",yidong); bodyobj.detachEvent("onmousemove",bianjie); } clearInterval(set); number=; } else{ suspenddiv.style.display="none"; if(document.addEventListener){ mainDiv.addEventListener("mousemove",yidong,true); bodyobj.addEventListener("mousemove",bianjie,true); } else if(document.attachEvent){ mainDiv.attachEvent("onmousemove",yidong); bodyobj.attachEvent("onmousemove",bianjie); } set=setInterval(start,); number=; } } <span style="color: #0000ff">//判断本方飞机是否移出边界,如果移出边界,则取消mousemove事件,反之加上mousemove事件 </span>var bianjie=function(){ var oevent=window.event||arguments[]; var bodyobjX=oevent.clientX; var bodyobjY=oevent.clientY; if(bodyobjX<||bodyobjX>||bodyobjY<||bodyobjY>){ if(document.removeEventListener){ mainDiv.removeEventListener("mousemove",yidong,true); } else if(document.detachEvent){ mainDiv.detachEvent("onmousemove",yidong); } } else{ if(document.addEventListener){ mainDiv.addEventListener("mousemove",yidong,true); } else if(document.attachEvent){ mainDiv.attachEvent("nomousemove",yidong); } } }
//暫停介面重新開始事件
//function chongxinkaishi(){ // location.reload(true); // startdiv.style.display="none"; // maindiv.style.display="block"; //} var bodyobj=document.getElementsByTagName("body")[]; if(document.addEventListener){ <span style="color: #0000ff">//为本方飞机添加移动和暂停 </span> mainDiv.addEventListener("mousemove",yidong,true); <span style="color: #0000ff">//为本方飞机添加暂停事件 </span> selfplan.imagenode.addEventListener("click",zanting,true); <span style="color: #0000ff">//为body添加判断本方飞机移出边界事件 </span> bodyobj.addEventListener("mousemove",bianjie,true); <span style="color: #0000ff">//为暂停界面的继续按钮添加暂停事件 </span> suspenddiv.getElementsByTagName("button")[].addEventListener("click",zanting,true); // suspenddiv.getElementsByTagName("button")[].addEventListener("click",chongxinkaishi,true); <span style="color: #0000ff">//为暂停界面的返回主页按钮添加事件 </span> suspenddiv.getElementsByTagName("button")[].addEventListener("click",jixu,true); } else if(document.attachEvent){ <span style="color: #0000ff">//为本方飞机添加移动 </span> mainDiv.attachEvent("onmousemove",yidong); <span style="color: #0000ff">//为本方飞机添加暂停事件 </span> selfplan.imagenode.attachEvent("onclick",zanting); <span style="color: #0000ff"> //为body添加判断本方飞机移出边界事件 </span> bodyobj.attachEvent("onmousemove",bianjie); <span style="color: #0000ff">//为暂停界面的继续按钮添加暂停事件 </span> suspenddiv.getElementsByTagName("button")[].attachEvent("onclick",zanting); // suspenddiv.getElementsByTagName("button")[].attachEvent("click",chongxinkaishi,true); <span style="color: #0000ff">//为暂停界面的返回主页按钮添加事件</span> suspenddiv.getElementsByTagName("button")[].attachEvent("click",jixu,true); } <span style="color: #0000ff">//初始化隐藏本方飞机 </span>selfplan.imagenode.style.display="none"; <span style="color: #0000ff">/* 敌机对象数组 */ </span>var enemys=[]; <span style="color: #0000ff">/* 子弹对象数组 */ </span>var bullets=[]; var mark=; var mark=; var backgroundPositionY=; <span style="color: #0000ff">/* 开始函数 */ </span>function start(){ mainDiv.style.backgroundPositionY=backgroundPositionY+"px"; backgroundPositionY+=.; if(backgroundPositionY==){ backgroundPositionY=; } mark++; <span style="color: #0000ff">/* 创建敌方飞机 */ </span> if(mark==){ mark++; <span style="color: #0000ff"> //中飞机 </span> if(mark%==){ enemys.push(new enemy(,,,,,,,random(,),"image/中飞机爆炸.gif","image/enemy_fly_.png")); } <span style="color: #0000ff"> //大飞机 </span> if(mark==){ enemys.push(new enemy(,,,,,,,,"image/大飞机爆炸.gif","image/enemy_fly_.png")); mark=; } <span style="color: #0000ff">//小飞机 </span> else{ enemys.push(new enemy(,,,,,,,random(,),"image/小飞机爆炸.gif","image/enemy_fly_.png")); } mark=; } <span style="color: #0000ff">/* 移动敌方飞机 */ </span> var enemyslen=enemys.length; for(var i=;i<enemyslen;i++){ if(enemys[i].planisdie!=true){ enemys[i].planmove(); } <span style="color: #0000ff">/* 如果敌机超出边界,删除敌机 */ </span> if(enemys[i].imagenode.offsetTop>){ mainDiv.removeChild(enemys[i].imagenode); enemys.splice(i,); enemyslen--; } <span style="color: #0000ff">//当敌机死亡标记为true时,经过一段时间后清除敌机 </span> if(enemys[i].planisdie==true){ enemys[i].plandietimes+=; if(enemys[i].plandietimes==enemys[i].plandietime){ mainDiv.removeChild(enemys[i].imagenode); enemys.splice(i,); enemyslen--; } } } <span style="color: #0000ff">/* 创建子弹 */ </span> if(mark%==){ bullets.push(new oddbullet(parseInt(selfplan.imagenode.style.left)+,parseInt(selfplan.imagenode.style.top)-)); } <span style="color: #0000ff">/* 移动子弹 */ </span> var bulletslen=bullets.length; for(var i=;i<bulletslen;i++){ bullets[i].bulletmove(); <span style="color: #0000ff">/* 如果子弹超出边界,删除子弹 */ </span> if(bullets[i].bulletimage.offsetTop<){ mainDiv.removeChild(bullets[i].bulletimage); bullets.splice(i,); bulletslen--; } } <span style="color: #0000ff">/* 碰撞判断 */ </span> for(var k=;k<bulletslen;k++){ for(var j=;j<enemyslen;j++){ <span style="color: #0000ff">//判断碰撞本方飞机</span> if(enemys[j].planisdie==false){ if(enemys[j].imagenode.offsetLeft+enemys[j].plansizeX>=selfplan.imagenode.offsetLeft&&enemys[j].imagenode.offsetLeft<=selfplan.imagenode.offsetLeft+selfplan.plansizeX){ if(enemys[j].imagenode.offsetTop+enemys[j].plansizeY>=selfplan.imagenode.offsetTop+&&enemys[j].imagenode.offsetTop<=selfplan.imagenode.offsetTop-+selfplan.plansizeY){ <span style="color: #0000ff">//碰撞本方飞机,游戏结束,统计分数</span> selfplan.imagenode.src="image/本方飞机爆炸.gif"; enddiv.style.display="block"; planscore.innerHTML=scores; if(document.removeEventListener){ mainDiv.removeEventListener("mousemove",yidong,true); bodyobj.removeEventListener("mousemove",bianjie,true); } else if(document.detachEvent){
以上程式碼簡單吧,使用純javascript模仿微信打飛機小遊戲,當時方法還有很多種,歡迎大家一起來分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

本文說明瞭如何使用源地圖通過將其映射回原始代碼來調試JAVASCRIPT。它討論了啟用源地圖,設置斷點以及使用Chrome DevTools和WebPack之類的工具。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。
