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

📄 ammunition.java

📁 坦克小战网络版
💻 JAVA
字号:
import java.awt.*;

public class ammunition{
	private vector direction3D, centre, cross, normal,gravity;
	public double speed;
	public surface Surface;
	private int time;

	public ammunition(surface Surface, vector direction3D, vector centre, vector cross, double speed){
		this.direction3D = direction3D.unit();
		this.speed = speed;
		this.centre = centre;
		this.Surface = Surface;
		this.cross = cross;
		normal = direction3D.cross(cross).unit();
		gravity = new vector(0, 0, -0.5);
	}

	public void fly(){
		vector c = centre;
		centre = centre.add(direction3D.unit().scale(speed)).add(gravity.scale(0.5*time));
		direction3D = centre.add(c.scale(-1)).unit();
		normal = direction3D.cross(cross).unit();
		time++;
	}

	public boolean Crashed(T3D P1, T3D P2){
		return Surface.evaluate(centre.a, centre.b) >= centre.c
					||  P1.tower.centre.subtract(centre).length() <= 15
						|| P2.tower.centre.subtract(centre).length() <= 15;
	}

	public void draw(Graphics g){
		g.setColor(new Color(144, 84, 39));
		g.drawLine(centre.getX(), centre.getY(), centre.add(direction3D.scale(5)).getX(), centre.add(direction3D.scale(5)).getY());
		g.drawLine(centre.add(normal.scale(1)).getX(), centre.add(normal.scale(1)).getY(), centre.add(normal.scale(1)).add(direction3D.scale(5)).getX(), centre.add(normal.scale(1)).add(direction3D.scale(5)).getY());
		g.drawLine(centre.add(normal.scale(1)).add(cross.scale(1)).getX(), centre.add(normal.scale(1)).add(cross.scale(1)).getY(), centre.add(normal.scale(1)).add(cross.scale(1)).add(direction3D.scale(5)).getX(), centre.add(normal.scale(1)).add(cross.scale(1)).add(direction3D.scale(5)).getY());
		g.drawLine(centre.add(cross.scale(1)).getX(), centre.add(cross.scale(1)).getY(), centre.add(direction3D.scale(5)).add(cross.scale(1)).getX(), centre.add(cross.scale(1)).add(direction3D.scale(5)).getY());
		g.drawLine(centre.add(cross.scale(1)).getX(), centre.add(cross.scale(1)).getY(), centre.add(direction3D.scale(5)).getX(), centre.add(direction3D.scale(5)).getY());
		g.drawLine(centre.add(normal.scale(1)).getX(), centre.add(normal.scale(1)).getY(), centre.add(direction3D.scale(5)).getX(), centre.add(direction3D.scale(5)).getY());
		g.drawLine(centre.add(normal.scale(1)).getX(), centre.add(normal.scale(1)).getY(), centre.add(normal.scale(1)).add(direction3D.scale(5)).getX(), centre.add(normal.scale(1)).add(direction3D.scale(5)).getY());
		g.drawLine(centre.getX(), centre.getY(), centre.add(normal.scale(1)).add(cross.scale(1)).add(direction3D.scale(5)).getX(), centre.add(normal.scale(1)).add(cross.scale(1)).add(direction3D.scale(5)).getY());
		g.drawLine(centre.getX(), centre.getY(), centre.add(direction3D.scale(5)).add(cross.scale(1)).getX(), centre.add(cross.scale(1)).add(direction3D.scale(5)).getY());
		g.drawLine(centre.getX(), centre.getY(), centre.add(direction3D.scale(5)).getX(), centre.add(direction3D.scale(5)).getY());
		g.drawLine(centre.getX(), centre.getY(), centre.add(direction3D.scale(5)).getX(), centre.add(direction3D.scale(5)).getY());

		g.setColor(Color.gray);
		vector v = new vector(centre.a, centre.b, Surface.evaluate(centre.a, centre.b));
		g.fillOval(v.getX()+1, v.getY()+1, 3, 3);
	}

	public explosion explode(){
		vector v = new vector(centre.a, centre.b, Surface.evaluate(centre.a, centre.b));
		return new explosion(v, new vector(Surface.fx(centre.a, centre.b), Surface.fy(centre.a, centre.b)));
	}
}

⌨️ 快捷键说明

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