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 for movement, checkmate and both repetition rulings: a side that forces a repetition by perpetual check or perpetual chase loses rather than drawing. The chase half has not been validated against the official casebook. Where an answer refers to a specific position, that position lives on the linked reference page, where the build verifies it before publishing.

Direct answer

A cannon moves in straight lines, so an advance or a retreat is written with a distance, while a sideways move names the 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 chariots, horses and soldiers share it. 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.