⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 popo.html

📁 HTML版泡泡堂
💻 HTML
📖 第 1 页 / 共 4 页
字号:
						this.Map[i][j] = "y";
						break;
					default:
						this.DrawBox(i*this.BoxWidth, j*this.BoxHeight, this.BoxWidth, this.BoxHeight, "box"+i+"_"+j, "");
						var PlayerIndex = parseInt(this.Map[i][j]);
						if (!isNaN(PlayerIndex))
						{
							this.InitPlayer(i, j, PlayerIndex);
						}
						this.Map[i][j] = " ";
				}
			}
		}
		for (var i=0; i<this.Player.length; i++)
		{
			if ("undefined"==typeof(this.Player[i])){
				this.InitPlayer(this.GetRnd(this.MapMaxX-4)+1, this.GetRnd(this.MapMaxY-4)+1, i);
				this.Player[i].auto = 1;
				this.Player[i].equip_remain[1] = 2;
				this.Player[i].equip_remain[2] = 1;
			}
			if (1==this.Player[i].auto)
			{
				this.Player[i].speed = 3;
			}
			this.FreshPlayerPos(i); //刷新
		}
		if (-1!=this.ControlPlayer[0]) {this.Player[this.ControlPlayer[0]].auto = 0; this.Player[this.ControlPlayer[0]].speed=1}
		if (-1!=this.ControlPlayer[1]) {this.Player[this.ControlPlayer[0]].auto = 0; this.Player[this.ControlPlayer[0]].speed=1}
	}
	
	//显示说话
	this.Say = function(n, str){
		//window.clearTimeout(this.SaysetTimeOut[n]);
		//document.getElementById("say"+n).innerText = str;
		//this.SaysetTimeOut[n] = setTimeout("document.getElementById('say"+n+"').innerText='';", parseInt(str.length*1000));
	}

	//被杀
	this.Kill = function(n) {
		if (2!=this.Player[n].state) return 0;
		this.PlaySound("挂掉");
		this.Player[n].state = 0;
		this.Player[n].x = 0;
		this.Player[n].y = 0;
		this.FreshPlayerPos(n);
		document.getElementById("head"+n).style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=10)"
		for (var i=1; i<=this.Player[n].popo; i++)
		{
			var x = this.GetRnd(this.MapMaxX-4)+1;
			var y = this.GetRnd(this.MapMaxY-4)+1;
			if (this.Map[x][y] == " ")
			{
				this.Map[x][y] = "n";
				this.ReDrawBox(x, y, this.EchoEquip(this.Map[x][y]));
			}
		}
		for (var i=1; i<=this.Player[n].power; i++)
		{
			var x = this.GetRnd(this.MapMaxX-4)+1;
			var y = this.GetRnd(this.MapMaxY-4)+1;
			if (this.Map[x][y] == " ")
			{
				this.Map[x][y] = "p";
				this.ReDrawBox(x, y, this.EchoEquip(this.Map[x][y]));
			}
		}
		for (var i=0; i<this.Player[n].equip_remain[0]; i++)
		{
			var x = this.GetRnd(this.MapMaxX-4)+1;
			var y = this.GetRnd(this.MapMaxY-4)+1;
			if (this.Map[x][y] == " ")
			{
				this.Map[x][y] = "t";
				this.ReDrawBox(x, y, this.EchoEquip(0));
			}
		}
		for (var i=0; i<this.Player[n].equip_remain[1]; i++)
		{
			var x = this.GetRnd(this.MapMaxX-4)+1;
			var y = this.GetRnd(this.MapMaxY-4)+1;
			if (this.Map[x][y] == " ")
			{
				this.Map[x][y] = "r";
				this.ReDrawBox(x, y, this.EchoEquip(1));
			}
		}
		for (var i=0; i<this.Player[n].equip_remain[2]; i++)
		{
			var x = this.GetRnd(this.MapMaxX-4)+1;
			var y = this.GetRnd(this.MapMaxY-4)+1;
			if (this.Map[x][y] == " ")
			{
				this.Map[x][y] = "f";
				this.ReDrawBox(x, y, this.EchoEquip(2));
			}
		}
		this.Statistics();
	}

	this.Campaign = function(self, other){
		if (self == other) return 0;
		if (this.Player[other].state == 2)
		{
			if (parseInt(self%2)==parseInt(other%2))
			{
				this.Recovery(other);
			}
			else
			{
				window.clearTimeout(this.DeadsetTimeOut[other]);
				this.Kill(other);
			}
		}
	}
	
	//移动选手
	this.Move = function(who){
		if (0==this.Player[who].state) return 0;
		var addx = 0;
		var addy = 0;
		var real_move = 1;
		switch(this.Player[who].direct)
		{
			case 0: addx++; break;
			case 1: addy--; break;
			case 2: addx--; break;
			case 3: addy++; break;
		}
		var old = this.Map[this.Player[who].x][this.Player[who].y];
		this.Player[who].x = addx+this.Player[who].x;
		this.Player[who].y = addy+this.Player[who].y;
		var str = " 01ygmnptrf";
		var str2 = " 01ygmknptrf"
		if (str.indexOf(this.Map[this.Player[who].x][this.Player[who].y]) != -1 || (this.Player[who].fly == 1 && str2.indexOf(this.Map[this.Player[who].x][this.Player[who].y]) != -1))
		{
			if (Math.abs(addx)>0) if ("y"==this.Map[this.Player[who].x-addx][this.Player[who].y-addy]) real_move = 0;
			switch(this.Map[this.Player[who].x][this.Player[who].y])
			{
				case "n": //泡泡
					this.Map[this.Player[who].x][this.Player[who].y] = " ";
					this.ReDrawBox(this.Player[who].x, this.Player[who].y, " ");
					this.Player[who].popo++;
					this.Player[who].remain++;
					this.Player[who].hidden = 0;
					this.PlaySound("捡道具");
					break;
				case "p": //威力
					this.Map[this.Player[who].x][this.Player[who].y] = " ";
					this.ReDrawBox(this.Player[who].x, this.Player[who].y, " ");
					this.Player[who].power++;
					this.Player[who].hidden = 0;
					this.PlaySound("捡道具");
					break;
				case "t": //踢
					this.Map[this.Player[who].x][this.Player[who].y] = " ";
					this.ReDrawBox(this.Player[who].x, this.Player[who].y, " ");
					this.Player[who].equip_remain[0]++;
					this.Player[who].hidden = 0;
					this.PlaySound("捡道具");
					break;
				case "r": //马上复活
					this.Map[this.Player[who].x][this.Player[who].y] = " ";
					this.ReDrawBox(this.Player[who].x, this.Player[who].y, " ");
					this.Player[who].equip_remain[1]++;
					this.Player[who].hidden = 0;
					this.PlaySound("捡道具");
					break;
				case "f": //飞碟
					this.Map[this.Player[who].x][this.Player[who].y] = " ";
					this.ReDrawBox(this.Player[who].x, this.Player[who].y, " ");
					this.Player[who].equip_remain[2]++;
					this.Player[who].hidden = 0;
					this.PlaySound("捡道具");
					break;
				case "g":
				case "m"://可移动砖块
					if (this.Map[this.Player[who].x+addx][this.Player[who].y+addy] == " ")
					{
						for (var i=0; i<this.Player.length; i++)
						{
							if (this.Player[i].state>0 && this.Player[i].x==(this.Player[who].x+addx) && this.Player[i].y==(this.Player[who].y+addy))
							{
								real_move = 0;
							}
						}
					}
					else
					{
						real_move = 0;
					}
					if (1 == real_move)
					{
						this.Map[this.Player[who].x+addx][this.Player[who].y+addy] = this.Map[this.Player[who].x][this.Player[who].y];
						this.ReDrawBox(this.Player[who].x+addx, this.Player[who].y+addy, "<img class='box' src='res/"+this.ResPath[this.MapIndex]+"/show_g.gif' />");
						this.Map[this.Player[who].x][this.Player[who].y] = " ";
						this.ReDrawBox(this.Player[who].x, this.Player[who].y, " ");
						if (this.GetRnd(3)>1) this.Say(who, '我推!');
					}
					this.Player[who].hidden = 0;
					break;
				case "y": //隐藏
					if (Math.abs(addx)>0)
					{
						real_move = 0;
					}
					else
					{
						this.Player[who].hidden = 1;
						this.PlaySound("放泡泡");
					}
					break;
				default:
					this.Player[who].hidden = 0;
					
			}
			if (real_move == 1)
			{
				this.FreshPlayerPos(who);
				this.Map[this.Player[who].x-addx][this.Player[who].y-addy] = old;
				this.FreshPanel();
				for (var i=0; i!=who,i<this.Player.length; i++)
				{
					if (this.Player[i].x == this.Player[who].x && this.Player[i].y == this.Player[who].y)
					{
						this.Campaign(who, i);
					}
				}
			}
			else
			{
				this.Player[who].x -= addx;
				this.Player[who].y -= addy;
			}
		}
		else
		{
			real_move = 0;
			this.Player[who].x -= addx;
			this.Player[who].y -= addy;
		}
		return real_move;
	}

	//安放炸弹
	this.Fix = function(who){
		if (this.Player[who].state != 1) return 0;
		var x = this.Player[who].x;
		var y = this.Player[who].y;
		var str = " 01y";
		if (this.Player[who].remain > 0 && str.indexOf(this.Map[x][y]) != -1)
		{
			for (var i=0; i<this.BulbMax; i++)
			{
				if (0 == this.Bulb[i].display)
				{
					this.PlaySound("放泡泡");
					this.Bulb[i] = new Bulb(x, y);
					this.Bulb[i].player = who;
					this.Bulb[i].power = this.Player[who].power;
					this.Bulb[i].wait = this.BulbWait;
					this.Bulb[i].display = 1;
					this.Map[x][y] = "b";
					this.BulbMap[x][y] = i;
					this.Player[who].remain--;
					return 0;
				}
			}
		}
	}

	//被炸到
	this.Dead = function(n){
		if (0 == this.Player[n].fly)
		{
			this.Player[n].state = 2;
			this.Player[n].speed = 5;
			window.clearTimeout(this.DeadsetTimeOut[n]);
			this.DeadsetTimeOut[n] = setTimeout(this.ClassName+".Kill("+n+");", this.PlayerRecovery);
			if (0==this.Player[n].equip_remain[1]) this.Say(n, "快救我!");
		}
		else
		{
			this.Player[n].fly = 0;
			if (this.GetRnd(3)>1) this.Say(n, "晕,飞碟没了!");
		}
		this.FreshPlayerPos(n);
	}

	//爆炸的具体处理过程
	this.DoBurst = function(x, y, dir){
		var GetEquip = " ";
		if ("y"==this.BackMap[x][y]) this.Map[x][y] = "y";
		switch(this.Map[x][y])
		{
			case "k":
				var brick = document.getElementById("brick"+x+"_"+y);
				if (brick) brick.innerHTML = ""; 
			case "g":
				switch(this.Equip[this.GetRnd(this.Equip.length-1)])
				{
					case "n":
						this.Map[x][y] = "n";
						GetEquip = this.EchoEquip(this.Map[x][y]);
						break;
					case "p":
						this.Map[x][y] = "p";
						GetEquip = this.EchoEquip(this.Map[x][y]);
						break;
					case "t":
						this.Map[x][y] = "t";
						GetEquip = this.EchoEquip(0);
						break;
					case "r":
						this.Map[x][y] = "r";
						GetEquip = this.EchoEquip(1);
						break;
					case "f":
						this.Map[x][y] = "f";
						GetEquip = this.EchoEquip(2);
						break;
					default:
						this.Map[x][y] = " ";
				}
				this.stop[dir] = 1;
				break;
			case "h":
			case "d":
			case "m":
				this.stop[dir] = 1;
				return 0;
				break;
			case "y":
				if ( "undefined"==typeof(dir) || (0==dir || 2==dir) )
				{
					this.stop[dir] = 1;
					return 0;
				}
				break;
			default:
				this.Map[x][y] = " ";
		}
		this.PlaySound("炸泡泡");
		this.ReDrawBox(x, y, "<img src='res/burst.gif' />");
		setTimeout(this.ClassName+".ReDrawBox("+x+", "+y+", \""+GetEquip+"\");", this.BulbBurst);

		for (var i=0; i<this.Player.length; i++)
		{
			if (1==this.Player[i].state && this.Player[i].x == x && this.Player[i].y == y)
			{
				this.Dead(i);
			}
		}
	}

	//连爆
	this.OtherBurst = function(x, y, n){
		if (-1!=this.BulbMap[x][y]) this.Bulb[this.BulbMap[x][y]].wait = 0;
	}
	
	//爆炸
	this.Burst = function(n){
		var x = this.Bulb[n].x;
		var y = this.Bulb[n].y;
		if (this.Player[this.Bulb[n].player].remain < this.Player[this.Bulb[n].player].popo) this.Player[this.Bulb[n].player].remain++;
		this.DoBurst(x, y, 0); //处理炸弹中心
		this.stop[0] = 0; this.stop[1] = 0; this.stop[2] = 0; this.stop[3] = 0;
		for (var i=1; i<=this.Bulb[n].power; i++)
		{
			//right
			x += i;
			if (!this.stop[0] && x < this.MapMaxX-1)
			{
				this.DoBurst(x, y, 0); this.OtherBurst(x, y, i);
			}
			x -= i;
			//up
			y += i;
			if (!this.stop[1] && y < this.MapMaxY-1)
			{
				this.DoBurst(x, y, 1); this.OtherBurst(x, y, i);
			}
			y -= i;
			//left
			x -= i;
			if (!this.stop[2] && x > 0)
			{
				this.DoBurst(x, y, 2); this.OtherBurst(x, y, i);
			}
			x += i;
			//down
			y -= i;
			if (!this.stop[3] && y > 0)
			{
				this.DoBurst(x, y, 3); this.OtherBurst(x, y, i);
			}
			y += i;
		}
		document.getElementById("bulb"+n).style.display = 'none';
		this.Bulb[n].display = 0;
		this.BulbMap[x][y] = -1;
	}

	//不断更新炸弹状态
	this.ShowBulb = function(){
		for (var i=0; i<this.BulbMax; i++)
		{
			var obj = document.getElementById("bulb"+i);
			if (this.Bulb[i].wait-- > 0)
			{
			    obj.style.left = this.Bulb[i].x*this.BoxWidth;
			    obj.style.top = this.Bulb[i].y*this.BoxHeight;
				obj.style.display = "";
				if (obj.tendency > 0)
				{
					this.Bulb[i].size++;
					if (this.Bulb[i].size > this.Bulb[i].size_max)
					{
						obj.tendency = 0;
					}
				}
				else
				{
					this.Bulb[i].size--;
					if (this.Bulb[i].size < this.Bulb[i].size_min)
					{
						obj.tendency = 1;
					}
				}
				obj.style.width = this.Bulb[i].size;
				obj.style.height = this.Bulb[i].size;
			}
			else if (this.Bulb[i].display > 0)
			{
				this.Burst(i);
			}
		}
	}

    //复活
	this.Recovery = function(n){
		this.Player[n].state=1;
		this.Player[n].speed = 1;
		window.clearTimeout(this.DeadsetTimeOut[n]);
		this.FreshPlayerPos(n);
	}
	
	//一个方向踢泡泡
	this.KickOne = function(n, dir){
		var x = this.Player[n].x;
		var y = this.Player[n].y;
		var real_dir = dir;
		if (this.Map[x][y] != "b")
		{
			switch(real_dir)
			{
				case 0:
					x++;
					break;
				case 1:
					y--;
					break;
				case 2:
					x--;
					break;
				case 3:
					y++;
					break;
				default:
			}
		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -