中國象棋電腦著法表示
象棋被列為士大夫們的修身之藝。現在,則被視為是怡神益智的一種有益身心的活動。下面小編給你介紹,歡迎閱讀。
一、棋盤的標記
象棋的著法表示,簡而言之就是某個棋子從什麼位置走到什麼位置。通常,表示方法可以分為“縱線方式”和“座標方式”兩種,現在作簡要說明:
***1*** 縱線方式,它是中國象棋常用的表示方法,即棋子從棋盤的哪條線走到哪條線。中國象棋規定,對於紅方來說的縱線從右到左依次用“一”到“九”表示,黑方則是“1”到“9”***如圖一所示***,這種表示方式體現了古代中國象棋研究者的智慧。
***2*** 座標方式,它是國際象棋常用的表示方法,把每個格子按座標編號***如圖二所示***,只要知道起始格子和到達格子,就確定了著法,這種表示方式更方便也更合理,而且還可以移植到其他棋類遊戲中。中國象棋也可以用這種方法來表示,按照國際象棋的規則,縱線從左到右***紅方***依次為a b c d e f g h i,橫線從下到上***紅方***依次為0 1 2 3 4 5 6 7 8 9***如圖三所示***。
二、棋子的名稱
為方便表示,中國象棋的棋子名稱除了用漢字以外,還可以用字母,字母可從國際象棋中稍加改動得到,而數字是為了方便棋譜的輸入***以便用在數字小鍵盤上******見表一***:
紅方黑方字母相當於國際象棋中的棋子數字
帥將KKing***王***1
仕士AAdvisor***沒有可比較的棋子***2
相象B[1]Bishop***象***3
馬馬N[2]Knight***馬***4
車車RRook***車***5
炮炮CCannon***沒有可比較的棋子***6
兵卒PPawn***兵***7
表一 中國象棋棋子代號
三、ICCS座標格式
ICCS是中國象棋網際網路伺服器***Internet Chinese Chess Server***的縮寫。在網路對弈伺服器處理著法時,把著法表示成起點和終點的座標是最方便的
,因此這種格式最早在計算機上使用。
1. H2-E2***炮二平五*** H7-E7***炮8平5***
2. E2-E6***炮五進四*** D9-E8***士4進5***
3. H0-G2***馬二進三*** H9-G7***馬8進7***
4. B2-E2***炮八平五*** B9-C7***馬2進3***
5. E6-E4***前炮退二*** I9-H9***車9平8***
在“中國象棋通用引擎協議”***UCCI協議***中,座標格式得到進一步簡化,例如H2-E2記作h2e2,把符號限制在一個32位資料中,處理起來速度更快。
四、中文縱線格式
這種格式對於廣大象棋愛好者來說再熟悉不過了,但是這裡還是要說明兩個重要的細節。
一、仕***士***和相***象***如果在同一縱線上,不用“前”和“後”區別,因為能退的一定在前,能進的一定在後。
二、兵要按情況討論:
***1*** 三個兵在一條縱線上:用“前”、“中”和“後”來區別;
***2*** 三個以上兵在一條縱線上:最前面的兵用“一”代替“前”,以後依次是“二”、“三”、“四”和“五”;
***3*** 在有兩條縱線,每條縱線上都有一個以上的兵:按照“先從右到左,再從前到後”***即先看最左邊一列,從前到後依次標記為“一”和“二”,可能還有“三”,再看右邊一列***的順序,把這些兵的位置標依次標記為“一”、“二”、“三”、“四”和“五”,不在這兩條縱線上的兵不參與標記。
如右圖局面,四個兵分別位於四線和六線,下表列舉了幾種走法的座標格式和縱線格式。
中文縱線格式數字縱線格式座標格式
另外需要注意的是:
***1*** 如果黑方出現數字,不管數字代表縱線標號還是前進或後退的格數,都用阿拉伯數字表示,在計算機中顯示全形的數字。但是代表同一縱線上不同兵的“一二三四五”***它們類似於“前中後”的作用***例外,例如例局面紅黑互換,那麼某步著法就應該寫成“一卒平5”。
***2*** 在傳統的象棋記譜中,如果發生以上這種情況,通常用五個字來表示,例如“前兵四平五”等,在計算機處理過程中就比較麻煩,因為4個漢字***一個漢字佔16位***的著法可以儲存在一個64位的字當中***在C語言中資料型別為__int64或long long***,而增加到5個漢字就比較麻煩了。黑方用全形的數字是同一個道理。
五、WXF縱線格式
WXF是世界象棋聯合會***World XiangQi Federation***的縮寫,在該組織建議的記譜方式中,漢字被字母和數字所代替,即“進”、“退”和“平”分別用符號“+”、“-”和“.”表示,“前”、“中”和“後”也分別用符號“+”、“-”和“.”表示,並且寫在棋子的後面***例如“前炮退二”寫成“C+-2”而不是“+C-2”***,多個兵位於一條縱線時,代替“前中後”的“一二三四五”分別用“abcde”表示***這種情況極少發生***。
另外,代表棋子名稱的第一個字母,還可以用數字1到7表示,這是為了方便數字小鍵盤的輸入,例如“炮二平五”可以記作“62.5“***6代表炮***選用符號“+”、“-”和“.”也是出於這個考慮。
六、棋子代號問題
符號縱線格式是世界象棋聯合會***WXF***推薦的記譜格式,但是現在棋子的字母代號用法不一,主要問題集中在仕***士***、相***象***和馬的翻譯上。仕***士***譯成Advisor、Bachelor、Guard等,相***象***譯成Bishop、Elephant、Minister等,馬譯成Horse或Knight。
出於這點考慮,很多象棋軟體都能識別不同的代號,例如ElephantBoard將B和E都解釋為相***象***,H和N都解釋為馬,SaoLa則可以由使用者自定義字母代號,等等。
七、簡體和繁體的識別問題
無論採取哪種格式記譜,棋譜最終應該被象棋軟體所識別。通常象棋軟體都應支援以上三種格式,除“中文縱線格式”以外,其他兩種格式都用英文和數字表示,不涉及中文字元,所以處理起來比較容易。而中文格式卻非常麻煩,除了涉及到簡體還是繁體外,還有字符集的問題。
象棋軟體應該充分考慮這個問題,例如ElephantBoard在這個問題上就考慮得十分周到。在GB字符集***大陸地區***裡,可識別簡體和繁體字元,而在Big5字符集***港臺地區***裡,由字符集轉換引起的問題也考慮進去了——表示棋子位置的“後”,由GB字元轉換為Big5字元時,仍然寫為“後”,但正確的寫法是“後”,無論如何這兩個“後***後***”都會被ElephantBoard認可。