Q: When I get a ButtonDown event on a patch, all I have is the handle passed as a paramter to setSelectedHex(). How do I get from the handle to the hex coords I need to assign to selectedHexLocation? A: You could use the screen coordinates of the mouse click and do complex math, but the following is easier: In board.draw, each time you draw a hex you get a handle back. Store that handle temporarily and assign it some user data you want later, like the coordinates on the board: set(tempHandle, 'UserData', [3 4]). Then later you can get the coordinates back when you have only the handle by using the get ccommand. ************************************************************ Q: Is a "player" in a Hex object the same as a "Player" in a Game object? A: No. The player in a Hex is just a number, not an Object. ************************************************************ Q: I used EdgeColor in showPath to highlight, and sometimes I cannot see my new edge color after I call showPath(). Where is it? A: It may not be on top of the various things in the figure. You can force it to the top by saying uistack(someHandle,'top'); ************************************************************ Q: When is the index of a Player set? A: When the Player is passed in to the Game constructor, i.e. the game decides which is player one and which is player two. ************************************************************ Q: What does the closeHexGame method do? A: It calls "close" on the figure and changes "ended" to true. ************************************************************ Q: How often do we call the board function "draw()"? A: Once. ************************************************************ Q: Do I use waitfor() EXACTLY as it is written in the comments? A: Yes. Q: Really? A: Yes. ************************************************************