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

📄 popo.html

📁 HTML版泡泡堂
💻 HTML
📖 第 1 页 / 共 4 页
字号:
				if (Math.abs(x-this.Bulb[i].x)<=this.Bulb[i].power && y==this.Bulb[i].y) return 0;
				if (Math.abs(y-this.Bulb[i].y)<=this.Bulb[i].power && x==this.Bulb[i].x) return 0;
			}
		}
		return 1;
	}

	//检查定制线路
	this.AutoLine = function(n){
		if (this.Player[n].movepath.length>0)
		{
			var arr = this.Player[n].movepath.shift();
			if (arr[0]>this.Player[n].x)
			{
				this.Player[n].direct = 0;
			}
			else if (arr[0]<this.Player[n].x)
			{
				this.Player[n].direct = 2;
			}
			else
			{
				if (arr[1]>this.Player[n].y)
				{
					this.Player[n].direct = 3;
				}
				else
				{
					this.Player[n].direct = 1;
				}
			}
			if (0==this.Move(n)) this.Player[n].movepath.length=0;
			return 0;
		}
		return 1;
	}

	//检查定制目标
	this.AutoTask = function(n){
		if (this.Player[n].moveto[0]>0)
		{
			if ( (this.Player[n].x==this.Player[n].moveto[0] && this.Player[n].y==this.Player[n].moveto[1]) || 0==this.Move(n) )
			{
				this.Player[n].moveto[0] = 0; this.Player[n].moveto[1] = 0;
				return 1;
			}
			else
			{
				return 0;
			}
		}
		return 1;
	}

	//任务方向
	this.AutoSetTaskDirect = function(n){
		if (this.Player[n].moveto[0] == this.Player[n].x) //竖直方向
		{
			if (this.Player[n].moveto[1] > this.Player[n].y)
			{
				this.Player[n].direct = 3;
			}
			else
			{
				this.Player[n].direct = 1;
			}
		}
		else
		{
			if (this.Player[n].moveto[0] > this.Player[n].x)
			{
				this.Player[n].direct = 0;
			}
			else
			{
				this.Player[n].direct = 2;
			}
		}
	}

	//追踪敌人
	this.AutoFollow = function(n){
		if (this.Player[n].movepath.length > 0) return 0;
		for (var i=0; i<this.Player.length; i++)
		{
			if (i%2!=n%2 && 1==this.Player[i].state)
			{
				if (1 == this.FindPath(this.Player[n].x, this.Player[n].y, this.Player[i].x, this.Player[i].y, n, 0))
				{
					this.Player[n].movepath.length = 0; //移除当前任务
					this.FindPath(this.Player[n].x, this.Player[n].y, this.Player[i].x, this.Player[i].y, n, 1);
					this.ShortPath(n);
					if (this.GetRnd(10)>8) this.Say(n, "不信挂不了你!");
					return 0;
				}
			}
		}
		return 1;
	}

	//检查是否有友方或敌方被炸到
	this.AutoCheckPlayer = function(n){
		for (var i=0; i<this.Player.length; i++)
		{
			if (i!=n && 2==this.Player[i].state)
			{
				if (1 == this.FindPath(this.Player[n].x, this.Player[n].y, this.Player[i].x, this.Player[i].y, n, 0))
				{
					this.Player[n].movepath.length = 0; //移除当前任务
					this.FindPath(this.Player[n].x, this.Player[n].y, this.Player[i].x, this.Player[i].y, n, 1);
					this.ShortPath(n);
					this.Say(n, i%2==n%2?"我救你!":"挂了你!");
					return 0;
				}
			}
		}
		return 1;
	}

	//道具检查
	this.AutoCheckEquip = function(n){
		if (this.Player[n].moveto[0] > 0) return 0; 
		var len = this.Equip.length;
		var temp = 0;
		var str = "";
		for (var i=0; i<len; i++)
		{
			str = ""+this.Equip[i]+"";
			if (str.length = 0) continue;
			temp = this.AutoFind(0, str, n);
			if (temp > 0)
			{
				this.Player[n].moveto[0] = temp;
				this.Player[n].moveto[1] = this.Player[n].y;
				this.AutoSetTaskDirect(n);
				this.Say(n, "我抢!" );
			}
			else
			{
				temp = this.AutoFind(1, str, n);
				if (temp > 0)
				{
					this.Player[n].moveto[0] = this.Player[n].x;
					this.Player[n].moveto[1] = temp;
					this.AutoSetTaskDirect(n);
					this.Say(n, "我抢!" );
				}
			}
		}
		return 1;
	}

	//放泡泡攻击敌方
	this.AutoBulb = function(n){
		if (this.GetRnd(5)>0 && this.Player[n].popo>4)
		{
			this.Fix(n);
		}
		else
		{
			for (var i=0; i<this.Player.length; i++)
			{
				if (i%2!=n%2 && this.Player[i].state>0  && Math.abs(this.Player[i].x-this.Player[n].x)<=this.Player[n].power && Math.abs(this.Player[i].y-this.Player[n].y)<=this.Player[n].power)
				{
					this.Fix(n);
					return 0;
				}
			}
		}
	}

	//自动使用道具
	this.AutoUseEquip = function(n, i){
		while(this.Player[n].equip_current != i)
		{
			this.Alternate(n);
		}
		this.UseEquip(n);
	}
	
	//自动操作
	this.AutoPlay = function(n){
		switch(this.GetRnd(300))
		{
			case 0: this.Say(n, '手气不错!'); break;
			case 1: this.Say(n, '玩得没什么味!'); break;
			case 2: this.Say(n, '按键太不灵敏了!'); break;
			case 3: this.Say(n, '呵呵!'); break;
			case 4: this.Say(n, '嘿嘿!'); break;
			case 5: this.Say(n, '嘟嘟嘟!'); break;
			case 6: this.Say(n, '好慢!'); break;
			case 7: this.Say(n, '...'); break;
			case 8: this.Say(n, '!'); break;
			case 9: this.Say(n, '汗!'); break;
			case 10: this.Say(n, '晕!'); break;
			case 11: this.Say(n, '吼!'); break;
			case 12: this.Say(n, '刚刚谁炸我?'); break;
			case 13: this.Say(n, '加油!'); break;
			case 14: this.Say(n, '我炸!'); break;
			case 15: this.Say(n, '???'); break;
		}
		switch(this.Player[n].state)
		{
			case 2: //被炸到
				this.AutoUseEquip(n, 1);
				break;
			case 1: //正常状态
				if (0 == this.Player[n].fly) this.AutoUseEquip(n, 2);
			
				if (0 != this.AutoCheckPlayer(n)) //检查是否有队友或敌人被炸到
				{
					if (0 != this.AutoAvoid(n)) //逃避泡泡
					{ 
						if (0 != this.AutoCheckEquip(n)) //检查是否有道具捡
						{        
							if (this.GetRnd(3)>0 && this.Player[n].popo>4)
							{
								this.AutoFollow(n);           //跟踪敌人
								this.AutoBulb(n);
							}
						}
					}
				}

				if (0 == this.AutoLine(n)) return 0;
				if (0 == this.AutoTask(n)) return 0;

				var x = this.Player[n].x;
				var y = this.Player[n].y;
				switch(this.Player[n].direct)
				{
					case 0:
						x++; break;
					case 1:
						y--; break;
					case 2:
						x--; break;
					case 3:
						y++; break;
				}
				if (x<=0 || x>=this.MapMaxX || y<=0 || y>=this.MapMaxY) //出界
				{
					this.Player[n].direct = this.GetRnd(3);
				}
				else
				{
					if (0==this.AutoIsSafe(x, y) && -1==this.BulbMap[this.Player[n].x][this.Player[n].y])
					{
						this.Player[n].direct = this.GetRnd(3);
						return 0;
					}

					var temp = 0;

					switch(this.Map[x][y])
					{
						case "h":
							temp = this.GetRnd(10);
							if (temp > 1)
							{
								this.Player[n].direct = this.GetRnd(3);
							}
							else
							{
								this.Fix(n);
							}
							break;
						case "k": 
							temp = this.GetRnd(10);
							if (this.Player[n].fly == 0 || this.GetRnd(10) > 4)
							{
								if (temp > 3)
								{
									this.Fix(n);
								}
								else
								{
									this.Player[n].direct = this.GetRnd(3);
								}
							}
							else
							{
								if (temp > 3)
								{
									this.Move(n);
								}
								else if (temp > 1)
								{
									this.Player[n].direct = this.GetRnd(3);
								}
							}
							break;
						case "g": 
							temp = this.GetRnd(10);
							if (temp > 4)
							{
								this.Move(n);
							}
							else if (temp > 2)
							{
								this.Fix(n);
							}
							else
							{
								this.Player[n].direct = this.GetRnd(3);
							}
							break;
						case "m": 
							temp = this.GetRnd(10);
							if (temp > 4)
							{
								this.Move(n);
							}
							else if (temp > 2)
							{
								this.Player[n].direct = this.GetRnd(3);
							}
							else
							{
								this.Fix(n);
							}
							break;
						case "b":
							temp = this.GetRnd(10);
							this.AutoUseEquip(n, 0);
							this.Player[n].direct = this.GetRnd(3);
							break;
						case " ":
							temp = this.GetRnd(10);
							if (temp>1 && 1==this.AutoIsSafe(this.Player[n].x, this.Player[n].y))
								this.Move(n);
							else
								this.Player[n].direct = this.GetRnd(3);
							this.AutoBulb(n);
							break;
						case "t":
						case "r":
						case "f":
						case "n":
						case "p":
							if (this.AutoIsSafe(this.Player[n].x, this.Player[n].y))
								this.Move(n);
							else
								this.Player[n].direct = this.GetRnd(3);
							break;
						case "y":
							if (0==this.Player[n].direct && 2==this.Player[n].direct)
							{
								temp = this.GetRnd(10);
								if (temp>1 && 1==this.AutoIsSafe(this.Player[n].x, this.Player[n].y))
									this.Move(n);
								else
									this.Player[n].direct = this.GetRnd(3);
								this.AutoBulb(n);
								break;
							}
						default:
							this.Player[n].direct = this.GetRnd(3);
							this.Move(n);
					}
				}
				break;
		}
	}

	this.Play = function(){
		for (var i=0; i<this.Player.length; i++)
		{
			this.Player[i].speed_count--;
			if (this.Player[i].speed_count < 0) this.Player[i].speed_count = this.Player[i].speed;
			if (this.Player[i].speed_count == 0)
			{
				if (0 == this.Player[i].auto)
				{
					if (1 == this.Player[i].go) this.Move(i);
				}
				else
				{
					this.AutoPlay(i);
				}
			}
		}
	}
	
	//统计胜负
	this.Statistics = function(){
		if (1==this.isend) return 0;
		var arr = new Array(0, 0);
		var num = parseInt(this.Player.length/2)
		for (var i=0; i<this.Player.length; i++)
		{
			if (0 == this.Player[i].state)
			{
				arr[i%2]++;
			}
		}
		if (arr[0]>=num || arr[1]>=num)
		{
			this.isend = 1;
			var str = "";
			if (this.Player[0].auto==this.Player[1].auto)
			{
				str = (arr[0]>arr[1]?"单":"双")+"号胜!"
			}
			else
			{
				var win = arr[0]>arr[1]?1:0;
				str = (0==this.Player[win].auto?"玩家":"电脑")+"胜!"
			}
			this.End(str);
		}
	}

	this.SwitchMainSound = function(n){
		if (1==n)
		{
			document.getElementById("sound_main").src = "res/"+this.ResPath[this.MapIndex]+"/bgsound.wav";
		}
		else
		{
			document.getElementById("sound_main").src = "";
		}
		
	}

	this.PlaySound = function(dowhat){
		if (0==this.SoundTurn) return 0;
		var path = "";
		this.SoundTurn++;
		if (this.SoundTurn>5) this.SoundTurn = 1;
		switch(dowhat)
		{
			case "放泡泡": path="100.wav"; break;
			case "炸泡泡": path="101.wav"; break;
			case "捡道具": path="001.wav"; break;
			case "挂掉": path="201.wav"; break;
			case "换道具": path="102.wav"; break;
		}
		document.getElementById("sound_current_"+this.SoundTurn).src = "res/music/"+path;
	}

	this.Loop = function(){
		this.Play();
		this.ShowBulb();
	}
	
	this.End = function(str){
		window.clearInterval(this.Itv);
		Canvas.insertAdjacentHTML("beforeEnd","<span id='showresult' style='position:absolute;left:"+((this.MapMaxX/2)*this.BoxWidth-80)+";top:"+((this.MapMaxY/2)*this.BoxHeight-40)+";z-index:100;width:400;height:100;color:white;font-size:28px;'>"+str+"</span>");
		setTimeout("location.reload();", 5000);
	}

	this.Begin = function(){
		this.InitMap();
		this.InitPanel();
		this.SwitchMainSound(1);
		this.InitBulb(this.BulbMax);
		this.Itv = window.setInterval(""+this.ClassName+".Loop()", 10); //主进程
	}
}

var game = new Popo("game");
game.Begin();

function document.onkeydown(){game.Control(0)}
function document.onkeyup(){game.Control(1)}
//-->
</SCRIPT>
</body>
</html>

⌨️ 快捷键说明

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