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

我按照老师视频讲的敲了代码,问题是运行时只有黑棋,没有白棋啊!求帮助

我按照老师视频讲的敲了代码,问题是运行时只有黑棋,没有白棋啊!求帮助

qq_明天过后_哈哈 2017-03-26 17:22:47
window.onload = function () {   var chess = document.getElementById("chess");   var context = chess.getContext("2d");   context.strokeStyle="BFBFBF";    var logo = new Image();    logo.src="images/zxm.png"; //棋子数组 var me = true; var over = false; var chessB = new Array(); for(var m=0;m<15;m++){   chessB[m] = new Array();   for(var n=0;n<15;n++){    chessB[m][n] = 0;   } } var wins = [];    var count = 0;for(var i = 0; i < 15; i++) { wins[i] = []; for (var j = 0; j < 15; j++) {  wins[i][j] = []; }}//横向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++; }}//赢法统计数组var mywin = [];var aiwin = [];for(var i=0;i<count;i++) {      mywin[i]=0;   aiwin[i]=0;    }console.log(count); logo.onload =function() { context.drawImage(logo,0,0,450,450); chessBox(); }  var chessBox = 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 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 (chessB[i][j] == 0) {  oneStep(i, j, me);  chessB[i][j] = 1;      for(var k =0;k<count;k++)  {    if(wins[i][j][k]==true)   {        mywin[k]++;     aiwin[k]=6;     if(mywin[k]==5)    {         window.alert("你赢了!");      over = true;    }   }  }   if(!over){    computerAi();    me=!me;   } }  }//  var computerAi= function(){  var myScore = [];  var computerScore = [];  var max =0;  var u = 0,v = 0;  for(var i=0;i<15;i++) {   myScore =[];      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(chessB[i][j]==0)     {         for(var k=0;k<count;k++)      {            if(wins[i][j][k]==true)       {            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(aiwin[k]==1)          {              computerScore[i][j]+=220;          }else if(aiwin[k]==2)            {               computerScore[i][j]+=420;         }else if(aiwin[k]==3)            {               computerScore[i][j]+=2100;         }else if(aiwin[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);  chessB[u][v] = 2;//表示计算机在此处落子  for(var k = 0;k<count;k++)  {    if(wins[u][v][k])   {        aiwin[k]++;     mywin[k]=6;     if(aiwin[k]==5)    {         window.alert("计算机赢了!");      over = true;    }   }  }   if(!over){    me=!me;   }}}
查看完整描述

目前暂无任何回答

  • 0 回答
  • 1 关注
  • 1162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信