中國象棋競技規則與程序設計探討

中國象棋棋規復雜,很多棋例難以判定,同時程序設計也造成了許多困難。亞規程序設計簡單,但很多不合理的地方。這造成了象棋推廣的難度。

鑑於此,我提出了一些自己的理解。希望棋友們和程序設計員們共同研究指正。我試驗了一些棋例,用下面要說的三禁三原則,能很好的進行判定,也能很好的進行程序設計。

我們首先規定:未過河的兵卒不算子,以下所有討論均為此原則。我相信兵卒未過河不算子也是很多老一輩棋手研究的結果,肯定是有利去規則的,這裡不做研究了。

一、“殺”。這個沒有必要探討,殺了,就是勝利了,棋局就結束了,不存在長殺的問題。說這個是為了程序設計判定結束和引出下面的問題。

二、“將”和“叫殺”。“叫殺”又稱“要殺”等,即下步殺。“將”應該等同於“要殺”,不能長“將”,不能長“叫殺”,或者不能“將”和“叫殺”混合長打。很多棋例就是忽略了“叫殺”,覺得“叫殺”是下步的事情,要殺算做“閒”或者“捉”,都是不合理的,這是造成難以判別的根源。其實“將”和“叫殺”是一樣的,都是下步把你的老將殺死,即下一步達到“一”條的“殺”。因此本條就是下步達到“一”。本條為禁止著法,即任何情況下禁止長“將”和長“叫殺”。

三、“吃”與“叫吃”或“叫抽”。有人說不是到捉了麼,先別急,捉和將是一樣的,將的意思是就是捉老將,因此捉子之前先有一步吃,只是吃老將棋局就結束了,吃子的話,棋局照常進行。這也方便程序判定。長吃是不存在的,但是長叫抽存在,所以自然就不能長叫抽,長叫抽就認為是長吃。這裡有5條:

a. 順序原則,一是不違反前述禁止招法的情況下,才能探討本條內容,二是前述原則按順序優先,“將”>“吃”>“捉”,三是如果一著同時存在多個效果,最大效果論。

b. 降級原則,不違反順序原則的基礎上,招法效果降級處理。處理後,前述招法效果等同與本條招法;如:不違反長“將”,“將”等同於“叫抽”。

c. 不變做和原則,不變做和只在同級討論,同級不變做和,如果不同級,參考a和b。這樣就解決了多打對一打的問題,不用單獨規定了,比如2將對一將一捉,2將變著。又比如一將一叫抽對兩叫抽,不變做和。

本條表述為,不違反順序原則基礎上,按降級原則處理後,不能長“叫抽”。

四、“捉”。“捉”就是下步“吃”。第3條說了後,相信這條就不用細說原則問題了。本條中的“捉”即是滿足順序原則情況下,降級處理完的“捉”。長捉禁止。但是本條長捉有另外一個問題,就是常捉必須是新生產的“捉”,不能算原來已經存在了的。“捉”的問題比較複雜,也是棋例最多的。子分為無根子,有根子,假根子算無根,捉無根子才算捉。那麼長捉就比較複雜了:a.單對單不能長捉;b.多對單不能聯合長捉c.多對多不能聯合常捉,d將帥可以常捉。但是這裡需要對“長”做出規定:1.有循環的捉子不能超過三個循環2明顯捉不死的常捉,又沒循環的,不能連續超過總子數的六倍回合數。(2條對程序設計不利,程序不知道什麼是明顯捉不死,但人為可以判斷,這裡有待研究與補充,如第七回合捉死了怎麼解決的問題)。

兌和閒,不做討論了,是允許著法。


中國象棋競技規則與程序設計探討


分享到:


相關文章: