How is a cannon move written in every direction?

These answers restate the rules implemented by our open-source engine, which follows the WXF laws and is regression-tested against the official 110-diagram repetition casebook. Where an answer refers to a specific position, that position lives on the linked reference page, where the build verifies it against the engine before publishing.

Direct answer

A cannon moves in straight lines, so all three directions use a distance, not a destination file. C2+3 advances the cannon on file 2 by three points. C8-2 retreats the cannon on file 8 by two points. C2=5 traverses the cannon on file 2 sideways to file 5. The same three patterns apply whether the move is quiet or a capture.

Why capture looks identical to a quiet move

Xiangqi notation never marks captures (see how to read xiangqi notation), so C2+3 could be landing on an empty point or jumping a screen to take a piece three points ahead. The notation tells you the mechanics of the move, not its outcome; you infer the outcome from the position.

The one case that looks different

When two cannons share a file, the file number is replaced by + (front) or (rear): +C=5 traverses the front cannon to file 5. That is the only structural variation in cannon notation, and it is shared with every other piece that can stack on a file. See writing moves for stacked pieces.

Related questions

Can a cannon's traverse also be written as a distance?

No. Traverse (平/=) is always to a named file, never a distance, for every piece.

Why does the cannon never use a destination file for advance or retreat?

Because it moves in a straight line, so a distance fully identifies the destination. Diagonal movers like the horse need a file instead, because a distance alone would be ambiguous.

Try it on a real board

Reading an answer is one thing; playing it is another. Free, instant, and nothing to install.