How are perpetual check and perpetual chase judged?

Every position, move and legality claim on this page is verified programmatically against our open rules engine, which implements 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.

Direct answer

Repeating a position is not automatically a draw in xiangqi. A player who checks endlessly (长将, perpetual check) loses. A player who endlessly chases a piece that cannot escape (长捉, perpetual chase) also loses. If both sides are equally at fault, the game is drawn. These are the hardest rules in xiangqi, and the ones software most often gets wrong.

Repetition is not a draw

In western chess, threefold repetition is a draw and perpetual check is the classic way to save a lost position. In xiangqi it is the reverse: repetition is adjudicated. The player creating the repetition by an illegal-in-spirit means is penalised, and the penalty is the loss of the game.

The World Xiangqi Federation rules and the Chinese national rules define which repeated actions are prohibited. In simplified form:

Repeated actionChineseVerdict
Perpetual check长将The checking side loses
Perpetual chase of a piece长捉The chasing side loses
Perpetual threat to mate长杀Prohibited
Both sides perpetually checking双方长将Draw
Repeating with quiet, non-attacking moves闲着Draw

What counts as a chase

Perpetual check is easy to recognise. Perpetual chase is where the difficulty lives, and where the exceptions matter. A repeated attack on a piece is a prohibited chase only under conditions — and each of these carves out real exceptions:

  • Chasing with the general or a soldier is permitted. These pieces are exempt.
  • Chasing a piece that is properly defended is generally not a prohibited chase, since no material is actually being won.
  • A chase that also delivers or threatens something else may be judged differently, depending on what the other threat is.
  • Whether the chased piece is “rooted” — genuinely protected — is decided position by position, not by a simple count of defenders.

The official casebook resolves these with 110 worked diagrams, because the rule genuinely cannot be stated in one line. This is why almost every xiangqi program either ignores chase adjudication or gets it wrong.

How our engine judges it

Honestly: both are enforced, and one is not validated. Our open rules engine plays the moves, check, checkmate and stalemate to the WXF standard, and in a game against a person a side that forces a repetition by perpetual check or by perpetual chase loses rather than drawing, while a repetition in which both sides check, or neither does, is a draw. The same rulings apply in games against the computer. Chase is tracked by stable piece identity, because a chased piece runs, and it only counts when the piece that just moved renews the threat: discovered chases are deliberately missed, because a false ruling takes a game from someone who should have drawn. The casebook has not been transcribed and nothing is tested against it, so the chase half has not been validated against the official casebook, and we will not claim it is correct or that we match every diagram.

It matters because it is not an exotic corner case. Repetition arises in ordinary games all the time, and a program that calls it a draw is handing one player half a point they did not earn. That is the gap we closed, and it is the reason this page tells you where the remaining gap is, validation, rather than implying there is none. As far as we have been able to establish — and we would genuinely like to be corrected — no other library in the JavaScript, TypeScript, Rust or Python ecosystems adjudicates perpetual chase at all; whether ours does so correctly is what the casebook would tell us.

Common mistakes

Assuming perpetual check saves a lost position

It loses the game outright. The chess habit of forcing a draw by endless checking is the single most expensive misconception a chess player brings to xiangqi.

Assuming any repetition is a draw

Only repetition by quiet moves, or by both sides equally at fault, is a draw. A one-sided perpetual attack is judged against its author.

Treating all chases as prohibited

Chasing with the general or a soldier is allowed, and chasing a properly defended piece usually is too. The exceptions are as important as the rule.

Related questions

Is perpetual check a draw in xiangqi?

No. The player giving perpetual check loses. If both sides are checking perpetually and neither will stop, the game is a draw.

What is perpetual chase (长捉)?

Repeatedly attacking an enemy piece that cannot escape, so that the position repeats. The chasing player loses. Chases by the general or a soldier are exempt, and chasing an adequately defended piece is generally permitted.

How many moves without a capture is a draw?

Under WXF rules, 60 moves — 120 plies — without a capture draws the game. This is the natural-draw rule and is separate from repetition adjudication.

Do online xiangqi sites judge repetition correctly?

Many do not. Correct chase adjudication requires implementing the casebook's exceptions, and most implementations either declare a draw on repetition or handle perpetual check only. Ours enforces both in games between people. What we cannot yet claim is that the chase half is right: it has not been validated against the official casebook, and it deliberately misses discovered chases.

Try it on a real board

Play a full game against the computer or a real opponent. Free, no download, and every rule on this page enforced by the engine that verified it.