Repetition and perpetual check
The rule that catches every chess player exactly once
In Western chess, checking your opponent forever is how a losing player saves the game: it is a draw by repetition, and it is a lifeline. In xiangqi it is a loss for the player doing the checking. That single inversion decides an enormous number of games, it is the most common way a chess player loses their first serious xiangqi game from a winning position, and it is enforced on this site.
1. The rule
When the same position comes up for the third time, the game ends. What happens then depends on what was going on during the repetition:
- If one side gave check with every single move it made inside the repeating cycle, that side loses.
- Otherwise the game is a draw.
So the burden falls on the aggressor. A player who cannot make progress except by checking is not allowed to hold the game hostage — they must vary or accept the loss. The defender shuffling a general between two squares is doing nothing wrong at all.
2. What "the same position" means
The same arrangement of pieces with the same player to move. Those last five words matter: a board that looks identical but has the other player to move is a different position and does not count toward the three. This is why a repetition takes at least four moves to build rather than two — each side has to return to its own starting arrangement with its own turn to play.
Nothing else is part of the identity. Which route the pieces took to get there, how many moves have been played, and what either player intended are all irrelevant.
3. One quiet move changes the verdict
This is where it becomes subtle, and it is worth understanding rather than memorising. "Check on every move" is measured over the whole repeating cycle. If the aggressor slips in a single move that is not a check — a repositioning, a threat that is not a check, anything — while still returning to the same position, the cycle is no longer all checks and the result is a draw instead of a loss.
That cuts both ways, and it is the practical takeaway. If you are the one repeating and you would rather draw than lose, one quiet move inside the loop is enough. If you are defending against a perpetual and you would rather win than draw, you need your opponent to have no quiet move available that keeps the position repeating.
4. Only the cycle counts, not the whole game
The cycle is measured from the third-from-last occurrence of the repeated position onward — not from the start of the game. A quiet move played long before the repetition began does not rescue anyone. It is outside the loop, and the loop is the only thing being judged.
This is the detail that makes the rule implementable at all, and it is the one this site's engine has had wrong before. The tests that cover it now assert the entire timeline of statuses rather than the final one, because a verdict landing four moves late, or drawn from the wrong span of the game, looks exactly like a correct one if you only read the end.
5. What this site enforces, and what it does not
The engine here resolves perpetual check and repetition draws, by the rules above, automatically and without asking anyone. When it fires you will see the game end as a loss for the checking side.
It does not implement perpetual chase (长捉), and that is a real gap rather than a simplification. Full tournament rules also forbid endlessly chasing an undefended piece without ever giving check, and treat it much the same way — the chaser loses. Deciding what counts as a chase requires judging which piece is threatened, whether it is protected, and whether the threat is real, which is a great deal more machinery than perpetual check needs. Here, a perpetual chase will simply repeat into a draw. Under club or tournament rules it would not, so do not learn the habit from this board.
6. At the board
Three practical things follow, and they are worth more than the rule text:
- Checking is not safe. Coming from chess, the reflex when a position turns bad is to start giving checks. Here that reflex loses games outright.
- Defending by shuffling is legitimate. If you are worse and your opponent can only make progress with checks, repeating is a winning strategy, not a cowardly one.
- Count to three, and count the cycle. When you see a position for the second time, work out whether every move in the loop was a check before you commit to a third.
Play a game and the board scores this for you when it fires: a repetition ends with Draw by repetition, a perpetual with Perpetual check and the name of the winner. Nothing warns you while the cycle is building, so the counting in the last section is still yours to do. Next: the endgame, where the other great chess-to-xiangqi inversion lives — stalemate is a loss here, not a draw.