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

老师,为什么我的代码一到计分那浏览器就崩了

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 = 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');


context.strokeStyle = '#BFBFBF';


//画水印
var logo = new Image();
logo.src = "img/back.png";
logo.onload = function() {
 context.drawImage(logo, 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, 435);
  context.stroke();
  context.moveTo(15, 15 + i * 30);
  context.lineTo(435, 15 + i * 30);
  context.stroke();
 }
}


var oneSetp = function(i, j, me) {
 //画棋子
 context.beginPath(); //去开始一个路径
 context.arc(15 + i * 30, 15 + j * 30, 13, 0, 2 * Math.PI); //arc用来画扇形(位置,位置,半径,起始弧度,截止弧度)
 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) {
  oneSetp(i, j, me);
  chessBoard[i][j] = 1;
  for(var k = 0; k < count; k++) {
   if(wins[i][j][k]) {
    if(me) {
     myWin[k]++;
     computerWin[k] = 6;
    } else {
     computerWin[k]++;
     myWin[k] = 6;
    }
   }
   if(myWin[k] == 5) {
    window.alert("You win!");
    over = true;
   } else if(computerWin[k] == 5) {
    window.alert("AI 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; i < 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;
 //     }
 //    }
 //    }
 //   }
 //  }
  oneSetp(u, v, false);
  chessBoard[u][v] = 2;
 for(var k = 0; k < count; k++) {
  if(wins[u][v][k]) {
   if(me) {
    myWin[k]++;
    computerWin[k] = 6;
   } else {
    computerWin[k]++;
    myWin[k] = 6;
   }
  }
  if(myWin[k] == 5) {
   window.alert("You win!");
   over = true;
  } else if(computerWin[k] == 5) {
   window.alert("AI win!");
   over = true;
  }
 }
 if(!over) {
  me = !me;
 }
}


正在回答

2 回答

那就是代码问题咯

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

这么一大摞  一下找不出   不过  我觉得应该是哪里出了小逻辑错误

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

小丶白鼠 提问者

应该就是我注释的那一段出了问题,注释掉浏览器就不崩了
2016-07-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

老师,为什么我的代码一到计分那浏览器就崩了

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