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

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所示。

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 3,186評論 2 9
  • 分享給大家一個很久之前寫的一個純C#控制臺 3D闖關(guān)游戲代碼 直接復(fù)制就可以用 初學(xué)者可以看看 學(xué)習(xí)一下編程思想還...
    Magic_Dong閱讀 4,445評論 3 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • 我愿當你的樹洞 傾聽你的煩惱 回你一些幸福的語言 將它轉(zhuǎn)換成枝葉 給你一個休憩的地方
    zjj_windmill閱讀 301評論 0 0
  • 很完美的一天啊,天氣預(yù)報說今晚開始又要來臺風(fēng)了就連短信都發(fā)來了,在這八九月的第三次臺風(fēng)又要降臨了。這一天,也是我開...
    學(xué)柔學(xué)剛閱讀 137評論 1 1

友情鏈接更多精彩內(nèi)容