象棋的基本規則
棋盤由 9 條直線和 10 條橫線組成,棋子下在交叉點上,中間的空白帶是「河界」。紅黑雙方各 16 顆棋子,紅方先走,雙方輪流各走一步。把對方的帥(將)將死,或讓對方無棋可走(困斃),就獲勝。
| 棋子 | 走法 |
|---|---|
| 帥/將 | 只能在九宮(畫斜線的區域)裡,直走或橫走一格。雙方的帥和將不能在同一條直線上直接面對面(中間沒有任何棋子),這叫「將帥不能照面」。 |
| 仕/士 | 只能在九宮裡,斜走一格。 |
| 相/象 | 斜走兩格(走「田」字),不能過河。田字中心如果有棋子,就走不過去,叫「塞象眼」。 |
| 傌/馬 | 先直走或橫走一格,再斜走一格(走「日」字)。往哪個方向走,那一側緊鄰的格子如果有棋子,就走不過去,叫「拐馬腳」或「蹩馬腿」。 |
| 俥/車 | 直走或橫走,格數不限,中間不能有棋子。 |
| 炮/砲 | 不吃子時和車一樣走;吃子時必須隔著一顆棋子(叫「炮架」,敵我都可以)跳過去吃。 |
| 兵/卒 | 只能往前走一格,不能後退。過了河以後,可以往前或左右走一格。 |
走完一步後,自己的帥(將)不能處在會被對方吃掉的位置,也不能和對方照面。所以被將軍時,一定要先解除;會讓自己被將軍的步,程式也不會讓你走。
怎麼玩這個頁面
- 先選「對電腦」或「雙人同機」。對電腦時可以選難度,以及你要執紅(先走)還是執黑。
- 點自己的棋子,棋盤上會出現綠點,代表可以走的位置;綠色圓圈代表可以吃掉的對方棋子。點綠點就走過去,再點一次同一顆棋子可以取消選取。
- 被將軍時,下方會提示「將軍!」,帥(將)底下也會變紅。
- 分出勝負時,下方會說明是將死還是困斃。按「悔棋」可以退回,按「重新開始」開新的一局。
- 「翻轉棋盤」可以把棋盤上下顛倒,執黑時會自動翻成黑方在下方。
本頁沒有判定的規則
為了讓規則簡單、不出錯,以下這些比賽細則本頁都沒有實作,請玩家自己約定:
- 長將、長捉、一將一捉等「禁止著法」的判負規定。
- 和棋的判定,例如雙方同意和棋、重複局面、限定步數內沒有吃子算和。
- 比賽計時、讓子等規定。
電腦的兩種難度
電腦用的是 minimax 搜尋加上 alpha-beta 剪枝:把每一種走法往後推算幾步,用「棋子價值加上簡單的位置分」替局面打分數,挑出對自己最有利的一步。吃子的交換會多算幾步,避免算到一半就停在被吃的狀態。
| 難度 | 電腦怎麼想 |
|---|---|
| 簡單 | 往後算兩步,再加上隨機,常會下出不夠好的棋。 |
| 普通 | 約 0.9 秒內盡量往後算,最多 5 步,桌機通常算得到 4 到 5 步,手機會少一些。 |
這個電腦沒有開局庫和殘局庫,評估方式也很簡單,不是職業級的象棋引擎。它適合初學者練習,有一定經驗的棋友應該能贏它。
新手小技巧
- 先出大子:開局時先把車、馬、炮動起來,比一直動兵卒有用。常見的開局是「當頭炮」(炮移到中路)或「起馬」。
- 保護好車:車是威力最大的棋子,大約等於兩個馬或炮。換子時先算一下值不值得。
- 注意馬腳和炮架:對方的馬被自己的棋子擋住腳,就跳不過來;反過來,移動棋子時要小心替對方的炮送上炮架。
- 每一步先看對方要吃什麼:走之前先確認對方上一步威脅到哪顆子,很多失誤都是沒看到對方的攻擊。
- 兵卒過河變強:過了河的兵可以橫走,靠近九宮時常常能幫忙將軍。
常見問題
電腦的「簡單」和「普通」差在哪裡?
簡單:只往後算兩步(自己走一步、對方回一步,再把接下來的連續吃子算完),而且會加上隨機,常常下出不是最好的棋。普通:會在約 0.9 秒內盡量往後算,桌機通常能算到 4 到 5 步(雙方各算一步,最多算 5 步),手機會少一些。這是本站自己寫的簡易程式,沒有開局庫和殘局庫,評估方式也很陽春,有一定經驗的棋友應該贏得了它,適合初學者練習。
為什麼有些棋子點了不能走?
可能有幾種情況:被將軍時,只能走能解除將軍的棋;某顆棋子一走開,自己的帥(將)就會被吃或和對方的將帥照面,這顆棋子也不能走;另外馬被拐腳、象眼被塞住時,也走不到那個位置。點選棋子後,綠色圓點就是它現在可以走的位置,點不在圓點上的位置,下方會說明不能走的原因。
什麼是困斃?為什麼困斃也算輸?
困斃是指輪到你走,但你沒有被將軍,卻一步合法的棋都走不出來。中國象棋的規則裡,困斃和被將死一樣算輸,這點和西洋棋(沒棋可走算和棋)不同。這個頁面會自動判斷將死和困斃。
長將、長捉、和棋這些規則有判定嗎?
沒有。正式比賽裡「長將」(一直將軍)和「長捉」(一直追捉同一顆子)有判負等細則,還有雙方同意和棋、限定步數內沒有吃子算和等規定,這些規則很複雜,各比賽的版本也不完全一樣,本頁都沒有實作。如果雙方一直重複同樣的走法,請自己判斷要不要重新開始。電腦在計算時會把重複的局面當成和棋,所以通常會避免一直來回走。
悔棋可以悔幾步?
沒有次數限制,可以一路退回開局。對電腦時,按一次悔棋會把電腦的回應和你的上一步一起退掉,回到輪到你走的時候;雙人模式則一次退一步。已經分出勝負的局面也可以悔棋重走。
可以執黑下嗎?翻轉棋盤是做什麼的?
可以。對電腦時選「我執黑」,電腦會執紅先走,棋盤也會自動翻轉,讓你的棋子在下方。「翻轉棋盤」按鈕可以隨時把棋盤上下顛倒,雙人同機時,兩個人坐在對面輪流下也很方便。翻轉只改變顯示方向,不影響棋局。
棋局會被記錄或上傳嗎?
不會。電腦的計算在你的瀏覽器裡完成,棋局不會送到伺服器,也沒有存在瀏覽器裡,重新整理頁面就會回到開局。
規格與來源
- 棋盤、棋子、走法規則和電腦對手都由本站自行用原生 JavaScript 撰寫;棋盤與棋子是用 SVG 自己畫的,沒有使用他人的圖檔或象棋引擎程式碼。工具本身不載入外部程式庫(全站共用的流量統計與廣告腳本除外)。
- 走法產生器用「perft」(從某個局面數出往後每一層的合法步總數)驗證:從開局局面算到第 1、2、3、4 層分別是 44、1,920、79,666、3,290,240 步,與 Chess Programming Wiki「Chinese Chess Perft Results」頁公布的數字相同;該頁另外 10 個測試局面的前 3 層也全部吻合。
- 電腦對手:minimax+alpha-beta 剪枝、逐步加深、吃子延伸搜尋;評估函式為棋子價值加簡單位置分。計算放在 Web Worker(瀏覽器的背景執行緒)裡,思考時頁面不會卡住。
- 象棋規則屬公開的遊戲規則。棋局不上傳、不儲存。