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";?//棋子數(shù)組?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++;?}}//贏法統(tǒng)計(jì)數(shù)組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;//表示計(jì)算機(jī)在此處落子? for(var k = 0;k<count;k++)??{??? if(wins[u][v][k])???{??????? aiwin[k]++;???? mywin[k]=6;???? if(aiwin[k]==5)????{???????? window.alert("計(jì)算機(jī)贏了!");????? over = true;????}???}??}?? if(!over){??? me=!me;?? }}}
我按照老師視頻講的敲了代碼,問題是運(yùn)行時(shí)只有黑棋,沒有白棋啊!求幫助
qq_明天過后_哈哈
2017-03-26 17:22:47