you have 6 adjacent moves ( horizontal right , horizontal left , diagonal up right , diagonal up left , diagonal down right , diagonal down left )
and another 6 hop moves when you move a hop move you can try another hop move in the same time
( Hop horizontal right , Hop horizontal left , Hop diagonal up right , Hop diagonal up left , Hop diagonal down right , Hop diagonal down left )
Calculate the minimum distance for each marble to arrive the adjacent destination.
player play with red marbel and bot play with blue marbel and depth 1,3,5 any depth you want just change depth in bot player class in function update
just hold on marbel for player and will suggest for you some available moves.