store the option buttons and their rectangles in options reset_surfreset_rect maketext('reset'textcolortilecolorwindowwidth windowheight new_surfnew_rect maketext('new game'textcolortilecolorwindowwidth windowheight solve_surfsolve_rect maketext('solve'textcolortilecolorwindowwidth windowheight mainboardsolutionseq generatenewpuzzle( solvedboard getstartingboard( solved board is the same as the board in start state just like in the last the functions called from the main(function calls will be explained later in the for nowyou just need to know what they do and what values they return you don' need to know how they work the first part of the main(function will handle creating the windowclock objectand font object the maketext(function is defined later in the programbut for now you just need to know that it returns pygame surface object and pygame rect object which can be used to make clickable buttons the slide puzzle game will have three buttonsa --reset|button that will undo any moves the player has madea --new|button that will create new slide puzzleand --solve|button that will solve the puzzle for the player we will need to have two board data structures for this program one board will represent the current game state the other board will have its tiles in the --solved|statemeaning that all the tiles are lined up in order when the current game state' board is exactly the same as the solved boardthen we know the player has won (we won' ever change this second one it'll just be there to compare the current game state board to the generatenewpuzzle(will create board data structure that started off in the orderedsolved state and then had random slide moves performed on it (because we passed the integer to it if we want the board to be even more jumbledthen we can pass larger integer to itthis will make the board into randomly jumbled state that the player will have to solve (which will be stored in variable named mainboardthe generatenewboard(also returns list of all the random moves that were performed on it (which will be stored in variable named solutionseqbeing smart by using stupid code allmoves [list of moves made from the solved configuration