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

📄 bullet.java

📁 1。支持双人连线 (适用于TCP/IP
💻 JAVA
字号:
import java.awt.*;

public class bullet implements Actor{
	public final Rectangle map = new Rectangle(18, 18, 486, 486);
	private Rectangle border;
	private int direction;
	private int Speed;
	private int bulletpower;
	public int xPos, yPos;
	public Actor owner;
	public ServerModel gameModel;
	public boolean hitTarget;

	public bullet(int a, int b, int c, int d, int e, Actor owner, ServerModel gameModel){
		this.owner = owner;
		this.gameModel = gameModel;
		xPos = a; yPos = b;
		direction = c;
		if(direction == 0 || direction == 1)
			border = new Rectangle(a - 2, b - 5, 5, 13);
		else
			border = new Rectangle(a - 5, b - 2, 13, 5);

		Speed = d;
		bulletpower = e;
	}

	public void draw(Graphics g) {
		g.setColor(Color.lightGray);
		if(direction == 0 || direction == 1)
			g.fillRect(border.x + 1, border.y +1, 3, 9);
		if(direction == 2 || direction == 3)
			g.fillRect(border.x +1, border.y + 1, 9, 3);
	}

	public void move(){
		if(gameModel.gamePaused){
			writeToOutputLine();
			return;
		}


		//check if this bullet crash with the map border
		if(!border.intersects(map)){
			gameModel.removeActor(this);
			notifiyOwner();
			makeBomb();
			writeToOutputLine();
			return;
		}
		//check if this bullet hit other objects
		for(int i = 0; i < gameModel.actors.length; i++){
			if(gameModel.actors[i] != null){
				if(gameModel.actors[i] != this && gameModel.actors[i] != owner){
					if(border.intersects(gameModel.actors[i].getBorder())){

						if(gameModel.actors[i].getType().equals("steelWall")){
							Steelwall temp = (Steelwall)gameModel.actors[i];
							if(!temp.walldestoried){
								temp.damageWall(border,  bulletpower, direction);
								if(temp.bulletdestoried)
									hitTarget = true;
							}
						}else if(gameModel.actors[i].getType().equals("wall")){
							wall temp = (wall)gameModel.actors[i];
							if(!temp.walldestoried){
								temp.damageWall(border,  bulletpower, direction);
								if(temp.bulletdestoried)
									hitTarget = true;
							}
						}else if(gameModel.actors[i].getType().equals("bullet")){
							bullet temp = (bullet)gameModel.actors[i];
							if(temp.owner.getType().equals("Player")){
								hitTarget = true;
								gameModel.removeActor(gameModel.actors[i]);
								temp.notifiyOwner();
							}
						}else if(gameModel.actors[i].getType().equals("Player")){
							if(owner.getType().equals("enemy")){
								player temp = (player)gameModel.actors[i];
							    temp.hurt();
							}else{
							}
							hitTarget = true;
						}else if(gameModel.actors[i].getType().equals("enemy") && owner.getType().equals("Player")){
							enemy temp = (enemy)gameModel.actors[i];
							player tempe = (player)owner;
							if(temp.health == 0)
								tempe.scores+=temp.type*100;
							temp.hurt();
							hitTarget = true;
						}else if(gameModel.actors[i].getType().equals("base")){
							base temp = (base)gameModel.actors[i];
							temp.doom();
							hitTarget = true;
							gameModel.gameOver = true;
						}
					}
				}
			}
		}

		//if the bullet hit other objects, then remove this bullet objects from the game system
		if(hitTarget){
			gameModel.removeActor(this);
			notifiyOwner();
			makeBomb();
			writeToOutputLine();
			return;
		}

		if(direction == 0){
				border.y -= Speed;
				yPos -= Speed;
			}
			if(direction == 1){
				border.y += Speed;
				yPos += Speed;
			}
			if(direction == 2){
				border.x -= Speed;
				xPos -= Speed;
			}
			if(direction == 3){
				border.x += Speed;
				xPos += Speed;
		}
		writeToOutputLine();
	}

	public void writeToOutputLine(){
		gameModel.outputLine+="t"+ xPos + "," + yPos + "," + direction + ";";
	}

	public Rectangle getBorder(){
		return border;
	}

	public String getType(){
		return "bullet";
	}

	public void notifiyOwner(){
			if(owner != null){
				if(owner.getType().equals("Player")){
					player temp = (player)owner;
					temp.numberOfBullet++;
				}else if(owner.getType().equals("enemy")){
					enemy temp = (enemy)owner;
					temp.numberOfBullet++;
				}
			}
	}

	public void makeBomb(){
		gameModel.addActor(new bomb(xPos, yPos, "small", gameModel));
	}

	//unused method
	public Rectangle[] getDetailedBorder(){return null;}
	public boolean walldestoried(){return false;}




}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -