How many of the seven xiangqi piece types can move diagonally?

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

Two out of the seven types. Only the advisor and the elephant move diagonally, one point at a time for the advisor and exactly two points at a time for the elephant. The general, chariot, cannon, soldier, and the orthogonal half of the horse's move are all confined to straight up, down, left and right movement; xiangqi has no piece that mixes diagonal and orthogonal travel in a single step the way a queen does.

Why this matters for reading the board

Because diagonal movement is rare in xiangqi, spotting it quickly narrows things down enormously: any diagonal threat on the board can only be coming from an advisor or an elephant, both of which are themselves confined to a small, fixed set of points. A newer player scanning for danger can usually rule out diagonal attacks entirely once they know where the advisors and elephants are.

Why so few pieces use it

The two diagonal movers are also the two purely defensive pieces, confined to their own palace or their own half of the board. Diagonal movement in xiangqi is associated with short-range, static defence rather than the long-range attacking power the orthogonal pieces provide.

Related questions

Does the horse's move count as diagonal?

Not in the usual sense; it is one orthogonal step followed by one diagonal step, a combined move rather than a purely diagonal one.

Is there any piece that can choose between diagonal and orthogonal on the same move?

No. Every piece's directions are fixed by type; none of them mix the two within a single move.

Try it on a real board

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