欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

one模拟器中carmovement的代码分析

程序员文章站 2024-02-11 14:06:07
...
/**
 * CarMovement类表示car移动子模型 ,  carmovement继承了MapBasedMovement这个父类,在接口SwitchableMovement, TransportMovement 中对方法进行声明,在类MapBasedMovement(MapBasedMovement )中对该方法进行实现。  
 	 */
 	    package movement;
        import java.util.List;
        import movement.map.DijkstraPathFinder;
        import movement.map.MapNode;
        import core.Coord;
        import core.Settings;
        public class CarMovement extends MapBasedMovement implements 
        SwitchableMovement, TransportMovement {
        private Coord from;//初始起点
      	private Coord to;//初始终点
		private DijkstraPathFinder pathFinder;//寻找路径的方式

/**
 * 汽车运动的构造函数
 	 */
public CarMovement(Settings settings) {
	super(settings);          //由配置文件创建对象。
	pathFinder = new DijkstraPathFinder(getOkMapNodeTypes());
}

/**
 * 从原型构造一个新的CarMovement实例
 * @param proto
 */
public CarMovement(CarMovement proto) {
	super(proto);
	this.pathFinder = proto.pathFinder;
}

/**
 * Sets the next route to be taken
 * 设置下一个使用的路径,将nodeLocation赋值给from,nodeDestination赋值给to
 * @param nodeLocation
 * @param nodeDestination
 */
public void setNextRoute(Coord nodeLocation, Coord nodeDestination) {
	from = nodeLocation.clone();
	to = nodeDestination.clone();
}
/**
 * 从from和to变量中获取其在地图上的节点对象MapNode,由pathFinder工具寻找出一条from到to的最短路径,将路径上的节点存入List<MapNode> nodePath,用这个表创建出一条路径。
 	 */
@Override
public Path getPath() {
	Path path = new Path(generateSpeed());
	MapNode fromNode = getMap().getNodeByCoord(from);
	MapNode toNode = getMap().getNodeByCoord(to);
	List<MapNode> nodePath = pathFinder.getShortestPath(fromNode, toNode);
	for (MapNode node : nodePath) { // create a Path from the shortest path
	path.addWaypoint(node.getLocation());
	}
	lastMapNode = toNode;
	return path;
}
	/**
 * @see SwitchableMovement
 * @return true
 */
public boolean isReady() {
	return true;
}

}

相关标签: one模拟器