📄 mypaopao.java
字号:
/**Author:GaoKun
*Date: 2005-3-9
*Title: MyPaoPao
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyPaoPao extends JLabel implements Runnable
{
int powerPaoPao=1; //泡泡的威力
Man man;
Image bombWave;
ImageIcon icoPaoPao;
Thread tPaoPao;
PaoPaoTang ppt; //定义一个主类的引用
int delay=0;
MyBox box[][]=new MyBox[14][16];
MyPanel pnl[][]=new MyPanel[14][16];
static MyPaoPao pp[][]=new MyPaoPao[14][16];
//泡泡对象的构造方法
public MyPaoPao(PaoPaoTang tempPPT)
{
ppt=tempPPT;
icoPaoPao=new ImageIcon("PaoPao.gif");
this.setIcon(icoPaoPao);
}
public void setMan(Man temp)
{
man=temp;
}
//将泡泡对象传过来
public void setPaoPao(MyPaoPao temp,int tempRow,int tempCol)
{
pp[tempRow][tempCol]=temp;
}
public void startUp() //启动泡泡的方法
{
tPaoPao=new Thread(this);
tPaoPao.start();
}
public void run()
{
while(delay<=5000)
{
try
{
Thread.sleep(10);
delay+=10;
}
catch(Exception e)
{
}
}
this.setIcon(new ImageIcon("paopaobombed.jpg"));
this.afterPaoPaoBomb();
}
//传递泡泡的威力
public void setPaoPaoValue(int power)
{
powerPaoPao=power;
}
public void setBox(MyBox temp[][])
{
for(int i=0;i<14;i++)
{
for(int j=0;j<16;j++)
{
box[i][j]=temp[i][j];
}
}
}
public void setMyPanel(MyPanel temp[][])
{
for(int i=0;i<14;i++)
{
for(int j=0;j<16;j++)
{
pnl[i][j]=temp[i][j];
}
}
}
//********************************
//擦除泡泡波的方法
private void eraserPaoPaoWaveUp(int temp,int r,int c)
{
for(int i=1;i<temp;i++)
{
if(box[r-i][c].haveEat==0)
continue;
box[r-i][c].setVisible(false);
pnl[r-i][c].setVisible(true);
pnl[r-i][c].repaint();
}
}
private void eraserPaoPaoWaveDown(int temp,int r,int c)
{
for(int i=1;i<temp;i++)
{
if(box[r+i][c].haveEat==0)
continue;
box[r+i][c].setVisible(false);
pnl[r+i][c].setVisible(true);
pnl[r+i][c].repaint();
}
}
private void eraserPaoPaoWaveLeft(int temp,int r,int c)
{
for(int i=1;i<temp;i++)
{
if(box[r][c-i].haveEat==0)
continue;
box[r][c-i].setVisible(false);
pnl[r][c-i].setVisible(true);
pnl[r][c-i].repaint();
}
}
private void eraserPaoPaoWaveRight(int temp,int r,int c)
{
for(int i=1;i<temp;i++)
{
if(box[r][c+i].haveEat==0)
continue;
box[r][c+i].setVisible(false);
pnl[r][c+i].setVisible(true);
pnl[r][c+i].repaint();
}
}
//*******************************************
void afterPaoPaoBomb()
{
int row=(this.getLocation().y+20)/40;
int col=(this.getLocation().x+20)/40;
int up=1;
int down=1;
int left=1;
int right=1;
//up-向上搜寻
for(up=1;up<=powerPaoPao;up++)
{
if((row-up)<0)
break;
if(pnl[row-up][col].haveMan==true)
{
man.setIcon(new ImageIcon("dead.gif"));
man.alive=false;
}
else if(pnl[row-up][col].haveBomb==true)
{
pp[row-up][col].delay=5001;
//break;
}
else if(box[row-up][col].boxIndex==0||box[row-up][col].isRoad==true)
{
if(box[row-up][col].boxIndex==0||box[row-up][col].boxIndex==2)
{
pnl[row-up][col].setVisible(false);
box[row-up][col].setIcon(new ImageIcon("wavecol.jpg"));
box[row-up][col].setVisible(true);
//*************************
//lagTime();
// box[row-up][col].setVisible(false);
//
// pnl[row-up][col].setVisible(true);
// pnl[row-up][col].repaint();
}
else
{
pnl[row-up][col].setVisible(false);
Icon tempIco=box[row-up][col].getIcon();
box[row-up][col].setIcon(new ImageIcon("wavecol.jpg"));
box[row-up][col].setVisible(true);
box[row-up][col].setIcon(tempIco);
}
}
else if(box[row-up][col].boxIndex==1)
{
box[row-up][col].boxBombed();
break;
}
else if(box[row-up][col].boxIndex==2)
{
box[row-up][col].isRoad=true;
box[row-up][col].setVisible(false);
pnl[row-up][col].setVisible(true);
pnl[row-up][col].repaint();
break;
}
else if((box[row-up][col].boxIndex==3)||(box[row-up][col].boxIndex==4)||(box[row-up][col].boxIndex==5))
{
box[row-up][col].boxBombed();
break;
}
}
//down-向下搜寻
for(down=1;down<=powerPaoPao;down++)
{
if((row+down)>13)
break;
if(pnl[row+down][col].haveMan==true)
{
man.setIcon(new ImageIcon("dead.gif"));
man.alive=false;
}
else if(pnl[row+down][col].haveBomb==true)
{
pp[row+down][col].delay=5001;
//break;
}
else if(box[row+down][col].boxIndex==0||box[row+down][col].isRoad==true)
{
if(box[row+down][col].boxIndex==0||box[row+down][col].boxIndex==2)
{
pnl[row+down][col].setVisible(false);
box[row+down][col].setIcon(new ImageIcon("wavecol.jpg"));
box[row+down][col].setVisible(true);
//*************************
//lagTime();
// box[row+down][col].setVisible(false);
// pnl[row+down][col].setVisible(true);
// pnl[row+down][col].repaint();
}
else
{
pnl[row+down][col].setVisible(false);
Icon tempIco=box[row+down][col].getIcon();
box[row+down][col].setIcon(new ImageIcon("wavecol.jpg"));
box[row+down][col].setVisible(true);
box[row+down][col].setIcon(tempIco);
}
}
else if(box[row+down][col].boxIndex==1)
{
box[row+down][col].boxBombed();
break;
}
else if(box[row+down][col].boxIndex==2)
{
box[row+down][col].isRoad=true;
box[row+down][col].setVisible(false);
pnl[row+down][col].setVisible(true);
pnl[row+down][col].repaint();
break;
}
else if(box[row+down][col].boxIndex==3||box[row+down][col].boxIndex==4||box[row+down][col].boxIndex==5)
{
box[row+down][col].boxBombed();
break;
}
}
//left-向左搜寻
for(left=1;left<=powerPaoPao;left++)
{
if((col-left)<0)
break;
if(pnl[row][col-left].haveMan==true)
{
man.setIcon(new ImageIcon("dead.gif"));
man.alive=false;
}
else if(pnl[row][col-left].haveBomb==true)
{
pp[row][col-left].delay=5001;
//break;
}
else if(box[row][col-left].boxIndex==0||box[row][col-left].isRoad==true)
{
if(box[row][col-left].boxIndex==0||box[row][col-left].boxIndex==2)
{
pnl[row][col-left].setVisible(false);
box[row][col-left].setIcon(new ImageIcon("waverow.jpg"));
box[row][col-left].setVisible(true);
//*************************
//lagTime();
// box[row][col-left].setVisible(false);
// pnl[row][col-left].setVisible(true);
// pnl[row][col-left].repaint();
}
else
{
pnl[row][col-left].setVisible(false);
Icon tempIco=box[row][col-left].getIcon();
box[row][col-left].setIcon(new ImageIcon("wavecol.jpg"));
box[row][col-left].setVisible(true);
box[row][col-left].setIcon(tempIco);
}
}
else if(box[row][col-left].boxIndex==1)
{
box[row][col-left].boxBombed();
break;
}
else if(box[row][col-left].boxIndex==2)
{
box[row][col-left].isRoad=true;
box[row][col-left].setVisible(false);
pnl[row][col-left].setVisible(true);
pnl[row][col-left].repaint();
break;
}
else if(box[row][col-left].boxIndex==3||box[row][col-left].boxIndex==4||box[row][col-left].boxIndex==5)
{
box[row][col-left].boxBombed();
break;
}
}
//right-向右搜寻
for(right=1;right<=powerPaoPao;right++)
{
if((col+right)>15)
break;
if(pnl[row][col+right].haveMan==true)
{
man.setIcon(new ImageIcon("dead.gif"));
man.alive=false;
}
else if(pnl[row][col+right].haveBomb==true)
{
pp[row][col+right].delay=5001;
//break;
}
else if(box[row][col+right].boxIndex==0||box[row][col+right].isRoad==true)
{
if(box[row][col+right].boxIndex==0||box[row][col+right].boxIndex==2)
{
pnl[row][col+right].setVisible(false);
box[row][col+right].setIcon(new ImageIcon("waverow.jpg"));
box[row][col+right].setVisible(true);
//*************************
//lagTime();
// box[row][col+right].setVisible(false);
// pnl[row][col+right].setVisible(true);
// pnl[row][col+right].repaint();
}
else
{
pnl[row][col+right].setVisible(false);
Icon tempIco=box[row][col+right].getIcon();
box[row][col+right].setIcon(new ImageIcon("wavecol.jpg"));
box[row][col+right].setVisible(true);
box[row][col+right].setIcon(tempIco);
}
}
else if(box[row][col+right].boxIndex==1)
{
box[row][col+right].boxBombed();
break;
}
else if(box[row][col+right].boxIndex==2)
{
box[row][col+right].isRoad=true;
box[row][col+right].setVisible(false);
pnl[row][col+right].setVisible(true);
pnl[row][col+right].repaint();
break;
}
else if(box[row][col+right].boxIndex==3||box[row][col+right].boxIndex==4||box[row][col+right].boxIndex==5)
{
box[row][col+right].boxBombed();
break;
}
}
try
{
Thread.sleep(350);
}
catch(Exception e)
{}
//将释放出来的炸弹波消掉
if(up>1)
{
eraserPaoPaoWaveUp(up,row,col);
}
if(down>1)
{
eraserPaoPaoWaveDown(down,row,col);
}
if(left>1)
{
eraserPaoPaoWaveLeft(left,row,col);
}
if(right>1)
{
eraserPaoPaoWaveRight(right,row,col);
}
//将中央的泡泡还原
man.number++; //将可以放的泡泡数还原
pnl[row][col].haveBomb=false;
this.setVisible(false);
ppt.remove(this);
pnl[row][col].setVisible(true);
pnl[row][col].repaint();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -