public Road(Place A, Place B)
	{
		Empire roadEmpire = Empire.getInstance();
		
		int intXA, intYA, intXB, intYB;
		double xA, yA, xB, yB;
		
		intXA = A.getXPosition();
		intYA = A.getYPosition();
		intXB = B.getXPosition();
		intYB = B.getYPosition();
		
		xA = (double) intXA;
		yA = (double) intYA;
		xB = (double) intXB;
		yB = (double) intYB;
		
		aPoint = new Point((int) xA, (int) yA);
		bPoint = new Point((int) xB, (int) yB);
		
		aName = A.getName();
		bName = B.getName();
		
		length =  Math.sqrt((((xA-xB)*(xA-xB) + (yA - yB)*(yA - yB))));
		kFactor = (yB - yA)/(xB-xA);
		
		road.add(new Point(intXA, intYA));
		
		String keyA = String.valueOf(intXA) + "-" + String.valueOf(intYA);
		if(!roadEmpire.POINTS.containsKey(keyA));
		{
			MapPoint m = new MapPoint(intXA,intYA);
			roadEmpire.POINTS.put(keyA, m);
		}
		
		
		
		if((xA == xB) && (yA == yB))
		{
			direction = Direction.NONE;
		}
		else if(xA == xB)
		{
			if(yB > yA)
			{
				direction = Direction.SOUTH;
			}
			else
			{
				direction = Direction.NORTH;
			}		
			
			for (int i=1; i<(int)length; i++)
			{
				int x = (int) xA;
				int y;
				
				if(yB > yA)
				{
					y = ((int)yA) + i;
				}
				else
				{
					y = ((int)yA) - i;
				}
				
				road.add(new Point(x,y));
				
				String key = String.valueOf(x) + "-" + String.valueOf(y);
				if(!roadEmpire.POINTS.containsKey(key));
				{
					MapPoint m = new MapPoint(x,y);
					roadEmpire.POINTS.put(key, m);
				}
				
			}
		}
		else if(yA == yB)
		{
			if(xB > xA)
			{
				direction = Direction.EAST;
			}
			else
			{
				direction = Direction.WEST;
			}
			
			for (int i=1; i<(int)length; i++)
			{
				int x;
				int y = (int)yA;
				
				if(xB > xA)
				{
					x = ((int)xA) + i;
				}
				else
				{
					x = ((int)xA) - i;
				}
				
				road.add(new Point(x,y));
				
				String key = String.valueOf(x) + "-" + String.valueOf(y);
				if(!roadEmpire.POINTS.containsKey(key));
				{
					MapPoint m = new MapPoint(x,y);
					roadEmpire.POINTS.put(key, m);
				}
			}
		}
		else
		{	
			if((xB > xA) && (yB > yA))
			{
				direction = Direction.SOUTH_EAST;
			}
			else if((xB > xA) && (yB < yA))
			{	
				direction = Direction.NORTH_EAST;
			}
			else if((xB < xA) && (yB > yA))
			{
				direction = Direction.SOUTH_WEST;
			}
			else if((xB < xA) && (yB < yA))
			{
				direction = Direction.NORTH_WEST;
			}
				
			for (int i=1; i<(int)length; i++)
			{
				int x;
				int y;
				
				double c = (double) i;
				double a = c/(Math.sqrt((kFactor*kFactor + 1.0))); 
				double b = Math.abs(a*kFactor);
				
				if((xB > xA) && (yB > yA))
				{
					x = (int)(xA + a);
					y = (int)(yA + b);
				}
				else if((xB > xA) && (yB < yA))
				{
					x = (int)(xA + a);
					y = (int)(yA - b);
				}
				else if((xB < xA) && (yB > yA))
				{
					x = (int)(xA - a);
					y = (int)(yA + b);
				}
				else if((xB < xA) && (yB < yA))
				{
					x = (int)(xA - a);
					y = (int)(yA - b);
				}
				else
				{
					x = 100;
					y = 100;
				}
				
				road.add(new Point (x,y));
				
				String key = String.valueOf(x) + "-" + String.valueOf(y);
				if(!roadEmpire.POINTS.containsKey(key));
				{
					MapPoint m = new MapPoint(x,y);
					roadEmpire.POINTS.put(key, m);
				}
				

			}
		}
		
		road.add(new Point(intXB, intYB));
		
		String keyB = String.valueOf(intXB) + "-" + String.valueOf(intYB);
		if(!roadEmpire.POINTS.containsKey(keyB));
		{
			MapPoint m = new MapPoint(intXB,intYB);
			roadEmpire.POINTS.put(keyB, m);
		}
	}