在這一章中,主要介紹改善現有的棋形辨識技術,推廣原有的 各種棋形辨識方法,應用在象棋上面。本篇所使用的棋形辨識方法 有下列三者:基本採用 MDFA(Modified Deterministic Finite-state Automaton )棋形辨識技術(MDFA 為一類似 DFA 之架構,以符合本篇 棋形比對系統之需求),以絕對位置比對為主,相對位置比對為輔,
完整的建置及使用棋形流程。首先在第 3.1 節中介紹在象棋上應用 MDFA 棋形辨識技術。接下來在第 3.2 節講解象棋的絕對位置及相對 位置比對。第 3.3 節介紹完整的建置及使用棋形流程。
3.1 在象棋上應用 MDFA 棋形辨識技術
一棋形由數個子棋形構成,子棋形為某一棋子在盤面上的位 置,若此棋子位於指定位置,則稱此子棋形成立,一棋形成立與否 的充要條件為他的所有子棋形皆成立。
所有子棋形構成節點點產生出的 MDFA,即用來判斷所有棋形 中,哪些成立,哪些不成立。圖 3-1 為一象棋 MDFA 例子,左右兩棋 盤分別代表兩種棋形,兩種棋形比對可合成一個 MDFA。
子棋形分為絕對位置及相對位置兩種,接下來會在 3.1.1 介紹 棋子絕對位置比對,在 3.1.2 中介紹棋子相對位置比對。
圖 3-1 象棋 MDFA 實例
3.1.1 棋子絕對位置比對
本篇定義棋子絕對位置的方法為-某特定棋子是否有在一特定 區域裡出現。其格式為(MatchLoc 區域 A 棋子 B),此格式代表棋 子 B 是否有在區域 A 中出現。
舉個例子,(MatchLoc (Column7 Column8 Column9) 硨),此子 棋形代表硨是否有在第 7 到第 9 行中出現,即為圖 3-2 所表之區域。
圖 3-2 棋子絕對位置
3.1.2 棋子相對位置比對
本篇定義棋子相對位置比對的方式為-從某一特定或不特定位 置,
個例子,(MatchSeq LA5 UP 將 馬 * ANY * 炮),此棋形代 表從
向一特定方向看去,沿途是否依順序出現指定棋子。其格式為 (MatchSeq 位置 A 方向 B 棋子 C 棋子 D ... 棋子 N),此格式 代表從位置 A 往方向 B 看去,必需先經過棋子 C,再來棋子 D,依此 類推,最後棋子 N。
舉
LA5 往上方的序列是否為: 黑將-黑馬-任意數量空格-任意 棋子-任意數量空格-紅炮。即為圖 3-3 所示圖形。
圖 3-3 棋子相對位置
3.2 完整的建置及使用棋形流程
本篇所提出的方法,為使用一圖形化介面棋形編輯器,來產生 並且讀取代儲存棋形,儲存起來的棋形原始檔案,可以再經由編譯 器轉換成一 MDFA,再依照此 MDFA 產生比對棋形所需的程式碼。流 程如圖 3-4 所示。
圖 3-4 完整的建置及使用棋形流程
本篇所使用之圖形化介面棋形編輯器可完整編輯所有想表示的 棋形,具備的功能有-讀取棋形檔案、儲存棋形擋案、開啟新的棋 形、複製棋形、刪除棋形、上下選擇棋形、編輯絕對位置子棋形、
編輯相對位置子棋形、編輯棋形符合動作。下圖為此圖形化介面棋 形編輯器截圖。
圖 3-5 圖形化介面棋形編輯器