Renderings
Online Demo
index.js
var chess=document.getElementById("chess"); var cxt=chess.getContext('2d'); cxt.strokeStyle="#BFBFBF"; var bgimg=new Image(); bgimg.src="img/1.jpg"; bgimg.onload=function(){ cxt.drawImage(bgimg,0,0,450,450);//画背景 drawline();//画棋盘线 drawText(); } var drawline=function(){ for(var i=0;i<15;i++) { cxt.moveTo(15+i*30,15); cxt.lineTo(15+i*30,435); cxt.stroke(); cxt.moveTo(15,15+i*30); cxt.lineTo(435,15+i*30); cxt.stroke(); } } var drawText=function(){ cxt.fillStyle="#333"; cxt.textAlign="right"; for(var i=0;i<15;i++) { cxt.fillText((i+1).toString(),18+i*30,12); cxt.fillText((i+1).toString(),12,20+i*30); } } var oneStep=function(i,j,me){//画棋子 cxt.beginPath(); cxt.arc(15+i*30,15+j*30,13,0,2*Math.PI); cxt.closePath(); var gradient=cxt.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"); } cxt.fillStyle=gradient; cxt.fill(); }
win.js
// Win array method var WINS = []; // first kind win count method var count = 0 ; // count array win method var mywin = []; var computerWin = []; // end identification var GameOver = to false ; var Chess = document.getElementById ( "Chess" ); var Me = to true ; // judge Black or White var ChessBoard = []; // determines whether zi for ( var I = 0; I <15; ++ I ) { ChessBoard [I] = []; for(var j = 0; j < 15; j++) { chessBoard[i][j] = 0; } } //再来一次 var again=document.getElementById("again"); again.onclick=function(){ window.location.reload(); } //初始化数据 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++; } } //console.log(count); //572 //初始化 for(var i = 0; i < count; i++) { myWin[i] = 0; computerWin[i] = 0; } chess.onclick = function(e) { //点击棋盘下棋 if(gameover) { 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 ) { GameOver = to true ; Alert ( "Congratulations, you win" ); } } } IF (! GameOver) { 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(var0 = J; J <15; J ++) { IF (ChessBoard [I] [J] == 0) { // here does not fall promoter for ( var K = 0; K <COUNT; K ++ ) { IF (WINS [I] [J] [K]) { // presence of a certain kind of win method Switch (mywin [K]) { Case . 1 : myScore [I] [J] + = 200 is ; BREAK ; Case 2 : myScore [I] [J] + = 400 ; BREAK ; case 3: myScore[i][j] += 2000; break; case 4: myScore[i][j] += 10000; break; } switch(computerWin[k]) { case 1: computerScore[i][j] += 220; break; case 2: computerScore[i][j] += 420; break; case 3: computerScore[i][j] += 2100; break; case 4: computerScore[i][j] += 20000; break; } } } 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; } } } } } setTimeout(function(){ me = !me; oneStep(u, v, false); },600); chessBoard[u][v] = 2; //Computer zi for (var K = 0; K <COUNT; K ++ ) { IF (WINS [U] [V] [K]) { computerWin [K] ++ ; mywin [K] =. 6 ; IF (computerWin [K] = . 5 = ) { GameOver = to true ; Alert ( "sorry, you lose" ); } } } IF (! GameOver) { Me =! Me; } }