課程
/前端開發(fā)
/JavaScript
/JS實現(xiàn)人機大戰(zhàn)之五子棋(AI篇)
這個任何5個子都能贏的bug怎么解決???求詳細
2016-07-18
源自:JS實現(xiàn)人機大戰(zhàn)之五子棋(AI篇) 2-3
正在回答
你只要再建立一個判斷落子是黑色還是白色的機制就可以了,比如我是這樣寫的
var judgement=function(x,y,color){ //judgement函數(shù)判斷游戲是否結束,color 判斷落子顏色
for(var i=0;i<counter;i++){
if(win[x][y][i]){ ?//點(x,y)處有贏法
if(color==1){ //判斷落子為黑色的情況
userWin[i]++;//黑色落子累加器
if(userWin[i]==5){ //黑色落子在某種贏法中達到5個則執(zhí)行以下語句
window.alert("黑子勝利!");
document.getElementById("text").innerHTML="游戲結束";
document.getElementById("end").style.visibility="visible";
over=true;
}
if(color==2){?//判斷落子為白色的情況
pcWin[i]++; //白色落子累加器
if(pcWin[i]==5){//白色落子在某種贏法中達到5個則執(zhí)行以下語句
window.alert("白子勝利!");
...
chess.onclick=function(e){
if(over){
return ;
var x=Math.floor(e.offsetX/30);
var y=Math.floor(e.offsetY/30);
if(chessBoard[x][y]==0){
oneStep(x,y,me);
if(me){
chessBoard[x][y]=1;
else{
chessBoard[x][y]=2;
judgement(x,y,chessBoard[x][y]); ?//調用judgement函數(shù)
me=!me;
<!--希望能幫到你-->
舉報
"AlphaGO"我要和你下五子棋,教程帶你實現(xiàn)五子棋AI
1 回答為什么我寫的不能彈出 你贏了 和 計算機贏了?
1 回答左斜不會贏??!AI都不管左斜的,下滿了也進入不了贏得界面。
1 回答為什么填滿五顆子不彈出你贏了呢?
4 回答哪里不對啊,怎么下都不會贏,彈框都不出來
1 回答我想在下了第五顆棋子之后再彈出贏了
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2016-07-21
你只要再建立一個判斷落子是黑色還是白色的機制就可以了,比如我是這樣寫的
var judgement=function(x,y,color){ //judgement函數(shù)判斷游戲是否結束,color 判斷落子顏色
for(var i=0;i<counter;i++){
if(win[x][y][i]){ ?//點(x,y)處有贏法
if(color==1){ //判斷落子為黑色的情況
userWin[i]++;//黑色落子累加器
if(userWin[i]==5){ //黑色落子在某種贏法中達到5個則執(zhí)行以下語句
window.alert("黑子勝利!");
document.getElementById("text").innerHTML="游戲結束";
document.getElementById("end").style.visibility="visible";
over=true;
}
}
if(color==2){?//判斷落子為白色的情況
pcWin[i]++; //白色落子累加器
if(pcWin[i]==5){//白色落子在某種贏法中達到5個則執(zhí)行以下語句
window.alert("白子勝利!");
document.getElementById("text").innerHTML="游戲結束";
document.getElementById("end").style.visibility="visible";
over=true;
}
}
}
}
}
...
...
chess.onclick=function(e){
if(over){
return ;
}
var x=Math.floor(e.offsetX/30);
var y=Math.floor(e.offsetY/30);
if(chessBoard[x][y]==0){
oneStep(x,y,me);
if(me){
chessBoard[x][y]=1;
}
else{
chessBoard[x][y]=2;
}
judgement(x,y,chessBoard[x][y]); ?//調用judgement函數(shù)
me=!me;
}
}
<!--希望能幫到你-->