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

代码哪里有问题啊?

var chessBoard = [];
var me = true;
var over=false;

//赢法数组
var wins= [];
//赢法统计数组
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();
    }
}
//下子坐标
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();
}


    //点击鼠标下子
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;
          } 
}


正在回答

2 回答

第79行i<15

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

155行       for (var j = 0; j < 15;   j--  ) {  →for (var j = 0; j < 15;   j++  ) {

159行   for (var k=0; k < count; k++) {
   if (wins[i][j][k]) {
       if (myWin[k]==1) {               //少了[k]
           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]+=300;
       } else if(computerWin[k]==2){
           computerScore[i][j]+=500;
       }else if(computerWin[k]==3){
           computerScore[i][j]+=3000;
       }else if(computerWin[k]==4){
           computerScore[i][j]+=20000;
       }

   }
}

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

举报

0/150
提交
取消

代码哪里有问题啊?

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