📄 popo.html
字号:
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 + -