为了账号安全,请及时绑定邮箱和手机立即绑定

55555不知道错哪了

var chessBoard=[];
var me=true;
var over=false;
/*赢法数组*/
var win=[];
/*赢法的统计数组*/
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++){
    win[i]=[];
 for(var j=0;j<15;j++){
     win[i][j]=[];
 }
}
/*赢法种类的索引*/
var count=0;/*横线*/
for(var i=0;i<15;i++){
    for(var j=0;j<11;j++){
        //wins[0][0][0]=true;
        //wins[0][1][0]=true;
        //wins[0][2][0]=true;
        //wins[0][3][0]=true;
        //wins[0][4][0]=true;
        //wins[0][5][0]=true;
        //wins[0][1][1]=true;
        //wins[0][2][1]=true;
        //wins[0][3][1]=true;
        //wins[0][4][1]=true;
        //wins[0][5][1]=true;
        //
        for(var k=0;k<5;k++){
            win[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++){
            win[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++){
            win[i+k][j+k][count]=true;
        }
        count++;
    }
}
/*反斜线*/
for(var i=0;i<11;i++){
    for(var j=14;j>3;j--){
        for(var k=0;k<5;k++){
            win[i+k][j-k][count]=true;
        }
        count++;
    }
}
console.log(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="#bfbfbf";
var icon=new Image();
icon.src="css/images/icon.png";
icon.onload=function(){
context.drawImage(icon,0,0,450,450);
drawChessBoard();

}
var drawChessBoard=function(){
    for(var i=0;i<15;i++)
{
context.moveTo(15+i*30,15);/*画第一条横线,垂直坐标不变*/
context.lineTo(15+i*30,450);/*最后一条直线*/
context.stroke();
context.moveTo(15,15+i*30);/*画第一条竖线,横坐标不变*/
context.lineTo(450,15+i*30,);/*最后一条竖线*/
context.stroke();
}
}
 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+i*30-2,50,15+i*30+2,15+i*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();
}
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(win[i][j][k]){
                mywin[k]++;
                computerwin[k]=6;
                if(mywin[k]==5){
                    window.alert("你赢了");
                    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]=0;
      computerScore[i]=0;
      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(win[i][j][k]){
                      if(mywin[k]==1){
                          myScore[i][j]+=200;
                      }
                      else if(mywin[k]==2){
                          myScore[i][j]+=400;
                      }
                      else if(mywin[k]==3){
                          myScore[i][j]+=2000;
                      }
                      else if(mywin[k]==4){
                          myScore[i][j]+=10000;
                      }
                      if(computerwin[k]==1){
                          computerScore[i][j]+=220;
                      }
                      else if(computerwin[k]==2){
                          computerScore[i][j]+=420;
                      }
                      else if(computerwin[k]==3){
                          computerScore[i][j]+=2100;
                      }
                      else if(computerwin[k]==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(win[u][v][k]){
                computerwin[k]++;
                computerwin[k]=6;
                if(computerwin[k]==5){
                    window.alert("计算机赢了");
                    over=true;
                }
            }
        }
if(!over){
            me=!me;
            
        }
    }

正在回答

2 回答

 for(var i=0;i<15;i++){
      myScore[i]=0;
      computerScore[i]=0;
      for(var j=0;j<15;j++){
          myScore[i][j]=0;
          computerScore[i][j]=0;
      }
  }


这块儿:

myScore[i]=0;
computerScore[i]=0;

应该是:

myScore[i]=[];
computerScore[i]=[];

初始化一个二维数组。

0 回复 有任何疑惑可以回复我~
#1

一生安好 提问者

非常感谢!
2018-02-23 回复 有任何疑惑可以回复我~

context.lineTo(450,15+i*30,);/*最后一条竖线*/

var gradient=context.createRadialGradient(15+i*30+2,15+i*30-2,50,15+i*30+2,15+i*30-2,0);

0 回复 有任何疑惑可以回复我~
#1

一生安好 提问者

这个哪有问题?
2018-02-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

55555不知道错哪了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信