代碼哪里有問題?。?/h1>
var?chessBoard?=?[];
var?me?=?true;
var?over=false;
//贏法數(shù)組
var?wins=?[];
//贏法統(tǒng)計數(shù)組
var?myWin?=?[];
var?computerWin?=?[];
for(var?i?=?0;?i<15;?i++)?{
????chessBoard[i]?=?[];
????for(var?j=0;?j<15;?j++)?{
????????chessBoard[i][j]?=?0;
????}
}
for(var?i?=?0;?i<15;?i++)?{
????wins[i]=?[];
????for(var?j=0;?j<15;?j++)?{
????????wins[i][j]?=?[];
????}
}
var?count?=?0;
for(var?i?=?0;?i<15;?i++)?{
????for(var?j=0;?j<11;?j++)?{
????????for?(var?k=?0;?k?<?5;?k++)?{
????????????wins[i][j+k][count]?=?true;
????????}
????????count++;
????}
}
for(var?i?=?0;?i<15;?i++)?{
????for(var?j=0;?j<11;?j++)?{
????????for?(var?k=?0;?k?<?5;?k++)?{
????????????wins[j+k][i][count]?=?true;
????????}
????????count++;
????}
}
for(var?i?=?0;?i<11;?i++)?{
????for(var?j=0;?j<11;?j++)?{
????????for?(var?k=?0;?k?<?5;?k++)?{
????????????wins[i+k][j+k][count]?=?true;
????????}
????????count++;
????}
}
for(var?i?=?0;?i<11;?i++)?{
????for(var?j=0;?j>3;?j++)?{
????????for?(var?k=?0;?k?<?5;?k++)?{
????????????wins[i+k][j-k][count]?=?true;
????????}
????????count++;
????}
}
for(var?i=0;i<count;i++){
????myWin[i]=0;
????computerWin[i]=0;
}
var?chess?=?document.getElementById('chess');
var?context?=?chess.getContext('2d');
context.strokeStyle=?"#0A0A0A";
var?logo?=?new?Image();
logo.src?=?"images/logo.jpg";
logo.onload?=?function(){
????context.drawImage(logo,?0,0,450,450);
????drawChessBoard();
}
//畫棋盤
var?drawChessBoard?=?function(){
for(var?i?=?0;?i?<?19?;?i++){
????context.moveTo(?15+30*i,?15);
????context.lineTo(15+30*i,?435);
????context.stroke();
????context.moveTo(15,?15+30*i);
????context.lineTo(435,?15+?30*i);
????context.stroke();
????}
}
//下子坐標(biāo)
var?oneStep?=?function(i,?j,?me){
????context.beginPath();
????context.arc(15?+?i*30,?15?+?j*30,?13,?0,?2*Math.PI);
????context.closePath();
????var?gradient?=?context.createRadialGradient(15?+?i*30?+?2,?15?+?j*30?-?2,?13,?15?+?i*30?+?2,?15?+?j*30?-?2,0);
????if(me)?{
????????gradient.addColorStop(0,?"#0A0A0A");
????????gradient.addColorStop(1,"#636766");
????}else{
????????gradient.addColorStop(0,?"#D1D1D1");
????????gradient.addColorStop(1,?"#F9F9F9");
????}
????context.fillStyle?=?gradient;
????context.fill();
}
????//點擊鼠標(biāo)下子
chess.onclick?=?function(e)?{
????if?(over)?{
????????return;
????}
????if(!me){
????????return;
????}
????var?x?=?e.offsetX;
????var?y?=?e.offsetY;
????var?i?=?Math.floor(x?/?30);
????var?j?=?Math.floor(y?/?30);
????if(chessBoard[i][j]?==?0)?{
????????oneStep(i,?j,?me);
????????chessBoard[i][j]?=?1;
????????
??????for?(var?k?=?0;k<count?;?k++)?{
??????????????if?(wins[i][j][k])?{
????????????????myWin[k]++;
????????????????computerWin[k]=6;
????????????????if?(myWin[k]==5)?{
????????????????????window.alert("you?win!");
????????????????????over?=?true;
????????????????}
??????????????}?
??????????}?
??????????if?(!over)?{
????????????me?=?!me;
????????????computerAI();
??????????}?
????}
}
var?computerAI=function(){
???var?myScore?=?[];
???var?computerScore?=?[];
???var?max?=?0;
???var?u?=?0,?v?=?0;
????for(var?i=0;i<15;i++){
????????myScore[i]?=?[];
????????computerScore[i]?=?[];
????????for?(var?j?=?0;?j?<?15;?j++)?{
????????????myScore[i][j]?=?0;
????????????computerScore[i][j]?=?0;
????????}
????}
???for?(var?i?=?0;?i?<?15;?i++){
?????for?(var?j?=?0;?j?<?15;?j--)?{
??????????if?(chessBoard[i][j]==0)?{
????????????for?(var?k=0;?k?<?count;?k++)?{
????????????????if?(wins[i][j][k])?{
???????????????????if?(myWin==1)?{
?????????????????????myScore[i][j]+=200;
???????????????????}?else?if(myWin==2){
?????????????????????myScore[i][j]+=400;
???????????????????}else?if(myWin==3){
?????????????????????myScore[i][j]+=2000;
???????????????????}else?if(myWin==4){
?????????????????????myScore[i][j]+=10000;
???????????????????}
???????????????????if?(computerWin==1)?{
?????????????????????computerScore[i][j]+=300;
???????????????????}?else?if(computerWin==2){
?????????????????????computerScore[i][j]+=500;
???????????????????}else?if(computerWin==3){
?????????????????????computerScore[i][j]+=3000;
???????????????????}else?if(computerWin==4){
?????????????????????computerScore[i][j]+=20000;
???????????????????}
????????????????}
?????????????}
?????????????if?(myScore[i][j]>max)?{
????????????????max?=?myScore[i][j];
????????????????u?=?i;
????????????????v?=?j;
?????????????}else?if(myScore[i][j]==max){
????????????????if?(computerScore[i][j]>computerScore[u][v])?{
???????????????????u?=?i;
???????????????????v?=?j;?
????????????????}
?????????????}
?????????????if?(computerScore[i][j]>max)?{
????????????????max?=?computerScore[i][j];
????????????????u?=?i;
????????????????v?=?j;
?????????????}else?if(computerScore[i][j]==max){
????????????????if?(myScore[i][j]>myScore[u][v])?{
???????????????????u?=?i;
???????????????????v?=?j;?
????????????????}
?????????????}
???????????}
???????}
???????
???}
???oneStep(u,v,false);
???chessBoard[u][v]=2;
???for?(var?k?=?0;k<count?;?k++)?{
????????if?(wins[u][v][k])?{
????????????computerWin[k]++;
????????????myWin[k]=6;
????????????if?(computerWin[k]==5)?{
????????????????????window.alert("computer?win!");
????????????????????over?=?true;
????????????????}
??????????????}?
??????????}?
??????????if?(!over)?{
????????????me?=?!me;
??????????}?
}
var?chessBoard?=?[]; var?me?=?true; var?over=false; //贏法數(shù)組 var?wins=?[]; //贏法統(tǒng)計數(shù)組 var?myWin?=?[]; var?computerWin?=?[]; for(var?i?=?0;?i<15;?i++)?{ ????chessBoard[i]?=?[]; ????for(var?j=0;?j<15;?j++)?{ ????????chessBoard[i][j]?=?0; ????} } for(var?i?=?0;?i<15;?i++)?{ ????wins[i]=?[]; ????for(var?j=0;?j<15;?j++)?{ ????????wins[i][j]?=?[]; ????} } var?count?=?0; for(var?i?=?0;?i<15;?i++)?{ ????for(var?j=0;?j<11;?j++)?{ ????????for?(var?k=?0;?k?<?5;?k++)?{ ????????????wins[i][j+k][count]?=?true; ????????} ????????count++; ????} } for(var?i?=?0;?i<15;?i++)?{ ????for(var?j=0;?j<11;?j++)?{ ????????for?(var?k=?0;?k?<?5;?k++)?{ ????????????wins[j+k][i][count]?=?true; ????????} ????????count++; ????} } for(var?i?=?0;?i<11;?i++)?{ ????for(var?j=0;?j<11;?j++)?{ ????????for?(var?k=?0;?k?<?5;?k++)?{ ????????????wins[i+k][j+k][count]?=?true; ????????} ????????count++; ????} } for(var?i?=?0;?i<11;?i++)?{ ????for(var?j=0;?j>3;?j++)?{ ????????for?(var?k=?0;?k?<?5;?k++)?{ ????????????wins[i+k][j-k][count]?=?true; ????????} ????????count++; ????} } for(var?i=0;i<count;i++){ ????myWin[i]=0; ????computerWin[i]=0; } var?chess?=?document.getElementById('chess'); var?context?=?chess.getContext('2d'); context.strokeStyle=?"#0A0A0A"; var?logo?=?new?Image(); logo.src?=?"images/logo.jpg"; logo.onload?=?function(){ ????context.drawImage(logo,?0,0,450,450); ????drawChessBoard(); } //畫棋盤 var?drawChessBoard?=?function(){ for(var?i?=?0;?i?<?19?;?i++){ ????context.moveTo(?15+30*i,?15); ????context.lineTo(15+30*i,?435); ????context.stroke(); ????context.moveTo(15,?15+30*i); ????context.lineTo(435,?15+?30*i); ????context.stroke(); ????} } //下子坐標(biāo) var?oneStep?=?function(i,?j,?me){ ????context.beginPath(); ????context.arc(15?+?i*30,?15?+?j*30,?13,?0,?2*Math.PI); ????context.closePath(); ????var?gradient?=?context.createRadialGradient(15?+?i*30?+?2,?15?+?j*30?-?2,?13,?15?+?i*30?+?2,?15?+?j*30?-?2,0); ????if(me)?{ ????????gradient.addColorStop(0,?"#0A0A0A"); ????????gradient.addColorStop(1,"#636766"); ????}else{ ????????gradient.addColorStop(0,?"#D1D1D1"); ????????gradient.addColorStop(1,?"#F9F9F9"); ????} ????context.fillStyle?=?gradient; ????context.fill(); } ????//點擊鼠標(biāo)下子 chess.onclick?=?function(e)?{ ????if?(over)?{ ????????return; ????} ????if(!me){ ????????return; ????} ????var?x?=?e.offsetX; ????var?y?=?e.offsetY; ????var?i?=?Math.floor(x?/?30); ????var?j?=?Math.floor(y?/?30); ????if(chessBoard[i][j]?==?0)?{ ????????oneStep(i,?j,?me); ????????chessBoard[i][j]?=?1; ???????? ??????for?(var?k?=?0;k<count?;?k++)?{ ??????????????if?(wins[i][j][k])?{ ????????????????myWin[k]++; ????????????????computerWin[k]=6; ????????????????if?(myWin[k]==5)?{ ????????????????????window.alert("you?win!"); ????????????????????over?=?true; ????????????????} ??????????????}? ??????????}? ??????????if?(!over)?{ ????????????me?=?!me; ????????????computerAI(); ??????????}? ????} } var?computerAI=function(){ ???var?myScore?=?[]; ???var?computerScore?=?[]; ???var?max?=?0; ???var?u?=?0,?v?=?0; ????for(var?i=0;i<15;i++){ ????????myScore[i]?=?[]; ????????computerScore[i]?=?[]; ????????for?(var?j?=?0;?j?<?15;?j++)?{ ????????????myScore[i][j]?=?0; ????????????computerScore[i][j]?=?0; ????????} ????} ???for?(var?i?=?0;?i?<?15;?i++){ ?????for?(var?j?=?0;?j?<?15;?j--)?{ ??????????if?(chessBoard[i][j]==0)?{ ????????????for?(var?k=0;?k?<?count;?k++)?{ ????????????????if?(wins[i][j][k])?{ ???????????????????if?(myWin==1)?{ ?????????????????????myScore[i][j]+=200; ???????????????????}?else?if(myWin==2){ ?????????????????????myScore[i][j]+=400; ???????????????????}else?if(myWin==3){ ?????????????????????myScore[i][j]+=2000; ???????????????????}else?if(myWin==4){ ?????????????????????myScore[i][j]+=10000; ???????????????????} ???????????????????if?(computerWin==1)?{ ?????????????????????computerScore[i][j]+=300; ???????????????????}?else?if(computerWin==2){ ?????????????????????computerScore[i][j]+=500; ???????????????????}else?if(computerWin==3){ ?????????????????????computerScore[i][j]+=3000; ???????????????????}else?if(computerWin==4){ ?????????????????????computerScore[i][j]+=20000; ???????????????????} ????????????????} ?????????????} ?????????????if?(myScore[i][j]>max)?{ ????????????????max?=?myScore[i][j]; ????????????????u?=?i; ????????????????v?=?j; ?????????????}else?if(myScore[i][j]==max){ ????????????????if?(computerScore[i][j]>computerScore[u][v])?{ ???????????????????u?=?i; ???????????????????v?=?j;? ????????????????} ?????????????} ?????????????if?(computerScore[i][j]>max)?{ ????????????????max?=?computerScore[i][j]; ????????????????u?=?i; ????????????????v?=?j; ?????????????}else?if(computerScore[i][j]==max){ ????????????????if?(myScore[i][j]>myScore[u][v])?{ ???????????????????u?=?i; ???????????????????v?=?j;? ????????????????} ?????????????} ???????????} ???????} ??????? ???} ???oneStep(u,v,false); ???chessBoard[u][v]=2; ???for?(var?k?=?0;k<count?;?k++)?{ ????????if?(wins[u][v][k])?{ ????????????computerWin[k]++; ????????????myWin[k]=6; ????????????if?(computerWin[k]==5)?{ ????????????????????window.alert("computer?win!"); ????????????????????over?=?true; ????????????????} ??????????????}? ??????????}? ??????????if?(!over)?{ ????????????me?=?!me; ??????????}? }
2017-08-03
第79行i<15
2016-04-11
155行 ?? ? ?for?(var?j?=?0;?j?<?15;? ?j-- ?)?{ ?→for?(var?j?=?0;?j?<?15;???j++ ?)?{