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

📄 animationgo.java

📁 一款JAVA款的跳棋
💻 JAVA
字号:
package org.yushang.jumpchess.Interface;

// Download:http://www.codefans.net
import java.util.Vector;

import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
import org.yushang.jumpchess.audio.WavePlayer;
import org.yushang.jumpchess.pkg.Chess;
import org.yushang.jumpchess.pub.Position;

public class AnimationGo extends Animation {
	private Drawer drawer;
	private Chess chess;
	private Point[] pointPath;	
	private int pathIndex = 0;
	private int BigOffset = 0;

	private final static int Offest = 2;
	private WavePlayer wavePlayer = new WavePlayer();
	
	public AnimationGo(Drawer drawer, Chess chess, Position[] path) {
		this.drawer = drawer;
		this.chess = chess;
		this.pointPath = CreatePointPath(path);
		this.pathIndex = 0;
	}
	
	private double getDistance(Point p1, Point p2) {
		double re = (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y);
		return Math.sqrt(re);
	}	
	
	private Point[] CreatePointPath(Position[] path) {
		Vector vector = new Vector();
		
		for (int i = 0; i < path.length - 1; i++) {
			Point beginPoint = drawer.PositionToMouseXY(path[i]);
			Point endPoint = drawer.PositionToMouseXY(path[i + 1]);
			int SpanCount = (int) (getDistance(beginPoint, endPoint) / Offest);
			
			for (int j = 0; j < SpanCount; j++) {
				Point point = new Point(0, 0);
				point.x = j * (endPoint.x - beginPoint.x) / SpanCount + beginPoint.x;
				point.y = j * (endPoint.y - beginPoint.y) / SpanCount + beginPoint.y;
				vector.add(point);
			}
		}
		//vector.add(drawer.PositionToMouseXY(positions[positions.length - 1]));
		
		Point[] points = new Point[vector.size()];
		for (int i = 0; i < points.length; i++) {
			points[i] = (Point) vector.get(i);
		}		
		
		return points;
	}
	
	public void Draw(GC gc) {
		/*for (int i = 0; i < pointPath.length - 1; i++) {
			gc.drawLine(pointPath[i].x, pointPath[i].y,
					pointPath[i + 1].x, pointPath[i + 1].y);
						
		}*/
		drawer.DrawChess(gc, chess.GetColor(), pointPath[pathIndex], BigOffset / 6 - 1);				
	}

	public boolean Run() {
		BigOffset += 1;
		BigOffset %= 18;
		
		pathIndex ++;
		boolean re = (pathIndex < pointPath.length);
		if (!re) {
			pathIndex = pointPath.length - 1;
		}
		if(!re) {
			wavePlayer.Play(WavePlayer.WAVEDOWN);
		}
		return re;
	}
}

⌨️ 快捷键说明

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