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

📄 man.java

📁 源码!希望大家能够喜欢!还有一些小错误!忘大家指出!
💻 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 + -