📄 man.java
字号:
/**Author:GaoKun
*Date: 2005-3-10
*Title: Man
*
*way:
*1-up
*2-down
*3-left
*4-right
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Man extends JLabel implements Runnable
{
//Thread tMe,tPPT;
int way=-1;
int moveLength=1;
int power=1; //人物的泡泡的威力
int number=1; //可以放泡泡的个数
boolean alive=true;
boolean isRoad=false;
boolean isTrue=true; //为了生成2个不同的对象
boolean f=true;
int peopleX=-1;
int peopleY=-1;
ImageIcon ico;
PaoPaoTang ppt; //定义了一个主类的引用
MyPaoPao pp; //定义了一个泡泡类的二维数组引用
MyPanel panl[][]=new MyPanel[14][16];
MyBox box[][]=new MyBox[14][16];
public Man(PaoPaoTang tempPPT,boolean tempIsTrue)
{
ppt=tempPPT;
isTrue=tempIsTrue;
ico=new ImageIcon("pdown1.gif");
setIcon(ico);
ppt.addKeyListener(new MyKey());
}
public void setPeopleLocation(int tX,int tY)
{
if(isTrue)
{
peopleX=tX;
peopleY=tY;
}
else
{
peopleX=tX;
peopleY=tY;
}
}
public void setMyBox(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++)
{
panl[i][j]=temp[i][j];
}
}
}
public void run()
{
// if(isTrue)
// {
// ppt.addKeyListener(new MyKey());
// while(true)
// {
//
// try
// {
// Thread.sleep(50);
// }
// catch(Exception e)
// {}
//
// }
// }
// else
// {
// ppt.addKeyListener(new MyKey());
// while(true)
// {
//
// try
// {
// Thread.sleep(50);
// }
// catch(Exception e)
// {}
//
// }
// }
//
}
class MyKey extends KeyAdapter
{
//放泡泡的方法
private void putPaoPao(int tempX,int tempY)
{
//只有地板上没有泡泡的时候才能放泡泡
if(panl[(tempY+20)/40][(tempX+20)/40].haveBomb==false)
{
if(number>0)
{
panl[(tempY+20)/40][(tempX+20)/40].haveBomb=true;
panl[(tempY+20)/40][(tempX+20)/40].setVisible(false);
pp=new MyPaoPao(ppt);
pp.setMan(Man.this);
number--;
pp.setPaoPaoValue(power);
//重要:生成的对象放入MyPaoPao类中的一个静态变量中,让所有生成的泡泡对象都可以访问
pp.setPaoPao(pp,(tempY+20)/40,(tempX+20)/40);
pp.setBox(box);
pp.setMyPanel(panl);
pp.setBounds((tempX+20)/40*40,(tempY+20)/40*40,40,40);
ppt.getContentPane().add(pp);
ppt.repaint();
pp.startUp();
}
}
}
public void keyPressed(KeyEvent e)
{
if(isTrue)
{
if(e.getKeyCode()==e.VK_W)
{
if(f)
{
Man.this.setIcon(new ImageIcon("playerup1.gif"));
f=false;
}
way=1;
}
else if(e.getKeyCode()==e.VK_S)
{
if(f)
{
Man.this.setIcon(new ImageIcon("playerdown1.gif"));
f=false;
}
way=2;
}
else if(e.getKeyCode()==e.VK_A)
{
if(f)
{
Man.this.setIcon(new ImageIcon("playerleft1.gif"));
f=false;
}
way=3;
}
else if(e.getKeyCode()==e.VK_D)
{
if(f)
{
Man.this.setIcon(new ImageIcon("playerright1.gif"));
f=false;
}
way=4;
}
}
else
{
if(e.getKeyCode()==e.VK_UP)
{
if(f)
{
Man.this.setIcon(new ImageIcon("playerup1.gif"));
f=false;
}
way=1;
}
else if(e.getKeyCode()==e.VK_DOWN)
{
if(f)
{
Man.this.setIcon(new ImageIcon("playerdown1.gif"));
f=false;
}
way=2;
}
else if(e.getKeyCode()==e.VK_LEFT)
{
if(f)
{
Man.this.setIcon(new ImageIcon("playerleft1.gif"));
f=false;
}
way=3;
}
else if(e.getKeyCode()==e.VK_RIGHT)
{
if(f)
{
Man.this.setIcon(new ImageIcon("playerright1.gif"));
f=false;
}
way=4;
}
}
Man.this.manMove();
way=-1;
}
public void keyReleased(KeyEvent e)
{
int intX=Man.this.getLocation().x;
int intY=Man.this.getLocation().y;
if(isTrue)
{
if(e.getKeyCode()==e.VK_W)
{
Man.this.setIcon(new ImageIcon("pup1.gif"));
f=true;
}
else if(e.getKeyCode()==e.VK_S)
{
Man.this.setIcon(new ImageIcon("pdown1.gif"));
f=true;
}
else if(e.getKeyCode()==e.VK_A)
{
Man.this.setIcon(new ImageIcon("pleft1.gif"));
f=true;
}
else if(e.getKeyCode()==e.VK_D)
{
Man.this.setIcon(new ImageIcon("pright1.gif"));
f=true;
}
else if(e.getKeyCode()==e.VK_SPACE)
{
putPaoPao(intX,intY);
}
}
else
{
if(e.getKeyCode()==e.VK_UP)
{
Man.this.setIcon(new ImageIcon("pup1.gif"));
f=true;
}
else if(e.getKeyCode()==e.VK_DOWN)
{
Man.this.setIcon(new ImageIcon("pdown1.gif"));
f=true;
}
else if(e.getKeyCode()==e.VK_LEFT)
{
Man.this.setIcon(new ImageIcon("pleft1.gif"));
f=true;
}
else if(e.getKeyCode()==e.VK_RIGHT)
{
Man.this.setIcon(new ImageIcon("pright1.gif"));
f=true;
}
else if(e.getKeyCode()==e.VK_NUMPAD0)
{
putPaoPao(intX,intY);
}
}
}
}
//人物吃东西的行为
private void manEat()
{
int row=(this.getLocation().y+20)/40;
int col=(this.getLocation().x+20)/40;
if(box[row][col].boxIndex==3||box[row][col].boxIndex==4||box[row][col].boxIndex==5)
{
if(box[row][col].boxIndex==3)
{
this.power++;
}
else if(box[row][col].boxIndex==4)
{
number++;
}
else if(box[row][col].boxIndex==5)
{
if(moveLength<=10)
this.moveLength++;
}
box[row][col].boxIndex=0;
box[row][col].haveEat=1;
box[row][col].setVisible(false);
panl[row][col].setVisible(true);
panl[row][col].repaint();
}
}
void setHaveMan(int X,int Y)
{
System.out.println(peopleX);
System.out.println(peopleY);
if(((Y+20)/40!=peopleX)||((X+20)/40!=peopleY))
{
panl[peopleX][peopleY].haveMan=false;
peopleX=(Y+20)/40;
peopleY=(X+20)/40;
panl[peopleX][peopleY].haveMan=true;
System.out.println(peopleX);
System.out.println(peopleY);
}
}
public void manMove()
{
int x=this.getLocation().x;
int y=this.getLocation().y;
try
{
switch(way)
{
case 1:
if(panl[(y+20-40)/40][(x+20)/40].haveBomb==false)
{
if(box[(y+20-20-1)/40][(x+20)/40].boxIndex==0||box[(y+20-20-1)/40][(x+20)/40].isRoad==true)
{
if(box[(y+20-20-1-moveLength)/40][(x+20)/40].boxIndex==0||box[(y+20-20-1-moveLength)/40][(x+20)/40].isRoad==true)
{
this.move(x,y-moveLength);
manEat();
}
else
{
this.move(((x+20)/40*40),((y+20)/40*40));
manEat();
}
setHaveMan(x,y);
}
}
break;
case 2:
if(panl[(y+20+40)/40][(x+20)/40].haveBomb==false)
{
if(box[(y+20+20+1)/40][(x+20)/40].boxIndex==0||box[(y+20+20+1)/40][(x+20)/40].isRoad==true)
{
if(box[(y+20+20+1+moveLength)/40][(x+20)/40].boxIndex==0||box[(y+20+20+1+moveLength)/40][(x+20)/40].isRoad==true)
{
//if((x+20)%20==0)
this.move(x,y+moveLength);
manEat();
}
else
{
this.move(((x+20)/40*40),((y+20)/40*40));
manEat();
}
setHaveMan(x,y);
}
}
break;
case 3:
if(panl[(y+20)/40][(x+20-40)/40].haveBomb==false)
{
if(box[(y+20)/40][(x+20-20-1)/40].boxIndex==0||box[(y+20)/40][(x+20-20-1)/40].isRoad==true)
{
if(box[(y+20)/40][(x+20-20-1-moveLength)/40].boxIndex==0||box[(y+20)/40][(x+20-20-1-moveLength)/40].isRoad==true)
{
this.move(x-moveLength,y);
manEat();
}
else
{
this.move(((x+20)/40*40),((y+20)/40*40));
manEat();
}
setHaveMan(x,y);
}
}
break;
case 4:
if(panl[(y+20)/40][(x+20+40)/40].haveBomb==false)
{
if(box[(y+20)/40][(x+20+20+1)/40].boxIndex==0||box[(y+20)/40][(x+20+20+1)/40].isRoad==true)
{
if(box[(y+20)/40][(x+20+20+1+moveLength)/40].boxIndex==0||box[(y+20)/40][(x+20+20+1+moveLength)/40].isRoad==true)
{
this.move(x+moveLength,y);
manEat();
}
else
{
this.move(((x+20)/40*40),((y+20)/40*40));
manEat();
}
setHaveMan(x,y);
}
}
break;
default:
break;
}
}
catch(ArrayIndexOutOfBoundsException e)
{}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -