1 任務(wù)設(shè)計書
本項目要實現(xiàn)的是五子棋人機版,通過制定棋型的評分表使機器能夠?qū)ζ灞P局勢評估。五子棋玩家雙方分別稱為“人”、“機器” ,當人落子后,機器對棋盤掃描獲取可行棋的位置集合,然后遍歷該集合,利用評估函數(shù)對每個空位依次估分,得分最高的位置即為機器要落子的位置,在使用評估函數(shù)對空位打分時,為了避免機器只攻不守,需要使用“換位思考”的思想,也就是說打分時不僅考慮自身,還要考慮對方。
2 類與對象的設(shè)計
2.1 類
2.1.1 位置實體類Location
Location類封裝棋盤上的一個位置,AI對局勢分析時會對位置打分,所以位置實體類應(yīng)該有個字段保存位置分數(shù),Location類的設(shè)計如圖1所示。

public Location(int x, int y)
構(gòu)造函數(shù)。x:橫坐標,y:縱坐標
public Location(int x, int y, int player)
構(gòu)造函數(shù)。x:橫坐標,y:縱坐標,player:位置所有者
public Location(int x, int y, int player, int score)
構(gòu)造函數(shù)。x:橫坐標,y:縱坐標,player:位置所有者,score:位置分數(shù)
public void setX(int x)
設(shè)置橫坐標的值
public void setY(int y)
設(shè)置縱坐標的值
public void setScore(int score)
設(shè)置位置分數(shù)
public void setPlayer(int player)
設(shè)置該位置由玩家player落子,player可?。篊hess.PLAYER、Chess.AI
public int getX()
獲取對象的橫坐標
public int getY()
獲取對象的縱坐標
public int getPlayer()
獲取該位置是由哪位玩家所有
public int getScore()
獲取該位置的分數(shù)
2.1.2 自定義棋盤類ChessPanel
ChessPanel類負責(zé)視圖上的事情,如棋盤以及棋子的繪制、棋盤狀態(tài)的保存、落子、清空等事件,ChessPanel類的設(shè)計如圖2所示。

參考文檔和完整的文檔和源碼下載地址: