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

📄 mapdata.java

📁 A part public bus simulation system, mainly about map design, java file, groupwork, helpful to the b
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

package tools;

import java.awt.Point;
import java.util.LinkedList;
import java.util.Observable;
import java.util.Stack;

//import Tools;

public class MapData extends Observable{
	// attributes
	private LinkedList[][] matrixElem;
	private LinkedList busRoute;
	private LinkedList road;
	private Point selectedPoint;             
	private Object selectedTool;             
	private int selectedToolID;                 
	Stack sta = new Stack();		//stack added for tools
	private boolean cutobject = false;
	private int[][] roadData;
	
	// methods
	// constructor
	public MapData(){
		roadData = new int[20][20];
		matrixElem = new LinkedList[20][20];
		for( int i = 0; i < 20; i++ )
			for( int j = 0; j < 20; j++ ){
				matrixElem[i][j] = new LinkedList();
				roadData[i][j] = 0;
			}
		busRoute = new LinkedList();
		selectedPoint = null;                  
		selectedTool = null;                 
		selectedToolID = 0;              	
	}
	
	public boolean isOnBusRoute( Point k ) {
		BusRoute tempBR = new BusRoute();
		for ( int i = 0; i < busRoute.size(); i++ ) {
			tempBR = (BusRoute)busRoute.get(i);
			if( tempBR.contains( k ) )
				return true;
		}
		return false;
	}
	
