The graphical problem editor allows creation and editing of problems. This Java interface gives problem creators the power and convenience they deserve. Instead of having to use a third-party SGF editor and learn the custom commands for making problems, it's now all presented through an attractive, intuitive, custom-built interface. All the ugliness is hidden, all unnecessary complexity simplified.
The graphical editor looks like the problem solver applet, with the addition of a couple of key tools: the edit buttons and the move tree. The buttons control how you edit the problem, and the tree shows a visual representation of the possible problem paths.
Problems have two parts: the starting position and the tree of moves. To set up a starting position on a new problem, select the Setup Tool (which starts off selected anyway.)
This allows the initial placement of stones. Hold down shift as you click to place white stones.
After the position is set up, you can play some moves. Select the Black stone button () or the White stone button (). After you play one move, the colors will automatically alternate.
When you arrive at a position that is a correct solution for the problem, hit the Correct button (). This will mark the path green in the tree. Then continue to add more paths, marking the ones that lead to a correct solution with the Correct button.
That's the basic method for entering problems, although you can get more sophisticated if you wish.
Over on the right side, you'll see a hierarchical tree representing the move possibilities. It understands the problem representation, and gives you graphical clues as to what's going on. Correct paths are marked in green. Commented positions have little circles in the middle. Targeted positions have black circles around them. The current node is illuminated with a yellow circle like an angel. You can click on any position to go there.
How The Computer Responds
After each human move, the computer tries to answer you if such an answer has been programmed into the tree. By default, it selects the first path available. You can change this behavior by marking a node in a different path with the Target button (). The computer will select a path that contains a Target whenever possible. If more than one path contains a Target, it will randomize between them. You can also reorder paths to have the computer choose a different one.
The Left and Right arrow keys navigate through the tree for convenience.
The comment for each position in the tree can be changed by clicking in the comment area at the top (the long horizontal oval thing.) A position with a comment has a small circle added on the tree.
Submitting the Problem
When you're done editing, hit the Submit Problem button. If you're creating a new problem, it will take you to a page where you can enter additional information like a source and groups. If you're editing an existing problem, this will change it right away.
If you didn't make a valid problem (like it doesn't contain any correct paths) then you will be force to save the problem into your sandbox (play area).
|Setup||Used for adding black and white stones to a position to set it up. By holding down shift or caps lock, it will produce white stones. Generally, this will only be used in the first position.|
|Black Move||Play a Black stone. If it's not Black's turn to play, this will be disabled.|
|White Move||Play a White stone.|
|Triangle||Mark the stone or intersection with a triangle. Click again to remove.|
|Square||Mark the stone or intersection with a square.|
|Label||Label the stone or intersection. Labels are generally one letter or number. Avoid using more than two letters or numbers, as there isn't enough space.|
|Delete||This deletes the current node and all nodes under it. Be careful, there's no undo.|
|Prevent Move||Mark the current position as inaccessible. The player will not be able to put a stone here. Do not use for computer moves.|
|Correct||The current position is a solution to the problem. When the user gets here, they will get a "Solved".|
|Force||If a position is forced, the only moves available to the player are ones you've accounted for in the move tree. This is useful for limiting what player may do in certain circumstances, but make sure you know what you're doing before selecting this. Click again to remove.|
|Target||This position becomes a target for the computer player. See above in How the Computer Responds.|
|Zoom||Zoom in or out on this problem. At the start, it presents the whole board to you. After you have specified the scope of the problem, you may wish to zoom in so you can perhaps view the board with large stones.|
In go problems, different paths of play can sometimes lead to the same position. When creating problems, it's a great convenience to be able to have the applet understand how to connect these isomorphic positions -- that way, you can save a lot of time by not entering the same set of variations repeatedly.
How does it connect two positions? First, all the stones on the board must be the same. Second, it must be the same player to move. And third, it checks to make sure any ko on the board is at the same point. Next, for the connection to have meaning, one of the two positions must have no continuations, and the other must have at least one. There's no point in connecting two nodes where neither has a continuation, and if they both do then there's also no point.
When two positions are connected, you will see a curved line between them in the tree explorer to the right of the board. There are two types of lines: thick dark green lines and thin pink lines. The dark green are the ones where it's a valid connection (in terms of continuations for one position, but not the other.) Thin pink lines are invalid connections -- it shows these as a useful visual aid so you can see where it would connect two positions were one to have continuations and the other not.
Note that all this is automatic: you do not need to manually connect positions. And when the user is playing out the problem, it will automatically switch positions without the user even knowing.