資源簡介
壓縮包內含代碼與可執行jar包,直接idea打開就可以運行;
1.在jdk1.8環境下工作,用IDEA開發的JPanel窗口程序
2.功能主要為人機對戰,支持悔棋,支持電腦先行(電腦先行一般很難贏它),支持重新開始
3.該五子棋AI使用了五元組的五子棋算法,以五個一組將棋盤分為一個個橫豎斜的數組,計算各個組的權重,并不是用的極大極小值剪枝算法,算是一種新的思路,但是這個AI很強!大家都知道黑棋先手必勝,所以黑棋先手的情況下只要認真還是能贏的,但是讓AI先行,就不好贏了,我水平很低,下了幾把目前沒贏過。
1.在jdk1.8環境下工作,用IDEA開發的JPanel窗口程序
2.功能主要為人機對戰,支持悔棋,支持電腦先行(電腦先行一般很難贏它),支持重新開始
3.該五子棋AI使用了五元組的五子棋算法,以五個一組將棋盤分為一個個橫豎斜的數組,計算各個組的權重,并不是用的極大極小值剪枝算法,算是一種新的思路,但是這個AI很強!大家都知道黑棋先手必勝,所以黑棋先手的情況下只要認真還是能贏的,但是讓AI先行,就不好贏了,我水平很低,下了幾把目前沒贏過。

