Skip to content

Ye-Yong-Chi/ChineseChess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

ChineseChess

象棋遊戲設計

需求:

  1. 人機對打

  2. 人人對打

  3. 搜尋深度設定(電腦強度)

  4. 悔棋,還原

  5. 下棋步法名稱顯示(ex:走三進一)

系統分為兩部分:

  1. AI設計

  2. 界面還有程式輔助設計(ex: UI顯示 以及操作和悔棋還原)

遊戲方式:

  1. 由鍵盤輸入指令控制要哪個要動 EX: 1-> 車(0,9) 2-> 馬(1,9) 依此類推,選定後再顯示該單位可走路線(x,y)值,在由選手輸入x y值移動,以,做間隔。

  2. 吃掉對方將軍為勝利者

AI設計

建立一顆博弈樹來表示下棋的過程,樹中的每一個節點代表棋盤上的一個局面,對每一個節點根據不同的走法又產生不同的局面(生出新的結點),如此不斷進行下去直到沒有可以選擇的走法,即到達葉子結點(棋局結束)。

該樹包含三種類型的結點

  1. 奇數層的中間結點(以及根結點),表示輪到紅方

  2. 偶數層的中間結點,表示輪到黑方

  3. 葉子結點,表示棋局結束

局面評估

自己定義棋子的價值,考慮棋子位置及子力總合來替局面打分數。

建議用Alpha-Beta搜尋算法

悔棋和還原功能

(建議)悔棋主要任務為:

  1. 下棋回合數減一

  2. 將當前局面的數據保存到[步法]的queue裡,以供還原

  3. 從[步法]queue中POP出上一回合的棋局數據,覆蓋目前回合。

  4. 將戰況的列表框中的目前回合的保存到一個[步法名稱]QUEUE中,以供還原用,然後刪掉列表框中的目前回合走法名稱。

還原則跟悔棋相反:

  1. 下棋回合數加一

  2. 跟上面相反就對了….

下棋步法顯示功能

簡單來說就是將步法的起點坐標,終點坐標轉成中國象棋規範的走法名稱。

指定棋類為一個class(內含ID 名稱 子力 顏色(哪方) 目前位置(x,y) 存在(是否被吃掉了))

指定每個種類(EX:車馬砲士將兵象)繼承棋類各為class

建議定義一個class作為遊戲平台將各種棋類CLASS包含在內部,而AI引擎定義為另一個CLASS分開做。

Main function裡最好只需要多加

Game.start();

就好

其他自由發揮 只要能做到上述需求即可

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages