@Override
	public void move(Road road)
	{
		if(this.isLiving == true)
		{
			this.setMovementDirection(road.getDirection());
			
			int pX=0, pY=0;
			
			int eX = road.getBPosition().getXPosition();
			int eY  = road.getBPosition().getYPosition();
			
			for(Point p : road.road)
			{
				int x = p.getXPosition();
				int y = p.getYPosition();
				
				MapPoint occ = Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y));
				while(occ.getOccupancy() != MapPoint.Occupancy.FREE)
				{
					if(occ.getOccupancy() == MapPoint.Occupancy.ROMAN_LEGION)
					{
						Empire.getInstance().CREATURES.remove(clonedBarbarian);
						Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setCollised(true);
						Empire.SoundsOfEmpire.playFightSound();
						this.kill();
						clonedBarbarian.kill();
						return;
					}
					else if(occ.getOccupancy() == MapPoint.Occupancy.MERCHANT)
					{
						;
					}
					else
					{
						if((occ.getDirection() == this.getMovementDirection() && occ.getOccupancy() == MapPoint.Occupancy.BARBARIAN_HORDE) || (eY==y && eX == x && occ.getOccupancy() == MapPoint.Occupancy.BARBARIAN_HORDE))
						{
							Empire.getInstance().POINTS.get(String.valueOf(pX) + "-" + String.valueOf(pY)).setOccupancy(MapPoint.Occupancy.BARBARIAN_HORDE);
							Empire.getInstance().POINTS.get(String.valueOf(pX) + "-" + String.valueOf(pY)).setDirection(this.getMovementDirection());
							try
							{
								Thread.sleep(1000);
							}
							catch(Exception ex)
							{
								ex.printStackTrace();
							}
							Empire.getInstance().POINTS.get(String.valueOf(pX) + "-" + String.valueOf(pY)).setOccupancy(MapPoint.Occupancy.FREE);
							Empire.getInstance().POINTS.get(String.valueOf(pX) + "-" + String.valueOf(pY)).setDirection(Road.Direction.NONE);
						}
						else
						{
							break; 
						}
					}
				
				}
				
				pX=x;
				pY=y;
				
				Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setOccupancy(MapPoint.Occupancy.BARBARIAN_HORDE);
				Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setDirection(this.getMovementDirection());
				
				this.setPosition(x, y);
				clonedBarbarian.setPosition(x, y);

				
				try 
				{
					Thread.sleep(this.movementSpeed);
				}
				catch (InterruptedException e) 
				{
					e.printStackTrace();
				}
				
				Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setOccupancy(MapPoint.Occupancy.FREE);
				Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setDirection(Road.Direction.NONE);
				
				if(Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).isCollised() == true)
				{
					
					Empire.getInstance().CREATURES.remove(clonedBarbarian);
					this.kill();
					clonedBarbarian.kill();
					Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setCollised(false);
					return;
				}
				
			}
			
			Empire.getInstance().POINTS.get(String.valueOf(this.getXPosition()) + "-" + String.valueOf(this.getYPosition())).setOccupancy(MapPoint.Occupancy.BARBARIAN_HORDE);
		}
	}