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

📄 rail.java

📁 坦克大战游戏源代码
💻 JAVA
字号:
import java.awt.*;

public class rail{
	public surface Surface;
	public vector direction3D, normal, normalCrossDirection;
	public vector position;
	public vector[] helixWave;
	public Color[] color;
	public double r;	public double t;
	public int time;
	public int crashPoint;
	public int x_shift, y_shift;

	public rail(surface Surface, vector direction3D, vector normal, vector position, int x_shift, int y_shift){
		this.direction3D = direction3D;
		this.normal =  normal;
		this.position = position;
		this.Surface = Surface;
		this.x_shift = x_shift;
		this.y_shift = y_shift;
		helixWave = new vector[100];
		color = new Color[100];
		r = 3;
		normalCrossDirection = normal.cross(direction3D).unit();
		crashPoint = helixWave.length;
		makeWave();
	}

	public void makeWave(){
		vector origin = new vector(position.a, position.b, position.c);
		for(int i = 0; i < helixWave.length; i++){
			if(i%16 == 0 && time == 0){
				if(crashed(origin)){
					crashPoint = i;
					break;
				}
			}
			helixWave[i] = origin.add(direction3D.scale(t)).add(normal.scale(Math.sin(t)*r)).add(normalCrossDirection.scale(Math.cos(t)*r)).subtract(new vector(x_shift, y_shift));
			color[i] = new Color((int)(102*Math.abs(Math.sin(t/4))), 64 + (int)(115*Math.abs(Math.sin(t/4))),128 + (int)(127*Math.abs(Math.sin(t/4))));
			origin = origin.add(direction3D.scale(2));
			t+=(Math.PI/4);
		}
	}

	public void changeShape(int x_shift, int y_shift){
		time++;
		r+=0.1;
		this.x_shift = x_shift;
		this.y_shift = y_shift;
		changeWave();
	}

	public boolean crashed(vector origin){
		if(position.c <= Surface.evaluate(origin.a, origin.b))
			return true;
		return false;
	}

	public void draw(Graphics g){
		g.setColor(Color.black);
		for(int i = 0; i < crashPoint ; i++){
			g.setColor(color[i]);
			helixWave[i].draw(g);
		}
	}

	public void changeWave(){
		vector origin = new vector(position.a, position.b, position.c);
		t = 0;
		for(int i = 0; i < crashPoint ; i++){
			helixWave[i] = origin.add(direction3D.scale(t)).add(normal.scale(Math.sin(t)*r)).add(normalCrossDirection.scale(Math.cos(t)*r)).subtract(new vector(x_shift, y_shift));
			color[i] = new Color(color[i].getRed() + (int)((255 - color[i].getRed())*0.05), color[i].getGreen() + (int)((255 - color[i].getGreen())*0.05) ,color[i].getBlue() + (int)((255 - color[i].getBlue())*0.05));
			origin = origin.add(direction3D.scale(2));
			t+=(Math.PI/4);
		}
	}

}

⌨️ 快捷键说明

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