The rules, and the three that catch everybody
Chinese chess is played on the intersections of a nine-by-ten grid, not in the squares. A river runs across the middle, and each general sits in a three-by-three palace he may never leave. Red moves first. You win by checkmating the enemy general — and unlike Western chess there is no stalemate draw: a player with no legal move has lost.
The cannon (炮) is the piece with no Western equivalent. It moves like a chariot along ranks and files, but it can only capture by jumping exactly one piece — of either colour — with the target immediately beyond it. No screen, no capture. Two pieces in the way, no capture. This single rule is the source of most beginner blunders and most of the game's tactics.
The horse (馬) is not a knight. It moves one point orthogonally and then one diagonally outward, and if the orthogonal point is occupied the horse is blocked — "hobbling the horse's leg". A horse can be shut down by a single pawn standing next to it, which never happens in Western chess.
The flying general (白臉將). The two generals may never face each other down an open file. A piece standing between them is therefore pinned to that file, and in the endgame the general becomes an attacking piece in his own right.
The elephants (相/象) move exactly two points diagonally, are blocked by the midpoint — the "elephant's eye" — and may never cross the river, so each side has two permanent defenders. The advisors (仕/士) move one point diagonally and never leave the palace. Soldiers (兵/卒) move one point forward, gain sideways movement once they cross the river, never move backwards, and never promote.
How we know the rules are right
Move generation in this game is genuinely easy to get subtly wrong, so it is not graded by playing it and seeing if it feels correct. It is checked against perft — the exact count of positions reachable at each depth, published by other engine authors and independently verified.
Our engine matches all ten published counts exactly, on both standard test positions, to depth five: 44, 1,920, 79,666, 3,290,240 and 133,312,995 from the opening, and 38, 1,128, 43,929, 1,339,047 and 53,112,976 from the standard tactical test position. A single misplaced rule — one horse allowed to jump, one cannon allowed to capture without a screen — moves those totals by thousands and the build fails.
On top of that, every rule named above is tested individually by name, because perft tells you that something is wrong without telling you what. Forty-two assertions run on every build.
Every difficulty is free
All three levels are open. There is no paid tier on this site at all, and nothing is metered — not the bot, not a rematch, not the move list. The strongest level searches five ply deep with captures ordered first, under a node budget chosen so that it answers in about a second rather than freezing your tab.
The bot gets no help a human would not have. There is no hidden information in Chinese chess — every piece is on the board for both players — so the accusation levelled at dice games and Battleship cannot apply here.
An honest limitation
Tournament xiangqi has an elaborate body of repetition law: perpetual check and perpetual chase are losses for the offender rather than draws, and distinguishing a legitimate repeated attack from an illegal perpetual chase is genuinely hard — it is the part the strongest open-source engines are still refining. We do not adjudicate perpetual chase. Repetition here is simply a draw, as it is on most casual sites. We would rather say so than imply a completeness we have not built and tested.