植物大战僵尸实训4(暂时完结)

植物大战僵尸实训4

   这是我的第四部分打僵尸的代码,僵尸吃和僵尸走到植物后还有一些问题,这部分代码和前面3部分和不到一起,要和一起,前三部分要用面向对象,此代码仅供参考。以下是实现效果(为展示效果,我把僵尸血量改成5):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>植物大战僵尸Javascript版 -- 植物战僵尸</title> 
<style type="text/css"> 
*{margin:0px;padding:0px;font-family: 宋体; font-size: 12px} 
.WindowFrame{position:absolute;width:900px;height:600px;overflow: hidden;border:3px outset/*边框突出*/ ;}
#tGround {position:absolute;width:1400px;height:600px;visibility:visible;z-index:0;background:url('images/interface/background1unsodded.jpg') -115px 0px no-repeat;}
#sod{position: absolute; height: 117px; width: 770px; top: 280px; left: 132px; z-index: 1; background-image: url( ./images/interface/sod1row.png); background-position: 0px 0px; background-repeat: no-repeat;}  
#dPlants,#dZombies{position:absolute;left:0;top:0;z-index:2}
#dPlants div{position: absolute; top: 294px; z-index: 9999;}
#dZombies div{position: absolute; top: 226px; z-index:22;}
#dPlants img{position: absolute;}
</style> 
<script type="text/javascript">
	window.onload = function(){
		var dPlants=document.getElementById("dPlants");
		var dAll=document.getElementById("dAll");
		var dZombies=document.getElementById("dZombies");
		function Plant(){
			this.zw=this.init();//初始化,this的是指这个Plant这个对象,this不能用在嵌套里,采用赋给别的量来实现
			this.blood=4;//植物4滴血
		}
		Plant.prototype.init=function(){//植物的初始化
			var zw=document.createElement("div");
			zw.innerHTML='<img src="images/interface/plantshadow32.png" style="left:-12px;top:49px;">' +
					'<img src="images/plant/Peashooter.gif">';
			return zw;
		}
		Plant.prototype.doPlant=function(top,left){
			this.zw.style.left=(left||200)+"px";
			this.zw.style.top=(top||294)+"px";
			dPlants.appendChild(this.zw);
		}
		Plant.prototype.attackMode=function(){//定义攻击方式
			//如何实现发生豌豆子弹
			var pd=document.createElement("img");
			pd.src='images/plant/PB00.gif';
			pd.style.position="absolute";
			pd.style.zIndex='888';
			pd.style.left=(this.zw.offsetLeft+30)+"px";
			pd.style.top=(this.zw.offsetTop+3)+"px";
			dZombies.appendChild(pd);
			return pd;
		}
		Plant.prototype.attack=function(zombie){//攻击
			var This=this;
			this.attackTimer=setInterval(function(){
				var pd=This.attackMode();
				var pdTimer=setInterval(function(){
					pd.style.left=(pd.offsetLeft+11)+"px";
					if(pd.offsetLeft>=dAll.offsetWidth){
						clearInterval(pdTimer);
						pdTimer=null;

						dZombies.removeChild(pd);
					}else if(pd.offsetLeft>=zombie.js.offsetLeft+40){
						clearInterval(pdTimer);
						pdTimer=null;
						pd.src="images/plant/PeaBulletHit.gif";//替换图片,实现爆炸
						setTimeout(function(){
							dZombies.removeChild(pd);
						},300);
						zombie.blood--;
						if(This.zw.left>=zombie.js.offsetLeft+40&&This.blood!=0&&zombie.blood!=0){
							This.blood--;
							if(This.blood==0){
								This.die();
							}else{
								if(zombie.blood>2){
									zombie.eat();
								}else if(zombie.blood==2){
									zombie.lossHead();
								}else if(zombie.blood==1){
									zombie.noHeadEat();
								}else if(zombie.blood==0){
									zombie.die();
									This.stop();
								}
							}
						}else{
							if(zombie.blood>2){
								zombie.walk();
							}else if(zombie.blood==2){
								zombie.lossHead();
								zombie.lossHeadWalk();
							}else if(zombie.blood==1){
								zombie.lossHeadWalk();
							}else if(zombie.blood==0){
								zombie.die();
								This.stop();
							}
						}
					}
				},80);
			},2000);
		}
		Plant.prototype.stop=function(){//停止攻击
			clearInterval(this.attackTimer);
			this.attackTimer=null;
		}
		Plant.prototype.die=function(){	//死亡
			this.stop();
			dPlants.removeChild(this.zw);
		}
		function Zombie(){	//定义僵尸
			this.js=this.init();
			this.blood=10;
		}
		Zombie.prototype.init=function(){	//僵尸初始化
			var js=document.createElement("div");
			js.innerHTML='<img src="images/interface/plantshadow32.png" style="position:absolute;left:72px;top:122px;">' +
					'<img src="images/Zombies/Zombie.gif">';//僵尸的定位
			js.style.left=700+"px";
			dZombies.appendChild(js);
			return js;
		}
		Zombie.prototype.walk=function(){//僵尸行走
			if(this.walkTimer==null) {
				var This=this;
				var imgs=this.js.getElementsByTagName("img");
				imgs[1].src='images/Zombies/Zombie.gif';
				this.walkTimer = setInterval(function () {
					This.js.style.left = (This.js.offsetLeft - 1) + "px";

				}, 80);
			}
		}
		Zombie.prototype.lossHeadWalk=function(){//无头僵尸行走
			//alert(12);
			var This=this;
			//原因:用于将僵尸吃改成走
			var imgs=this.js.getElementsByTagName("img");

			imgs[1].src='images/Zombies/ZombieLostHead.gif';
			if(this.walkTimer==null) {
				//僵尸每1秒行走1px
				this.walkTimer = setInterval(function () {
					This.js.style.left = (This.js.offsetLeft - 1) + "px";
				}, 80);
			}
		}
		Zombie.prototype.lossHead=function(){//僵尸掉头
			var head=document.createElement("img");
			head.src='images/Zombies/ZombieHead.gif';
			head.style.position="absolute";
			head.style.left=(this.js.offsetLeft+38)+"px";
			head.style.top=this.js.offsetTop+"px";
			head.style.zIndex="23";

			dZombies.appendChild(head);
			setTimeout(function(){
				dZombies.removeChild(head);
			},800);
		}

		Zombie.prototype.eat=function(){//僵尸吃
			//僵尸停止行走
			clearInterval(this.walkTimer);
			this.walkTimer=null;
			var imgs=this.js.getElementsByTagName("img");
			imgs[1].src='images/Zombies/ZombieAttack.gif';
		}

		Zombie.prototype.noHeadEat=function(){//无头僵尸吃
			clearInterval(this.walkTimer);//僵尸停止行走
			this.walkTimer=null;
			var imgs=this.js.getElementsByTagName("img");
			imgs[1].src='images/Zombies/ZombieLostHeadAttack.gif';
		}
		Zombie.prototype.die=function(){//僵尸死亡
			//僵尸停止行走
			clearInterval(this.walkTimer);
			this.walkTimer=null;
			var imgs=this.js.getElementsByTagName("img");
			imgs[1].src='images/Zombies/ZombieDie.gif';
			this.clean();
		}
		Zombie.prototype.clean=function(){//僵尸消失
			var This=this;
			setTimeout(function(){
				dZombies.removeChild(This.js);
			},2000);
		}
		var zombie=new Zombie();
		zombie.walk();
		var plant=new Plant();
		plant.doPlant();
		plant.attack(zombie);
	}

</script> 
</head>  
<body id="dBody"   bgcolor="#008080">   
<!--主界面EDAll-->
<div class="WindowFrame" id="dAll"> 
	<div id="tGround"><!--背景图片--></div>   
    <div id="sod"><!--草地背景--></div>  
    <div id="dPlants"></div> <!--植物容器-->
    <div id="dZombies"></div> <!--僵尸容器-->
</div>  
</body>
</html>

 

 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值