JS面向?qū)ο髮?shí)現(xiàn)飛機(jī)大戰(zhàn)
本文實(shí)例為大家分享了JS面向?qū)ο髮?shí)現(xiàn)飛機(jī)大戰(zhàn)的具體代碼,供大家參考,具體內(nèi)容如下
主頁面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.bg{
width: 530px;
height: 600px;
position: relative;
margin: 100px auto;
background: url("bg.png") no-repeat 0 -9399px;
}
.plane{
width: 60px;
height: 53px;
position: absolute;
left: 235px;
bottom: 10px;
background: url("my_air.gif") no-repeat;
}
.enemy{
position: absolute;
}
.buttle{
width: 9px;
height: 37px;
position: absolute;
background: url("my_ari_1.gif") no-repeat;
}
.bomp{
width: 160px;
height: 160px;
position: absolute;
background: url("0.gif") no-repeat;
}
</style>
</head>
<body>
<div class="bg" id="bg">
<div class="plane" id="plane"></div>
</div>
</body>
<script type="text/javascript" src="buttle.js"></script>
<script type="text/javascript" src="enemies.js"></script>
<script src="jquery-3.0.0.min.js"></script>
<script>
//bg移動(dòng)begin
var bg_height=-9399;
function bg_move(){
var bg=document.getElementById("bg");
bg_height+=3;
if (bg_height>0){
bg_height=-9399;
}
bg.setAttribute("style","background: url('bg.png') no-repeat 0 "+bg_height+"px");
}
setInterval(bg_move,30);
//bg移動(dòng)over
//通過獲取鍵盤的key值來控制飛機(jī)的方向begin
document.onkeydown = function(){
var key=event.keyCode;
var plane =document.getElementById("plane");
switch (key){
case 37:
plane_Left();
break;
case 38:
plane_Top();
break;
case 39:
plane_Right();
break;
case 40:
plane_Bottom();
break;
case 32:
fire();
break;
}
};
//通過獲取鍵盤的key值來控制飛機(jī)的方向over
//飛機(jī)的方向begin
var planeLeft=235;
var planeBottom=10;
//聲明全局變量planeBottom、planeLeft用來讓飛機(jī)移動(dòng)
function plane_Left(){
if(planeLeft>0){
planeLeft-=8;
document.getElementById("plane").setAttribute("style","left:"+planeLeft+"px"+";"+"bottom:"+planeBottom+"px");
}
}
function plane_Right(){
if(planeLeft<470){
planeLeft+=8;
document.getElementById("plane").setAttribute("style","left:"+planeLeft+"px"+";"+"bottom:"+planeBottom+"px");
}
}
function plane_Top(){
if(planeBottom<550){
planeBottom+=8;
document.getElementById("plane").setAttribute("style","left:"+planeLeft+"px"+";"+"bottom:"+planeBottom+"px");
}
}
function plane_Bottom(){
if(planeBottom>10){
planeBottom-=8;
document.getElementById("plane").setAttribute("style","left:"+planeLeft+"px"+";"+"bottom:"+planeBottom+"px");
}
}
//飛機(jī)的方向over
function enemyShow(){
var number = parseInt(Math.random()*10);
for(var i=0;i<number;i++){
var enemies=new enemiesShow();
}
}
setInterval(enemyShow,3000);
function fire(){
var bottom=planeBottom+5+53;
var left=planeLeft+30-5;
var buttle = new buttleDemo(left,bottom);
}
</script>
</html>
子彈
/**
* Created by echo22 on 2016/7/29.
*/
function buttleDemo(left,bottom){
var buttleLeft =left;
var buttleBottom = bottom;
var id;
var Move;
inti();
function inti(){
id=getRandom();
var str = "<div class='buttle' id='b"+id+"'></div>";
$("#bg").append(str);
$("#b"+id).css({"left":buttleLeft,"bottom":buttleBottom});
Move=setInterval(buttleMove,10);
}
//獲取隨機(jī)ID
function getRandom(){
return parseInt(Math.random()*10000);
}
//子彈的移動(dòng)
function buttleMove(){
if(buttleBottom<550){
buttleBottom+=10;
$("#b"+id).css("bottom",buttleBottom);
if(JudgeShot()){
dispire();
}
}
else {
dispire();
}
}
//清除子彈
function dispire(){
$("#b"+id).remove();
clearInterval(Move);
}
//判斷子彈與敵機(jī)的碰撞位置
function JudgeShot(){
var enemy=$(".enemy");
for (var i=0;i<enemy.length;i++){
var enemy_top=$(".enemy").eq(i).css("top");
var enemy_left=$(".enemy").eq(i).css("left");
enemy_bottom=600-getInt(enemy_top);
enemy_left=getInt(enemy_left);
console.log(enemy_left);
if (buttleLeft>enemy_left&&buttleLeft<enemy_left+50&&buttleBottom>enemy_bottom&&buttleBottom<enemy_bottom+60){
$(".enemy").eq(i).remove();
var bomp="<div class='bomp' id='bo"+id+"'></div>";
$("#bg").append(bomp);
$("#bo"+id).css({"left":buttleLeft-70,"bottom":buttleBottom-100});
setTimeout(gundan,50);
return true;
}
}
return false;
}
function getInt(str){
var result = str.substring(0,(str.length-2));
return parseInt(result);
}
function gundan(){
$("#bo"+id).remove();
}
}
敵機(jī)
/**
* Created by echo22 on 2016/7/29.
*/
function enemiesShow(){
var id;
init();
function init(){
var type=getEnemyType();
var enemyLeft=getEnemyLeft();
getEnemyPlane(type,enemyLeft);
getLine();
}
function getEnemyPlane(type,left){
console.log(111);
id=parseInt(Math.random()*10000);
var width;
var height;
if(type==1){
width=47;
height=72;
}
else {
width=64;
height=56;
}
var enemy="<div class='enemy' id='e"+id+"' ></div>";
$("#bg").append(enemy);
$("#e"+id).css({"width":width,"height":height,"left":left,"background":"url('d_j_"+type+".gif') no-repeat"});
}
function getEnemyType(){
return (parseInt(Math.random()*10/5)>0)?1:3;
}
function getEnemyLeft(){
return parseInt(Math.random()*(530-64));
}
function getLine(){
Math.random()>0.5?zhiLine():quLine();
}
function zhiLine(){
$("#e"+id).animate({
"top":"520px"
},3000,function(){
$("#e"+id).remove();
})
}
function quLine(){
$("#e"+id).animate({
"top":"200px",
"left":getEnemyLeft()
},1500,function(){})
$("#e"+id).animate({
"top":"520px",
"left":getEnemyLeft()
},1500,function(){
$("#e"+id).remove();
})
}
}
更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js+canvas實(shí)現(xiàn)飛機(jī)大戰(zhàn)
- JavaScript實(shí)現(xiàn)前端飛機(jī)大戰(zhàn)小游戲
- JavaScript編寫實(shí)現(xiàn)飛機(jī)大戰(zhàn)
- JavaScript實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲
- 用JS實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲
- 原生JS實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲
- js實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲
- js實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲
- JavaScript原生編寫《飛機(jī)大戰(zhàn)坦克》游戲完整實(shí)例
- js+css實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲
相關(guān)文章
某人初學(xué)javascript的時(shí)候?qū)懙膶W(xué)習(xí)筆記
JavaScript對(duì)象就是一組屬性(方法)的集合 在該語言中如果變量名或方法名不符合聲明規(guī)范,則一定得用方括號(hào)“ [] ”引用它2010-12-12
JavaScript使用math.js進(jìn)行精確計(jì)算操作示例
這篇文章主要介紹了JavaScript使用math.js進(jìn)行精確計(jì)算操作,結(jié)合實(shí)例形式分析了開源庫math.js進(jìn)行高精度數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
layui添加動(dòng)態(tài)菜單與選項(xiàng)卡
這篇文章主要為大家詳細(xì)介紹了layui添加動(dòng)態(tài)菜單與選項(xiàng)卡,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
詳解javascript實(shí)現(xiàn)瀑布流列式布局
這篇文章主要介紹了javascript實(shí)現(xiàn)瀑布流的兩種布局方式,一是絕對(duì)式布局、二是列式布局,詳細(xì)介紹了這兩種布局方式的原理,本文重點(diǎn)介紹列式布局,感興趣的小伙伴們可以參考一下2016-01-01
javascript appendChild,innerHTML,join性能比較代碼
在實(shí)際應(yīng)用中,應(yīng)該避免直接用innerHTML,對(duì)于大量的字符連接運(yùn)算,應(yīng)該考慮先運(yùn)算再輸出。2009-08-08
JavaScript如何攔截全局Fetch的請(qǐng)求與響應(yīng)詳解
全局的fetch()方法用于發(fā)起獲取資源的請(qǐng)求,它返回一個(gè)promise,這個(gè)promise會(huì)在請(qǐng)求響應(yīng)后被resolve,并傳回Response對(duì)象,這篇文章主要給大家介紹了關(guān)于JavaScript如何攔截全局Fetch的請(qǐng)求與響應(yīng)的相關(guān)資料,需要的朋友可以參考下2024-04-04
javascript實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘的啟動(dòng)和停止
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘的啟動(dòng)和停止文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10

