先来看看开始的界面图
实现思路:
1.打开页面,背景开始走动;
2.点击开始,飞机开始不断发射子弹,敌人随机出现在上方;
3.当敌人碰到子弹,敌人消失;
4.当敌人和飞机相遇,飞机死亡,结束游戏;
html页面
<script type="text/javascript" src="sunckBase.js">
<script type="text/javascript" src="飞机大战.js">
css样式
width: 109px;
height: 82px;
position: absolute;
background: url(hero.png);
left: 215px;
top: 668px;
}
.enemy{
position: absolute;
width: 30px;
height: 30px;
left: -100px;
top: 0px;
background: url(enemy.png);
background-size: 30px 30px;
}
.bullet{
position: absolute;
width: 5px;
height: 10px;
left: -100px;
top: -100px;
background: url(bullet.png);
background-size: 5px 10px;
}
startMenu,#restartMenu{
position: absolute;
width: 512px;
text-align: center;
left: 0;
top: 300px;
}
start,#restart{
line-height:50px;
font-size:30px;
font-weight:bold;
color:#F00;
display:block;
text-decoration:none;
}
restartMenu{
display: none;
}
进入页面时,背景开始动
点击开始,进入游戏
游戏中注:其实子弹和敌人的标签没有几个,但是我们使用定时器,开始之前,现将表现都放在屏幕外,进入游戏需要时候再改变标签定位,将其放入到页面中。
//找到可用敌人
var findEnemyTimer = setInterval(findEnemy,500);
function findEnemy(){
//找到一个没有在屏幕中的敌人
for (var i = 0; i < jsEnemys.length; i++) {
if (jsEnemys[i]["isShow"] == false) {
//标记敌人已经使用
jsEnemys[i]["isShow"] = true;
//将敌人移动到屏幕
var left = randomNum(0,482);
jsEnemys[i].style.left = left + "px";
jsEnemys[i].style.top = 0 + "px";
break;
}
}
}
// //让敌人下落
var enemyLandTimer = setInterval(enemyLand,100);
function enemyLand() {
for (var j = 0; j < jsEnemys.length; j++) {
if (jsEnemys[j]["isShow"] == true) {
var a = randomNum(4,20);
if (jsEnemys[j].offsetTop <= 768) {
jsEnemys[j].style.top = jsEnemys[j].offsetTop + a + "px";
} else {
jsEnemys[j].style.left = "-100px";
jsEnemys[j].style.top = "0px";
jsEnemys[j]["isShow"] = false;
}
}
}
}
}
打中怪物
用页面上存在每一个敌人和每一个子弹的定位进行简则,如果相撞,那么怪物消失
jsEnemys[j].style.top = "-100px";
jsEnemys[j]["isShow"] = false;
}
}
}
}
}
}
死亡检测
游戏结束用页面上存在每一个敌人和飞机的定位进行检测,如果两者相遇,那么结束游戏。
注:检测时考虑取反,坦克在飞机上面,在飞机下面,在飞机左边,在飞机右边是没有碰到的时候,那么我们取反就是说明两者已经相遇了。
上述两步中用到的检测两者是否碰撞的函数
var obj2Width = obj2Left + obj2.offsetWidth;
var obj2Top = obj2.offsetTop;
var obj2Height = obj2Top + obj2.offsetHeight;
if ( !(obj1Left > obj2Width || obj1Width < obj2Left || obj1Top > obj2Height || obj1Height < obj2Top) ) {
return true;
}
return false;
}
点击重新开始之后刷新页面
好的,现在我们的游戏就可以玩了,这个游戏的有些写作思想有些是我们在以后的项目中可以学习的。比如,页面之外的空间的运用;比如,检测碰撞。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用Javascript能带来一定的帮助,如果有疑问大家可以留言交流。
原文链接:https://www.f2er.com/js/42872.html