	public boolean isBusStop1( Point k ) {
		for( int i = 0; i < matrixElem[(int)k.getY()][(int)k.getX()].size(); i++)
			if( ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( i ))).getID() == 1 )
				return true;
		return false;
	}
	
	public boolean isBusStop2( Point k ) {
		for( int i = 0; i < matrixElem[(int)k.getY()][(int)k.getX()].size(); i++)
			if( ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( i ))).getID() == 2 )
				return true;
		return false;
	}        
        
	public boolean isDepot( Point k ) {
		//added by JY
		if (matrixElem[(int)k.getY()][(int)k.getX()].size()==0) return false;
		//finished add by JY
		return ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( 0 ))).getID() == 10 ;
	}
	

	public boolean isTrafficLight( Point k ) {
		//added by JY
		if (matrixElem[(int)k.getY()][(int)k.getX()].size()==0) return false;
		//finished add by JY
		return ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( 0 ))).getID() == 11 ;    
	}

        public boolean isOnRoad( Point k ) {
		//added by JY
		if ( isRoad1(k) ) return true;
                if ( isRoad2(k) ) return true;
                if ( isRoad3(k) ) return true;
                if ( isRoad4(k) ) return true;
                if ( isRoad5(k) ) return true;
                if ( isRoad6(k) ) return true;
                return false;
	}
        
	public boolean isRoad1( Point k ) {
		//added by JY
		if (matrixElem[(int)k.getY()][(int)k.getX()].size()==0) return false;
		//finished add by JY
		return ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( 0 ))).getID() == 3 ;    
	}        
	
	public boolean isRoad2( Point k ) {
		//added by JY
		if (matrixElem[(int)k.getY()][(int)k.getX()].size()==0) return false;
		//finished add by JY
		return ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( 0 ))).getID() == 4 ;    
	}        
        
	public boolean isRoad3( Point k ) {
		//added by JY
		if (matrixElem[(int)k.getY()][(int)k.getX()].size()==0) return false;
		//finished add by JY
		return ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( 0 ))).getID() == 5 ;    
	} 
        
	public boolean isRoad4( Point k ) {
		//added by JY
		if (matrixElem[(int)k.getY()][(int)k.getX()].size()==0) return false;
		//finished add by JY
		return ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( 0 ))).getID() == 6 ;    
	}                
        
	public boolean isRoad5( Point k ) {
		//added by JY
		if (matrixElem[(int)k.getY()][(int)k.getX()].size()==0) return false;
		//finished add by JY
		return ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( 0 ))).getID() == 7 ;    
	}                
        
	public boolean isRoad6( Point k ) {
		//added by JY
		if (matrixElem[(int)k.getY()][(int)k.getX()].size()==0) return false;
		//finished add by JY
		return ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( 0 ))).getID() == 8 ;    
	}
        
	public boolean isRoadJunction( Point k ) {
		//added by JY
		if (matrixElem[(int)k.getY()][(int)k.getX()].size()==0) return false;
		//finished add by JY
		return ((Tools)(matrixElem[(int)k.getY()][(int)k.getX()].get( 0 ))).getID() == 9 ;    
	}        
	

	
	
	// For Adding Tools
	
	/*commented by JY,rewritten
	 public void add( Point k, Tools p ) {
	 if(matrixElem[(int)k.getY()][(int)k.getX()].size() == 0) {
	 matrixElem[(int)k.getY()][(int)k.getX()].add( p );
	 setChanged();
	 notifyObservers();
	 return true;
	 }
	 else if(isOnRoad(k)) {
	 if((p.getID() == 3) && !(isTrafficLight(k))) {  //if p is traffiLight and no trafficlight yet, add
	 TrafficLight tempTL = new TrafficLight(k);
	 tempTL = setTrafficLightName((TrafficLight)p);
	 matrixElem[(int)k.getY()][(int)k.getX()].add( tempTL );
	 setChanged();
	 notifyObservers();
	 return true;
	 }
	 if((p.getID() == 7) && !(isBlock(k))) { //if p is road block and no roadblock yet,add
	 RoadBlock tempRB = new RoadBlock(k);
	 tempRB = setRoadBlockName((RoadBlock)p);
	 matrixElem[(int)k.getY()][(int)k.getX()].add( tempRB );
	 setChanged();
	 notifyObservers();
	 return true;
	 }
	 if((p.getID() == 5) && !(isBusStop(k))) { //if p is busstop and no busstop, add
	 matrixElem[(int)k.getY()][(int)k.getX()].add( p );
	 setChanged();
	 notifyObservers();
	 return true;
	 }
	 if((p.getID() == 6) && !(isInterchange(k))) { //if p is busstop and no busstop, add
	 matrixElem[(int)k.getY()][(int)k.getX()].add( p );
	 setChanged();
	 notifyObservers();
	 return true;
	 }
	 
	 }
	 return false;
	 
	 }
	 */
	//added by JY
	public boolean add( Point k, Tools p ) {
		//if k on a road
			//on a road, only allows traffic light,roadblock
			//and bus interchange/stop

			if((p.getID() == 1) && !(isBusStop1(k)) && (isRoad1(k))) { //if p is busstop and  there are no busstop yet, then add
				matrixElem[(int)k.getY()][(int)k.getX()].add( p );
				setChanged();
				notifyObservers();
			 	return true;
			}
                        if((p.getID() == 2) && !(isBusStop2(k))&& (isRoad2(k))) { //if p is busstop and  there are no busstop yet, then add
				matrixElem[(int)k.getY()][(int)k.getX()].add( p );
				setChanged();
				notifyObservers();
				return true;
			}
			if((p.getID() == 10) && !(isDepot(k))&& !(isBusStop1(k))&& !(isBusStop2(k))) { //if p is bus depot and there are no busInterchange asnd busstop yet , then add
				matrixElem[(int)k.getY()][(int)k.getX()].add( p );
				setChanged();
				notifyObservers();
				return true;
			}   
                        if((p.getID() == 3) && !(isRoad1(k))) { 
				matrixElem[(int)k.getY()][(int)k.getX()].add( p );
				setChanged();
				notifyObservers();
				return true;
			}
                        if((p.getID() == 4) && !(isRoad2(k))) { 
				matrixElem[(int)k.getY()][(int)k.getX()].add( p );
				setChanged();
				notifyObservers();
				return true;
			}
                        if((p.getID() == 5) && !(isRoad3(k))) { 
				matrixElem[(int)k.getY()][(int)k.getX()].add( p );
				setChanged();
				notifyObservers();
				return true;
			}
                        if((p.getID() == 6) && !(isRoad4(k))) { 
				matrixElem[(int)k.getY()][(int)k.getX()].add( p );
				setChanged();
				notifyObservers();
				return true;
			}
                        if((p.getID() == 7) && !(isRoad5(k))) { 
				matrixElem[(int)k.getY()][(int)k.getX()].add( p );
				setChanged();
				notifyObservers();
				return true;
			}
                        if((p.getID() == 8) && !(isRoad6(k))) { 
				matrixElem[(int)k.getY()][(int)k.getX()].add( p );
				setChanged();
				notifyObservers();
				return true;
			}
                        if (p.getID() == 9) {
                            if(matrixElem[(int)k.getY()][(int)k.getX()].size() == 0) {
                                    matrixElem[(int)k.getY()][(int)k.getX()].add( p );
                                    setChanged();
                                    notifyObservers();
                                    return true;
                            }
                        }
		
		return false;
        }
	
	
	public void addBusRoute( BusRoute k ) {
		busRoute.add( k );
		setChanged();
		notifyObservers();                
	}
	
	
	
	
	
	// Editing Tools For GUI
	
	//setselected and remeoveSelected functions for GUI part
	public boolean setSelected(Point p1, int c)
	//added by JY

⌨️ 快捷键说明

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