public Item chooseSquare(int x, int y){
        if(!boardClicked){
            if(!boardReset || !boardInit){
                initBoard(x,y);
            } else{
                boardReset = false;
            }
            
            boardClicked = true;
        }

        if(getSquareMarking(x,y) != Marking.FLAG){
            board[y][x].setVisible(true);
            
            if(getSquareItem(x,y) == Item.NUMBER && board[y][x].getValue() == 0){

                for(Point p:getBorder(x,y)){
                    if(!board[p.y][p.x].isVisible()){
                        chooseSquare(p.x,p.y);
                    }   
                }
            }
        }

        return board[y][x].getItem();
    }