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