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

请问我的代码哪里错了,为什么我下了一步棋后,计算机没有下棋?

var chessBoard = [];  

var over = false;

var me = true;  


//赢法数组
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=14; j>3; j--){
  for(var k=0; k<5; k++){
   wins[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'); 
 /*getContext() 

context.strokeStyle = "#BFBFBF"

var logo = new Image();
logo.src = "Images/1.jpg";
logo.onload = function() {
 context.drawImage(logo,0,0,450,450);
 drawChessBoard();

}

var drawChessBoard = function() {
 for(var i=0;i<15;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("你赢了");
     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 = [];
  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[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(wins[u][v][k]) {
   computerwin[k]++;
   mywin[k] = 6;
   if(computerwin[k] == 5) {
    window.alert("计算机赢了");
    over = true;
   }
  }
 }
 if(!over) {
  me = !me;
 }
}


正在回答

1 回答

你点击一次后没报错? 

你贴的代码第154行  电脑分数数组初始化那一步错了,应该是 computerScore[i] = []; (你写的是 computerScore = [];

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

,_0022 提问者

没问题了,谢谢
2016-05-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问我的代码哪里错了,为什么我下了一步棋后,计算机没有下棋?

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