Vector3 findBoard(Vector3 currPos)
    {
        double  min          = 100000;
        Vector3 nearestBoard = this.transform.position;
        double  value;

        GameObject[] gameObjects = GameObject.FindGameObjectsWithTag("Board");
        for (int i = 0; i < gameObjects.Length; ++i)
        {
            if (gameObjects[i].GetComponent <Board_block>() != null)
            {
                Board_block instance = gameObjects[i].GetComponent <Board_block>();
            }
            // print("found enemy");
            value = Math.Sqrt(Math.Pow(gameObjects[i].transform.position.x - currPos.x, 2) +
                              Math.Pow(gameObjects[i].transform.position.y - currPos.y, 2) +
                              Math.Pow(gameObjects[i].transform.position.z - currPos.z, 2));
            if (gameObjects[i].GetComponent <Board_block>() != null)
            {
                Board_block instance = gameObjects[i].GetComponent <Board_block>();

                if ((value < min) && instance.isOccupied() == false)
                {
                    Board_block closestBlock = instance;
                    min          = value;
                    nearestBoard = new Vector3(gameObjects[i].transform.position.x, gameObjects[i].transform.position.y, gameObjects[i].transform.position.z);
                }
            }
        }
        // print(nearestBoard);
        return(nearestBoard);
    }
    // Update is called once per frame
    void Update()
    {
        if (isSelected)
        {
            if (Input.GetMouseButtonDown(1))
            {
                Ray        ray = cam.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;

                if (Physics.Raycast(ray, out hit))
                {
                    // GameObject square = hit.collider.gameObject;
                    //Color color = square.GetComponent<Color>();
                    //color = Color.yellow;
                    if (playerBench)
                    {
                        playerBench = false;
                        _bench.unOccupy();
                    }
                    _bench = null;
                    GameObject currBoard = findNearestBoard(this.transform.position);
                    if (currBoard != null)
                    {
                        if (currBoard.GetComponent <Board_block>() != null)
                        {
                            Board_block instance = currBoard.GetComponent <Board_block>();
                            instance.unOccupy();
                        }
                    }

                    this.transform.position = findBoard(hit.point);
                    currBoard = findNearestBoard(this.transform.position);
                    if (currBoard != null)
                    {
                        if (currBoard.GetComponent <Board_block>() != null)
                        {
                            Board_block instance = currBoard.GetComponent <Board_block>();
                            instance.occupy();
                        }
                    }
                    isSelected = false;
                }
            }
            else if (Input.GetKeyUp("b"))
            {
                if (_bench != null)
                {
                    _bench.unOccupy();
                }
                playerBench = false;
                sendToBench();
                isSelected = false;
            }
        }
    }