public void transformMove() {
		System.out.println("Coin.transformMove()" + this);
		lastMovedCoin = this;
		LudoRegion region = null;
		path = new Path();
		// if region 4 than
		Cordenate from = new Cordenate(this.getBlockNo().getX(), this
				.getBlockNo().getY());
		MoveTo to = new MoveTo(this.getCenterX(), this.getCenterY());
		path.getElements().add(to);
		if (onFinalPath()) {
			moveOnFinalPath(move);
		} else {
			region = LudoRegion.values()[(this.getBlockNo().getRegion() - 1) % 11];

			int movesReamaning = move;
			switch (region.axics()) {
			case 1:
				movesReamaning = movesReamaning + this.getBlockNo().getX()
						- region.getMinX() + 1;
				break;
			case 2:
				movesReamaning = movesReamaning + this.getBlockNo().getY()
						- region.getMinY() + 1;
				break;
			case 3:
				movesReamaning = region.getMinX() - this.getBlockNo().getX()
						+ movesReamaning + 1;
				break;
			case 4:
				movesReamaning = region.getMinY() - this.getBlockNo().getY()
						+ movesReamaning + 1;
				break;

			}
			moveToNextRegion(this.getBlockNo().getRegion(), movesReamaning);
		}

		synchronized (path) {
			PathTransition transition = PathTransitionBuilder.create()
					.duration(Duration.millis(move * 50)).autoReverse(false)
					.cycleCount(1).node(this).path(path).build();
			transition.play();
		}

		Stack<SimpleCordinate> undoList = new Stack<SimpleCordinate>();
		ObservableList<PathElement> pathElements = path.getElements();
		List<PathElement> tempList = new ArrayList<PathElement>();
		tempList.addAll(pathElements);
		for (PathElement pathElement : tempList) {
			if (pathElement instanceof LineTo) {
				undoList.push(new SimpleCordinate(
						((LineTo) pathElement).getX(), ((LineTo) pathElement)
								.getY()));
			} else if (pathElement instanceof MoveTo) {

				undoList.push(new SimpleCordinate(
						((MoveTo) pathElement).getX(), ((MoveTo) pathElement)
								.getY()));
			}
			undoPath = new Path();
			SimpleCordinate cordinate = undoList.pop();
			path.getElements().add(new MoveTo(cordinate.x, cordinate.y));
			while (!undoList.empty()) {
				cordinate = undoList.pop();
				path.getElements().add(new LineTo(cordinate.x, cordinate.y));
			}

		}
		SpriteMap.updateSprite(from, this.getBlockNo(), this);
	}