js小游戏问题


<HTML>

<HEAD>

<TITLE>New Document</TITLE>

<style type="text/css">

.tip {

width: 200px;

border: 2px solid #ddd;

padding: 8px;

background: #f1f1f1;

color: #666;

}

.feiji {

width: 80px;

height: 70px;

background-color: blue;

position: relative;

}

</style>

<script>

function mousePos(e){

var x,y;

var e = e||window.event;

return {

x:e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,

y:e.clientY+document.body.scrollTop+document.documentElement.scrollTop

};

}

function test(e){

document.getElementById("mjs").innerHTML =dijiID; 

}

function feiji(e){

var divObj = document.getElementById("feiji");

divObj.style.left = (mousePos(e).x - 50) + 'px';

divObj.style.top = (mousePos(e).y - 80) + 'px';

}

//===========================================以上获取坐标=================================

//储存敌机

var arr1 = new Array();

//打开网页立即调用创建敌机方法;

(function diji(){

//调用敌机创建方法 每1秒创建一次敌机 7秒后停止创建;

var taskId = setInterval(addDiv,1000);

//setTimeout(function(){

//clearInterval(taskId);

//},7000);

//循环调用显示敌机下降

setInterval(function(){

arr1Tup(arr1);

},100); 

})();


var dijiID = 0;

function addDiv(){ 

//创建一个div 

var my = document.createElement("divCell"); 

//添加到页面 

document.body.appendChild(my); 


my.style.position="absolute"; 

//通过样式指定x坐标 

my.style.top= 0; 

//通过样式指定y坐标(随机数0~700) 

my.style.left= Math.round(Math.random()*700); 

//通过样式指定宽度 

my.style.width=83; 

//通过样式指定高度 

my.style.height=74; 


my.style.backgroundImage="url(img/diji.jpg)";

 

//添加div的内容 

my.innerHTML= '敌机'+ ++dijiID; 

//设置样式透明

my.style.filter = "alpha(opacity=50)";

//设置ID

my.id = "divCell" + dijiID;

//创建好敌机然后放入数组;

arr1[dijiID + 199] = my;

}

//每次循环都把每个敌机tup值加10;

function arr1Tup(arr1){

for(i = 200;i < arr1.length;i++){

arr1[i].style.top = parseInt(arr1[i].style.top) + 10;

//每次循环判断 top值 大于 580px就删除

if(parseInt(arr1[i].style.top)>580){

deleteDiv(arr1[i].id);

}

}

}

//根据id删除div节点

function deleteDiv(id){

var my = document.getElementById(id);

//根据id查找节点,如果存在就删除节点

if (my != null){

my.parentNode.removeChild(my);

}

}

//=================================以上是敌机的产生和落到底部删除。===============================

//储存子弹

var arr2 = new Array();

//打开网页循环子弹

(function (){

setInterval(function(){

arr2Tup(arr2);

},20); 

})();


var myfeijiID = 0;

function fasheADD(e){ 

//创建一个div 

var my = document.createElement("divZiDan"); 

//添加到页面 

document.body.appendChild(my); 

 

my.style.position="absolute"; 

//设置子弹的初始位置

my.style.top= (mousePos(e).y -10) + 'px';

my.style.left= (mousePos(e).x -10) + 'px'; 

//通过样式指定宽度 

my.style.width=18; 

//通过样式指定高度 

my.style.height=25; 


my.style.backgroundImage="url(img/zidan.jpg)";

my.style.backgroundColor="red"; 

//添加div的内容 

my.innerHTML=++myfeijiID; 

//设置样式透明

my.style.filter = "alpha(opacity=50)";

//设置ID

my.id = "divZiDan" + myfeijiID;

//创建好子弹然后放入数组;

arr2[myfeijiID - 1] = my;


}

//循环每次tup减少10

function arr2Tup(arr2){

for(z = 0;z < arr1.length;z++){

arr2[z].style.top = parseInt(arr2[z].style.top) - 10;

//tup低于10删除

if(parseInt(arr2[z].style.top) < 10){

deleteDiv(arr2[z].id);

}

}

}

//===============================以上是自己的飞机

(function panduan(){

var aaa = setInterval(bool,20);

})();

