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

📄 missile.java

📁 坦克大战代码
💻 JAVA
字号:
package com.caizi;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class Missile {
	
	private int x,y;
	private static final int X_SPEED = 8;
	private static final int Y_SPEED = 8;
	static final int WIDTH = 10;
	static final int HIGHTH = 10;	
	private boolean live = true;
	private boolean friend;
	private Direction dir;
	private TankClient tc = null;
	private static Toolkit t = Toolkit.getDefaultToolkit();
	private static Image[] images = {
		t.getImage(Explode.class.getClassLoader().getResource("images/missileU.gif")),
		t.getImage(Explode.class.getClassLoader().getResource("images/missileRU.gif")),
		t.getImage(Explode.class.getClassLoader().getResource("images/missileR.gif")),
		t.getImage(Explode.class.getClassLoader().getResource("images/missileDR.gif")),
		t.getImage(Explode.class.getClassLoader().getResource("images/missileD.gif")),
		t.getImage(Explode.class.getClassLoader().getResource("images/missileUL.gif")),
		t.getImage(Explode.class.getClassLoader().getResource("images/missileL.gif")),
		t.getImage(Explode.class.getClassLoader().getResource("images/missileUL.gif")),
};
	private static Map<String, Image> missileMap = new HashMap<String, Image>();
	static {
		missileMap.put("N", images[0]);
		missileMap.put("NE", images[1]);
		missileMap.put("E", images[2]);
		missileMap.put("SE", images[3]);
		missileMap.put("S", images[4]);
		missileMap.put("SW", images[5]);
		missileMap.put("W", images[6]);
		missileMap.put("NW", images[7]);
	}
	
	public Missile(int x, int y, Direction dir) {
		super();
		this.x = x;
		this.y = y;
		this.dir = dir;
	}
	public Missile(int x, int y, Direction dir,boolean friend, TankClient tc){
		this(x,y,dir);
		this.friend = friend;
		this.tc = tc;
	}
	public boolean isLive() {
		return live;
	}
	public void setLive(boolean live) {
		this.live = live;
	}
	public void draw(Graphics g){
		switch (dir) {
		case N:
			g.drawImage(missileMap.get("N"), x, y, null);
			break;
		case NE:
			g.drawImage(missileMap.get("NE"), x, y, null);
			break;
		case E:
			g.drawImage(missileMap.get("E"), x, y, null);
			break;
		case SE:
			g.drawImage(missileMap.get("SE"), x, y, null);
			break;
		case S:
			g.drawImage(missileMap.get("S"), x, y, null);
			break;
		case SW:
			g.drawImage(missileMap.get("SW"), x, y, null);
			break;
		case W:
			g.drawImage(missileMap.get("W"), x, y, null);
			break;
		case NW:
			g.drawImage(missileMap.get("NW"), x, y, null);
			break;
		}
		move();
	}
	public void move(){
		switch(dir){
		case N:
			y -= Y_SPEED;
			break;
		case NE:
			x += X_SPEED;
			y -= Y_SPEED;
			break;
		case E:
			x += X_SPEED;
			break;
		case SE:
			x += X_SPEED;
			y += Y_SPEED;
			break;
		case S:
			y += Y_SPEED;
			break;
		case SW:
			x -= X_SPEED;
			y += Y_SPEED;
			break;
		case W:
			x -= X_SPEED;
			break;
		case NW:
			x -=X_SPEED;
			y -= Y_SPEED;
			break;		
		}
		if(x <0 || y<0 || x > TankClient.WINDOW_WIDTH|| y> TankClient.WINDOW_HEIGHT){
			setLive(false);
		}
	}
	public Rectangle getRect(){		
		return new Rectangle(this.x, this.y, this.WIDTH, this.HIGHTH);
	}
	public boolean hitTank(Tank tank){
		if(this.getRect().intersects(tank.getRect()) && tank.isLive() && (tank.isFriend())!=this.friend){
			tank.beHitted();	
			this.tc.explodes.add(new Explode(this.x,this.y,this.tc));
			this.setLive(false);
			return true;
		}
		return false;		
	}
	public void hitTanks(List<Tank> tanks){
		for(int j = 0; j < tanks.size(); j++ ){
			Tank tank = tanks.get(j);
			hitTank(tank);
		}	
	}	
	public boolean hitWall(Wall wall){
		if(this.isLive() && this.getRect().intersects(wall.getRect())){
			this.live = false;
			return true;
		}
		return false;
	}
}

⌨️ 快捷键说明

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