📄 mapdata.java
字号:
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 + -