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/150
提交
取消