function bool(){

//以子弹为中心 判断是否打中敌机;

for(i = 0;i < arr2.length;i++){

for(j = 200;j < arr1.length;j++){

//用1个子弹跟每个敌机判断

if(parseInt(arr2[i].style.top) - parseInt(arr1[j].style.top) < 70 && parseInt(arr2[i].style.top) - parseInt(arr1[j].style.top) > -20 &&parseInt(arr2[i].style.left) - parseInt(arr1[j].style.left) < 80 && parseInt(arr2[i].style.left) - parseInt(arr1[j].style.left) > -10 ){

//如果相撞删除敌机

deleteDiv(arr1[j].id);

//如果相撞子弹消失

deleteDiv(arr2[i].id);

}

}

}

}


(function over(){

var bbb = setInterval(boom,20);

})();

function boom(){

//以子弹为中心 判断是否打中敌机;

for(i = 0;i < divObj.length;i++){

for(j = 200;j < arr1.length;j++){

//用1个子弹跟每个敌机判断

if(parseInt(divObj.style.top) - parseInt(arr1[j].style.top) < 70 && parseInt(divObj.style.top) - parseInt(arr1[j].style.top) > -20 &&parseInt(divObj.style.left) - parseInt(arr1[j].style.left) < 80 && parseInt(divObj.style.left) - parseInt(arr1[j].style.left) > -10 ){

//如果相撞删除敌机

deleteDiv(arr1[j].id);

//如果相撞子弹消失

deleteDiv(divObj.id);

}

}

}

}

//===============================以上是判断子弹是否与敌机相碰=============================

</script>

</HEAD>

<BODY>

<div id="mjs" class="tip"></div>

<div id="test" style="width:1000px;height:570px;background:#FFF;" onMouseMove="test(event),feiji(event)"> 

  <!-- 飞机 -->

  <div class="feiji" id="feiji" style="left:0px;top: 0px;background-image:url('img/feiji.jpg')" onClick="fasheADD(event);"></div>

</div>

</BODY>

</HTML>

想问下大佬如何实现敌机与本机的碰撞判断


qq_仁仁_0
浏览 919回答 3
3回答

慕设计2395807

JFVFDUNXNDWWGZFDSSVDDZKTUBRHYFOLEBOHOXQXWQQZZRMMGJPJMMXTJCZQWCCSMEHTNILLIEYRRNOSRBIHLUKHIUUHBRAEGQCJLLRRBEREETQQATJTWTMWITMCMCYYVDUAQJCGVMHGNWNVBEDJWADAAXRJDCSIORHLUORRHNJPFFPPTIFBEURAXGBDTCFBSHXTJSQARXTGDJPNNMIRPRORTJSVUANDNVYIFYYPZQQKAKFPYFKGGJMMPSISINCOEYONHGQQPEOYUWSBEOEGKSVLBXNWMVWYCSOKNXSIKWSUKNPNCYVEGVLIJMBRNDZCRUXOEGPMPLXZCSHDAWFCLHWUXTPNXGDMOXKSOKERJGKZBSIEHXOQAYORHVMIEHWTCVKNKSPFOXHQYTDZVYUDTDZDTCFUKTXTJMBQTDMPFCFVLBKAWLIKNWTCSUEAQNDZWMBZVFBDGCFVYNTVYVENUENQMQMBEOEUJGCYCYVLIKAKSVYRHEVQNKTPQNSBJMBLBKAWTJFPRUKZJMPLCEAXTCFBKUQZHKHEUDZPLUODGRGQZPYBLGWFHRHXNWFIPKUKOEZCMUDYUDMPLOKUWZTPZPRUDFIXNFNWGCLVKTDMEZQMVLTDZJZBRAXEUKTQZVDZWZCFIJMIYPLVYHDYIRHQZHRHXTPMBXNXGCZPZOXMVYHJZWMVRTJFVXTPFVMAKAKZHQUDTJRHEGJAXHQSPLUXLPYMILBDNQFBEGIYHKHVEBRHFIYORZCFORBSUXNQMVYNXAAJDTPSORAQTCLOLNQTVKAKEORAXTPFVEUEAWGCTILTVLXEUEUEODTJZGPFISIQTPYBQGIIPNZWCMCBNQRNNHAAFCGPZHQDMWJJVCPJZDURERHN
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript