資源簡介
AI智能人機對戰五子棋(Java實現圖形界面) 的代碼,實現了初級人機對戰
代碼片段和文件信息
/**
?*?2017年6月25日Computer.java我和奧巴馬
?*/
package?GoBang;
import?java.util.Random;
/**
?*?@author?我和奧巴馬
?*?@date?2017年6月25日
?*?@filename?Computer.java
?*?@description?TODO
?*/
public?class?Computer?{
static?int?depth=1;
static?int?computerColor=GoChess.BLACK;
/*alpha_beta剪枝搜索尋找著點
Alpha,即搜索到的最好值,任何比它更小的值就沒用了,因為策略就是知道Alpha的值,任何小于或等于Alpha的值都不會有所提高
Beta,即對于對手來說最壞的值。這是對手所能承受的最壞的結果,因為我們知道在對手看來,他總是會找到一個對策不比Beta更壞的。
如果搜索過程中返回Beta或比Beta更好的值,那就夠好的了,走棋的一方就沒有機會使用這種策略了*/
public?static?int?alpha_betaFind(int?depthint?alphaint?betaint?colorint?xint?y){
if(depth>Computer.depth||GoChess.isEnd(xycolor%2+1)!=0){
int?ans?=GoChess.reckon(computerColor)-GoChess.reckon(computerColor%2+1);
if(depth%2==0)
ans=-ans;
return?ans;
}
for(int?i=1;i for(int?j=1;j if(!GoChess.isEmpty(ij))
continue;
GoChess.sureMove(ijcolor);
int?val=-alpha_betaFind(depth+1-beta?-alphacolor%2+1ij);??//ans的值給val
GoChess.blank(ij);
if(val>=beta)
return?beta;?????//返回比beta好的值??val=(-ans)>=-beta====beta<=-val??//所以加個?-?號
if(val>alpha)
alpha=-val;??????//返回比alpha更壞的值val=(-ans)<-alpha====val>alpha
}
}
return?alpha;
}
public?static?int[]?getNext(int?color){
int?rel[]=new?int[2];
int?ans=-100000000;???????
Random?random=new?Random(47);
if(GoChess.number(GoChess.BLACK)<1){
if(GoChess.table[GoChess.COLS/2][GoChess.ROWS/2]!=computerColor){????//電腦后手需定位
if(GoChess.isEmpty(GoChess.COLS/2GoChess.ROWS/2)){????//中點
rel[0]=GoChess.COLS/2;
rel[1]=GoChess.ROWS/2;
}
else{
rel[0]=GoChess.COLS/2+1;?????//向右占位
rel[1]=GoChess.ROWS/2;
}
}
}else{
for(int?x=1;x for(int?y=1;y if(!GoChess.isEmpty(x?y))
continue;
GoChess.sureMove(x?y?color);????//黑棋落子
int?val=-alpha_betaFind(0-100000000100000000color%2+1xy);????//判斷白棋局面
int?ran=random.nextInt(100);???????//100是不包含在內的,只產生0~100之間的數????
if(val>ans||val==ans&&ran>50){????//val(-遞歸返回值)<-ans=====val>ans?||ans一直被刷新
ans=val;
rel[0]=x;
rel[1]=y;
}
GoChess.blank(x?y);
}
}
}
return?rel;
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-01-18?14:20??GoBang\
?????文件?????????301??2018-01-18?14:20??GoBang\.classpath
?????文件?????????382??2018-01-18?14:20??GoBang\.project
?????目錄???????????0??2018-01-18?14:20??GoBang\.settings\
?????文件?????????598??2018-01-18?14:20??GoBang\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2018-09-25?18:04??GoBang\bin\
?????目錄???????????0??2018-09-25?18:04??GoBang\bin\GoBang\
?????文件????????1755??2018-09-25?18:04??GoBang\bin\GoBang\Computer.class
?????文件????????1715??2018-09-25?18:04??GoBang\bin\GoBang\GoBang_main$1.class
?????文件????????1540??2018-09-25?18:04??GoBang\bin\GoBang\GoBang_main$2.class
?????文件????????1019??2018-09-25?18:04??GoBang\bin\GoBang\GoBang_main$3.class
?????文件????????1027??2018-09-25?18:04??GoBang\bin\GoBang\GoBang_main$4.class
?????文件?????????743??2018-09-25?18:04??GoBang\bin\GoBang\GoBang_main$5.class
?????文件?????????908??2018-09-25?18:04??GoBang\bin\GoBang\GoBang_main$6.class
?????文件????????4346??2018-09-25?18:04??GoBang\bin\GoBang\GoBang_main.class
?????文件?????????854??2018-09-25?18:04??GoBang\bin\GoBang\GoChess$1.class
?????文件????????6738??2018-09-25?18:04??GoBang\bin\GoBang\GoChess.class
?????目錄???????????0??2018-01-18?14:20??GoBang\image\
?????文件????????1352??2018-01-18?14:20??GoBang\image\Black.PNG
?????文件????????9527??2018-01-18?14:20??GoBang\image\Computer.png
?????文件????????8958??2018-01-18?14:20??GoBang\image\User.PNG
?????文件????????1382??2018-01-18?14:20??GoBang\image\White.PNG
?????文件????????8859??2018-01-18?14:20??GoBang\image\music.png
?????文件????????3853??2018-01-18?14:20??GoBang\image\play.png
?????文件????????3892??2018-01-18?14:20??GoBang\image\stop.png
?????目錄???????????0??2018-01-18?14:20??GoBang\music\
?????文件????47549998??2018-01-18?14:20??GoBang\music\IF?YOU-BIGBANG.wav
?????文件??????120044??2018-01-18?14:20??GoBang\music\failure.wav
?????文件???????23254??2018-01-18?14:20??GoBang\music\sale.wav
?????文件??????424934??2018-01-18?14:20??GoBang\music\success.wav
?????目錄???????????0??2018-01-18?14:20??GoBang\src\
............此處省略4個文件信息
- 上一篇:超市選購系統
- 下一篇:java調用百度公交系統
評論
共有 條評論