原生JS实现飞机大战小游戏
本文实例为大家分享了JS实现飞机大战小游戏的具体代码,供大家参考,具体内容如下
<html> <head> <title> 飞机大战 </title> <style type='text/css'> *{margin:0;padding:0;font-family:'Microsoft yahei'} body{overflow:hidden;;} </style> </head> <body> <script> window.onload = function(){ Game.exe(); }; var Game = { //启动程序 exe :function(){ document.body.style.background = ’#fff’; var oDiv = document.createElement(’div’); oDiv.id = ’GameBox’; oDiv.style.cssText = ’width:600px;height:500px;border:10px solid #999;margin:50px auto;font-family:'Microsoft yahei';text-align:center;position:relative;overflow:hidden;background:#fff’; document.body.appendChild(oDiv); this.init(); }, score : 0 , ifEnd : false, //初始化 init: function(){ var This = this; var oDiv = document.getElementById(’GameBox’); oDiv.innerHTML = ’’; Game.score = 0; Game.ifEnd = false; var oH = document.createElement(’h1’); oH.innerHTML = ’飞机大战 v1.0’; oH.style.cssText = ’color:#555555;font-size:30px;padding-top:50px;’; oDiv.appendChild( oH ); for (var i=0;i<4 ;i++ ) { var oP = document.createElement(’p’); oP.index = i; oP.style.cssText = ’font-size:18px;color:white;width:180px;height:50px;margin:40px auto;text-align:center;background:#999;line-height:40px;font-family:'Microsoft yahei';font-weight:bold;cursor:pointer;’ var html = ’’; oP.onmouseenter = function(){ this.style.background = ’#ff9933’; this.style.color = ’##ff6600’ }; oP.onmouseleave = function(){ this.style.background = ’#999’; this.style.color = ’white’ }; oP.onclick = function( e ){ e = e || window.event; This.start( this.index , oDiv , e ); }; switch( i ){ case 0: html = ’简单难度’; break; case 1: html = ’中等难度’; break; case 2: html = ’困难难度’; break; case 3: html = ’小天才附体’; break; } oP.innerHTML = html; oDiv.appendChild(oP); }; }, //游戏开始 start : function( index , oGameBox , e ){ oGameBox.innerHTML = ’’; var oS = document.createElement(’span’); oS.innerHTML = this.score; oS.style.cssText = ’position:absolute;left:20px;top:20px;font-size:14px;color:black;’; oGameBox.appendChild( oS ); this.plane( oGameBox , e ,index ); this.enemy( oGameBox ,oS ,index ); }, //关于飞机 plane : function( oGameBox , e ,index ){ var x = e.pageX; y = e.pageY; var oPlane = new Image(); oPlane.src = ’images/plane.png’; oPlane.width = 60; oPlane.height = 36; oPlane.id = ’plane’; var tY = oGameBox.offsetTop+parseInt(oGameBox.style.borderWidth)+oPlane.height/2; var lX = oGameBox.offsetLeft+parseInt(oGameBox.style.borderWidth)+oPlane.width/2; window.onresize = function(){ lX = oGameBox.offsetLeft+parseInt(oGameBox.style.borderWidth)+oPlane.width/2; }; var top = y- tY; var left = x- lX; oPlane.style.cssText = ’display:block;position:absolute;top:’+top+’px;left:’+left+’px;’; oGameBox.appendChild( oPlane ); var leftMin = - oPlane.width/2; var leftMax = oGameBox.clientWidth - oPlane.width/2; var topMin = 0; var topMax = oGameBox.clientHeight - oPlane.height; document.onmousemove = function(e){ if( !Game.ifEnd ) { e = e || window.event; var top = e.pageY -tY; var left = e.pageX -lX; top = Math.min( top , topMax );//取参数里最小的if( top > topMax )top = topMax; top = Math.max( top ,topMin );//取参数里最大的 left = Math.min( left , leftMax );//取参数里最小的if( top > topMax )top = topMax; left = Math.max( left ,leftMin ); oPlane.style.left = left + ’px’; oPlane.style.top = top + ’px’; } }; this.biu( oPlane , oGameBox ,index ); }, biu : function( oPlane , oGameBox ,index ){ var speed ; switch ( index ) { case 0: speed = 30; break; case 1: speed = 40; break; case 2: speed = 50; break; case 3: speed = 10; break; } this.BiuTimer = setInterval(function(){ var oBiu = new Image(); oBiu.src = ’images/bullet.png’; oBiu.width = 6; oBiu.height = 22; oBiu.className = ’bullet’; var top = oPlane.offsetTop - oBiu.height +3 ; var left = oPlane.offsetLeft + oPlane.width/2 -oBiu.width/2; oBiu.style.cssText = ’position:absolute;top:’+top+’px;left:’+left+’px;’; oGameBox.appendChild( oBiu ); oBiu.timer = setInterval( function(){ if( !oBiu.parentNode){ clearInterval( oBiu.timer ); } oBiu.style.top = oBiu.offsetTop - 10 + ’px’; if( oBiu.offsetTop < -oBiu.height ){ clearInterval( oBiu.timer ); oBiu.parentNode.removeChild( oBiu ); } }, 13 ); } ,speed ); }, enemy : function( oGameBox ,oS , index ){ var a , x; switch ( index ) { case 0: a = 1; x = 500; break; case 1: a = 2; x = 300; break; case 2: a = 3; x = 200; break; case 3: a = 5; x = 100; break; } this.EnemyTimer = setInterval( function(){ var oEnemy = new Image(); oEnemy.src = ’images/enemy.png’; oEnemy.width = 23; oEnemy.height = 30; var lMin = 0; var lMax = oGameBox.clientWidth - oEnemy.width; var left = Math.random()*(lMax-lMin) + lMin; oEnemy.style.cssText = ’position:absolute;top: -’+(-oEnemy.height)+’px; left:’+left+’px;’; oGameBox.appendChild( oEnemy ); var b = Math.random() * a + 1 ; oEnemy.timer = setInterval(function(){ oEnemy.style.top = oEnemy.offsetTop + b + ’px’;//敌军的下落速度 if( oEnemy.offsetTop >= oGameBox.clientHeight ){ clearInterval( oEnemy.timer ); oEnemy.parentNode.removeChild( oEnemy ); } },13); //和子弹的碰撞监测 var allBiu = Game.getClass(’bullet’); oEnemy.pzBiu = setInterval(function(){ for(var i = 0;i < allBiu.length;i++) { if( Game.boom( oEnemy ,allBiu[i])) { Game.score ++; oS.innerHTML = Game.score; oEnemy.src = ’images/boom.png’; clearInterval( oEnemy.pzBiu ); clearInterval( oEnemy.pzPlane ); allBiu[i].parentNode.removeChild( allBiu[i] ); setTimeout(function(){if( oEnemy.parentNode ){ oEnemy.parentNode.removeChild( oEnemy );}; },300); break; } } },50); //和战机的碰撞监测 var oPlane = document.getElementById(’plane’); oEnemy.pzPlane = setInterval(function(){ if( Game.ifEnd ){ clearInterval( oEnemy.pzPlane); } if( Game.boom( oEnemy , oPlane)) { Game.ifEnd = true; clearInterval( oEnemy.pzPlane); clearInterval( Game.BiuTimer); clearInterval( Game.EnemyTimer); oEnemy.src = ’images/boom.png’; oPlane.src = ’images/boom2.png’; setTimeout(function(){ Game.over( oGameBox ); },300); } },50); } , x );//敌军生成速度 }, //碰撞监测 boom : function( obj1 , obj2 ){ var T1 = obj1.offsetTop; var B1 = T1 + obj1.clientHeight; var L1 = obj1.offsetLeft; var R1 = L1 + obj1.clientWidth; var T2 = obj2.offsetTop; var B2 = T2 + obj2.clientHeight; var L2 = obj2.offsetLeft; var R2 = L2 + obj2.clientWidth; if ( R2 < L1 || L2 > R1 || B2 < T1 || T2 > B1 ) { return false; // 没撞上 } else { return true; // 撞上了 } }, //游戏结束 over : function( oGameBox ){ oGameBox.innerHTML = ’’; var oDiv = document.createElement(’div’); oDiv.style.cssText = ’width:300px;height:200px;margin:100px auto;background:#e0e0e0;border:5px solid #858585’; var oT = document.createElement(’h3’); oT.innerHTML = ’Game Over’; oT.style.cssText = ’padding-top:50px;font-size:25px;’; var oP1 = document.createElement(’p’); oP1.innerHTML = ’您的得分是:’ + ’<span style='color:#ffffff;font-weight:bold;'>’ + this.score + ’</span>’; oP1.style.cssText = ’font-size:16px;color:#fff;’; var oRestart = document.createElement(’div’); oRestart.style.cssText = ’width:100px;height:40px;font-size:14px;text-align:center;line-height:40px;color:white;background:#999;margin:20px auto;cursor:pointer;’; oRestart.innerHTML = ’重新开始’; oRestart.onclick = function(){ Game.init(); }; oDiv.appendChild( oT ); oDiv.appendChild( oP1 ); oDiv.appendChild( oRestart ); oGameBox.appendChild( oDiv ); }, //getclass 方法 getClass : function( cName , parent ){ parent = parent || document; if( document.getElementsByClassName ){ return parent.getElementsByClassName(cName); } else { var all = parent.getElementsByTagName(’*’); var arr = []; for( var i = 0;i<all.length;i++ ) { var arrClass = all.className.split(’ ’); for( var j = 0; j < arrClass.length;j++ ){ if( arrClass[j] == cName ) {arr.push( all[i]);break; } } } return arr; } }, }; </script> </body></html>
效果图



以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
1. IDEA 2019.2.2配置Maven3.6.2打开Maven项目出现 Unable to import Maven project的问题2. Hadoop 使用IntelliJ IDEA 进行远程调试代码的配置方法3. IDEA 使用mybatis插件Free Mybatis plugin的步骤(推荐)4. IntelliJ IDEA2020.2.2创建Servlet方法及404问题5. IDEA 2020 配置Tomcat服务器的详细步骤6. 一篇文章带你解决 IDEA 每次新建项目 maven home directory 总是改变的问题7. 一文读懂IDEA里面的Artifact到底是什么8. 关于IDEA git 只有Commit没有Push的问题9. IDEA中设置Tab健为4个空格的方法10. IDEA 使用 SpotBugs 找出你代码中的bug问题

网公网安备