代碼片段和文件信息
package?fiveBord;
public?class?Chessman?extends?DrawChessBoard{
????private?int?color;??????//1-white,0-black
????private?boolean?placed?=?false;
????private?int?stepNum?=?0;
????private?int?computerPieceX?=?0;
????private?int?computerPieceY?=?0;
????private?int?score;??????????//對該位置的打的分數
????public?Chessman(int?colorboolean?placedint?stepNumint?computerPieceXint?computerPieceY?int?score){
????????this.color=color;
????????this.placed=placed;
????????this.stepNum=stepNum;
????????this.computerPieceX=computerPieceX;
????????this.computerPieceY=computerPieceY;
????????this.score=score;
????}
????public?boolean?getPlaced()?{
????????return?placed;
????}
????public?void?setPlaced(boolean?placed)?{
????????this.placed?=?placed;
????}
????public?int?getColor()?{
????????return?color;
????}
????public?void?setColor(int?color)?{
????????this.color?=?color;
????}
????public?int?getStepNum()?{
????????return?stepNum;
????}
????public?void?setStepNum(int?stepNum)?{
????????this.stepNum?=?stepNum;
????}
????public?int?getComputerPieceX()?{
????????return?computerPieceX;
????}
????public?void?setComputerPieceX(int?computerPieceX)?{
????????this.computerPieceX?=?computerPieceX;
????}
????public?int?getComputerPieceY()?{
????????return?computerPieceY;
????}
????public?void?setComputerPieceY(int?computerPieceY)?{
????????this.computerPieceY?=?computerPieceY;
????}
????public?int?getScore()?{
????????return?score;
????}
????public?void?setScore(int?score)?{
????????this.score?=?score;
????}
????//電腦落子
????public?Chessman?computerPiece(int?computerColorChessman[][]?cm){
????????//每次都初始化下score評分數組
????????int[][]?chessboard?=?new?int[ROWS][ROWS];???//與界面棋盤對應,0代表空,-1代表機器,1代表人類
????????int[][]?score?=?new?int[ROWS][ROWS];????????//每個位置得分
????????for(int?i?=?0;?i??????????????for(int?j?=?0;?j?????????????????chessboard[i][j]?=?0;
????????????????if(cm[i][j]!=null?&&?cm[i][j].getColor()==BLACK){
????????????????????chessboard[i][j]?=?1;
????????????????}
????????????????if(cm[i][j]!=null?&&?cm[i][j].getColor()==WHITE){
????????????????????chessboard[i][j]?=?-1;
????????????????}
????????????????score[i][j]?=?0;
????????????}
????????}
????????//每次機器找尋落子位置,評分都重新算一遍(雖然算了很多多余的,因為上次落子時候算的大多都沒變)
????????//先定義一些變量
????????int?humanChessmanNum?=?0;???//五元組中的黑棋數量
????????int?machineChessmanNum?=?0;?//五元組中的白棋數量
????????int?tupleScoreTmp?=?0;??????//五元組得分臨時變量
????????int?goalX?=?-1;?????//目標位置x坐標
????????int?goalY?=?-1;?????//目標位置y坐標
????????int?maxScore?=?-1;??//最大分數
????????//1.掃描橫向的15個行
????????for(int?i?=?0;?i?15;?i++){
????????????for(int?j?=?0;?j?11;?j++){
????????????????int?k?=?j;
????????????????while(k?
????????????????????if(chessboard[i][k]?==?-1)?machineChessmanNum++;
????????????????????else?if(chessboard[i][k]?==?1)humanChessmanNum++;
????????????????????k++;
????????????????}
??????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-02-19?19:06??FiveBord\
?????目錄???????????0??2019-02-19?19:06??FiveBord\.idea\
?????文件?????????433??2019-02-19?16:53??FiveBord\.idea\FiveBord.iml
?????目錄???????????0??2019-02-19?19:02??FiveBord\.idea\artifacts\
?????文件?????????437??2019-02-19?19:02??FiveBord\.idea\artifacts\FiveBord_jar.xm
?????文件?????????384??2019-02-19?16:52??FiveBord\.idea\misc.xm
?????文件?????????275??2019-02-19?16:52??FiveBord\.idea\modules.xm
?????文件????????8915??2019-02-14?14:23??FiveBord\.idea\uiDesigner.xm
?????文件???????22056??2019-02-19?19:06??FiveBord\.idea\workspace.xm
?????文件?????????433??2019-02-14?14:09??FiveBord\FiveBord.iml
?????目錄???????????0??2019-02-19?19:06??FiveBord\out\
?????目錄???????????0??2019-02-19?19:06??FiveBord\out\artifacts\
?????目錄???????????0??2019-02-19?19:06??FiveBord\out\artifacts\FiveBord_jar\
?????文件??????199062??2019-02-19?19:06??FiveBord\out\artifacts\FiveBord_jar\FiveBord.jar
?????目錄???????????0??2019-02-19?18:28??FiveBord\out\production\
?????目錄???????????0??2019-02-19?18:29??FiveBord\out\production\FiveBord\
?????目錄???????????0??2019-02-19?18:29??FiveBord\out\production\FiveBord\me
?????文件??????????52??2019-02-19?18:29??FiveBord\out\production\FiveBord\me
?????目錄???????????0??2019-02-19?19:05??FiveBord\out\production\FiveBord\fiveBord\
?????文件????????4854??2019-02-19?18:29??FiveBord\out\production\FiveBord\fiveBord\Chessman.class
?????文件????????1248??2019-02-19?18:59??FiveBord\out\production\FiveBord\fiveBord\DrawChessBoard$1.class
?????文件????????1404??2019-02-19?18:59??FiveBord\out\production\FiveBord\fiveBord\DrawChessBoard$2.class
?????文件????????1268??2019-02-19?18:59??FiveBord\out\production\FiveBord\fiveBord\DrawChessBoard$3.class
?????文件????????9143??2019-02-19?18:59??FiveBord\out\production\FiveBord\fiveBord\DrawChessBoard.class
?????文件?????????898??2019-02-19?19:05??FiveBord\out\production\FiveBord\fiveBord\Main.class
?????目錄???????????0??2019-02-19?18:29??FiveBord\out\production\FiveBord\image\
?????文件??????204549??2019-02-19?18:29??FiveBord\out\production\FiveBord\image\chessboard.jpg
?????目錄???????????0??2019-02-19?18:28??FiveBord\src\
?????目錄???????????0??2019-02-19?18:28??FiveBord\src\me
?????文件??????????52??2019-02-15?10:28??FiveBord\src\me
?????目錄???????????0??2019-02-19?19:05??FiveBord\src\fiveBord\
............此處省略5個文件信息
- 上一篇:用java編寫的火柴游戲
- 下一篇:Android多級下拉列表菜單
評論
共有 條評論