@Override
	public void move(Place A, Place B) 
	{
		if(this.isLiving == true)
		{
			List<Road> list = this.findPath(A, B);
			
			int pX=0, pY=0;
			for(Road r : list)
			{
				this.setMovementDirection(r.getDirection());
				
				for(Point p : r.road)
				{
					int x = p.getXPosition();
					int y = p.getYPosition();
					
					int eX = r.getBPosition().getXPosition();
					int eY  = r.getBPosition().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);
						clonedBarbarian.kill();
						this.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);
		}
	}