[源碼和文檔分享]基於java的人機五子棋

1 任務設計書

本項目要實現的是五子棋人機版,經過制定棋型的評分表使機器可以對棋盤局勢評估。五子棋玩家雙方分別稱爲「人」、「機器」 ,當人落子後,機器對棋盤掃描獲取可行棋的位置集合,而後遍歷該集合,利用評估函數對每一個空位依次估分,得分最高的位置即爲機器要落子的位置,在使用評估函數對空位打分時,爲了不機器只攻不守,須要使用「換位思考」的思想,也就是說打分時不只考慮自身,還要考慮對方。html

2 類與對象的設計

2.1 類

2.1.1 位置實體類Location

Location類封裝棋盤上的一個位置,AI對局勢分析時會對位置打分,因此位置實體類應該有個字段保存位置分數,Location類的設計如圖1所示。函數

  • public Location(int x, int y)spa

    構造函數。x:橫座標,y:縱座標設計

  • public Location(int x, int y, int player)3d

    構造函數。x:橫座標,y:縱座標,player:位置全部者htm

  • public Location(int x, int y, int player, int score)對象

    構造函數。x:橫座標,y:縱座標,player:位置全部者,score:位置分數blog

  • public void setX(int x)事件

    設置橫座標的值文檔

  • public void setY(int y)

    設置縱座標的值

  • public void setScore(int score)

    設置位置分數

  • public void setPlayer(int player)

    設置該位置由玩家player落子,player可取:Chess.PLAYER、Chess.AI

  • public int getX()

    獲取對象的橫座標

  • public int getY()

    獲取對象的縱座標

  • public int getPlayer()

    獲取該位置是由哪位玩家全部

  • public int getScore()

    獲取該位置的分數

2.1.2 自定義棋盤類ChessPanel

ChessPanel類負責視圖上的事情,如棋盤以及棋子的繪製、棋盤狀態的保存、落子、清空等事件,ChessPanel類的設計如圖2所示。

 


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

https://www.write-bug.com/article/1372.html

相關文章
相關標籤/搜索