html css js五子棋

来源:互联网 发布:有毒网络剧歌曲 编辑:程序博客网 时间:2024/05/21 22:45

花了点时间写个五子棋,还可以用,,


1.index.html  

<!DOCTYPE html><html><head><title>Five</title><meta charset="utf-8"><link rel="stylesheet" type="text/css" href="index.css"></head><script type="text/javascript" src="new.js"></script><script type="text/javascript" src="paint.js"></script><script type="text/javascript" src="button.js"></script><script type="text/javascript" language="JavaScript">window.onload = function(){paint_chess();//画棋盘}var temp2= 0;function mouse(){if(started == 1){var ad = getMousePos();step++;var stepp = document.getElementById("step");stepp.innerHTML = "当前步数:"+step;var score = document.getElementById("score");if(chessboard[ad.x][ad.y] == 0){add_chessman(ad,turn)if(1 == xianshou)circle(ad.x*weight+8,ad.y*weight+8,14,"#fff");elsecircle(ad.x*weight+8,ad.y*weight+8,14,"#000");turn = 1;var nn = check();if(nn == 1){alert("电脑胜利!");step=0;win_times[0]++;score.innerHTML="电脑胜利:"+win_times[0]+"<br/>人胜利:<br/>"+win_times[1];started = 0;return;}else if(nn == 2){alert("恭喜你,你赢了!");step=0;win_times[1]++;score.innerHTML="电脑胜利:"+win_times[0]+"<br/>人胜利:<br/>"+win_times[1];started = 0;return ;}initialize();pingfe();var temp = sosuo(turn);if(chessboard[temp.x][temp.y] == 0){add_chessman(temp,turn)if(1 == xianshou){circle(temp.x*weight+8,temp.y*weight+8,14,"#000");circle(temp.x*weight+8,temp.y*weight+8,4,"#f00");circle(temp2.x*weight+8,temp2.y*weight+8,5,"#000");}else{circle(temp.x*weight+8,temp.y*weight+8,14,"#fff");circle(temp.x*weight+8,temp.y*weight+8,4,"#f00");circle(temp2.x*weight+8,temp2.y*weight+8,5,"#fff");}temp2 = temp;turn = 2;}var nn = check();if(nn == 1){alert("电脑胜利!");win_times[0]++;step=0;score.innerHTML="电脑胜利:"+win_times[0]+"<br/>人胜利:<br/>"+win_times[1];started = 0;}else if(nn == 2){alert("恭喜你,你赢了!");step=0;win_times[1]++;score.innerHTML="电脑胜利:"+win_times[0]+"<br/>人胜利:<br/>"+win_times[1];started = 0;}}}}</script><body bgcolor="#39f"><canvas id="myCanvas" width="450px" height="450px" onclick="mouse()"></canvas><input type="button" value="电脑先手" onclick="first()" id="first"><input type="button" value="开  始" onclick="start()" id="start"><div id = "step" style="text-align:center;">当前步数:0</div><div id="score">五子棋</div><select id="sele" onchange="geta()">  <option value="0">初级</option>  <option value="1">高级</option></select></body></html>
主要页面的大致布局,

2.paint.js

var weight = 31;//棋盘间距var bianx = 8;function paint_chess(){//画棋盘var canvas=document.getElementById('myCanvas');var ctx=canvas.getContext('2d');ctx.fillStyle='#DDB844';ctx.fillRect(0,0,450,450);var startx = bianx;var starty = bianx;var endx = bianx;var endy = 450-bianx;ctx.lineWidth=2;for(var i = 1;i<=15;i++ ){ctx.beginPath();ctx.moveTo(startx,starty);ctx.lineTo(endx,endy);ctx.stroke();startx =  weight*i+bianx;endx =  weight*i+bianx;}startx = bianx;starty = bianx;endx = 450 - bianx;endy = bianx;for(var i = 1;i<=15;i++ ){ctx.beginPath();ctx.moveTo(startx,starty);ctx.lineTo(endx,endy);ctx.stroke();starty =  weight*i+bianx;endy =  weight*i+bianx;}circle(3*weight+bianx,3*weight+bianx,4,'#000');circle(3*weight+bianx,11*weight+bianx,4,'#000');circle(11*weight+bianx,3*weight+bianx,4,'#000');circle(11*weight+bianx,11*weight+bianx,4,'#000');circle(7*weight+bianx,7*weight+bianx,5,'#000');}//画圆形function circle(x,y,radius,color){var canvas=document.getElementById('myCanvas');var ctx=canvas.getContext('2d');ctx.fillStyle=color;ctx.beginPath();ctx.arc(x,y,radius,0,Math.PI*2,true);ctx.closePath();ctx.fill();}//获得鼠标位置 并转换成棋盘坐标function getMousePos(event) {            var e = event || window.event;            var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;            var scrollY = document.documentElement.scrollTop || document.body.scrollTop;            var x = e.pageX || e.clientX + scrollX;            var y = e.pageY || e.clientY + scrollY;y = y - 40; x = x - (document.body.scrollWidth - 450)/2;x = Math.floor(x/30);y = Math.floor(y/30);            //            return { 'x': x, 'y': y };   }function blink(x,y,d){switch(d){case 0:for(i = 0;i<5;i++)//行circle(x*weight+bianx,(y-i)*weight+bianx,10,'#f00');break;case 1:for(i = 0;i<5;i++)//列circle((x-i)*weight+bianx,y*weight+bianx,10,'#f00');break;case 2:for(i = 0;i<5;i++)//左下向右上方向检查circle((x-i)*weight+bianx,(y+i)*weight+bianx,10,'#f00');break;case 3:for(i = 0;i<5;i++)//右下向左上方向检查circle((x-i)*weight+bianx,(y-i)*weight+bianx,10,'#f00');break;default:break;}}

画棋盘,棋子什么的,,

3.button.js

var started = 0;var xianshou = 1;var win_times = [];win_times[0]=0;win_times[1]=0;var rank = 0;    //游戏级别var turn = 1;//当前下子的一方var step = 0;//记录下了多少步function first(){//先手选择started = 0;chushihua();var start = document.getElementById("start");start.value = "开  始";var first = document.getElementById("first");if(xianshou == 1){first.value = "人 先 手";xianshou = 2;turn = 2;}else{first.value = "电脑先手";xianshou = 1;turn = 1;}}function start(){if(step > 0){win_times[0]++;}score.innerHTML="电脑胜利:"+win_times[0]+"<br/>人胜利:<br/>"+win_times[1];temp2 = 0;chushihua();started = 1;if(xianshou == 1){//电脑先手chessboard[8][8] = 1;pingfen[8][8][0] = 1;circle(8*weight+8,8*weight+8,14,"#000");}turn = 2;var start = document.getElementById("start");start.value = "重新开始";}function geta(){var ss = document.getElementById("sele");rank = ss.value;started = 0;chushihua();var start = document.getElementById("start");start.value = "开  始";var first = document.getElementById("first");first.value = "电脑先手";xianshou = 1;turn = 1;}function chushihua(){paint_chess();step = 0;for(i = 0;i<15;i++){for(j = 0;j < 15;j++){chessboard[i][j] = 0;for(k = 0;k < 3; k++){pingfen[i][j][k] = 0;}for(k = 0; k < 8;k ++){for(l = 0;l < 5;l++){chess[i][j][k][l] = 0;}//初始化各个记录}}}}
每个按键的功能,

4 new.js

/*4   4   4data[i-4][j-4]    data[i-4][j]    data[i-4][j+4] 3  3  3  2 2 2     111432101234   111   2 2 2 3  3  34   4   4 chess[i][j]//记录棋盘当前样子7016 2543首先是一系列定义:连五:纵、横、斜线同色五子的紧连。930400000     1 1 1 1 0活四:两端都可形成连五的四。442000000 1 1 1 0冲四:仅一端能形成连五的四。活三:指可形成活四的三。休三:指因禁手点无法形成活四的三。眠三:仅能形成冲四的三。四四:又称双四,一子出现两条或以上活四或冲四。三三:又称双活三,一子出现两条或以上活三。长连:纵、横、斜线同色形成超过五子的连线。禁手:黑子禁止下出双活三、双四、长连,下出则判败先五为胜:黑棋五连与禁手同时形成,禁手失效,黑方胜。*/var fen = [];var chessboard = [];//记录棋盘当前样子var chess = []; //记录每个棋子8个方向的情况var pingfen = [];//记录每个空格的权值//0代表空 1 代表黑 2代表白 3 棋盘外var i = 0,j = 0,k = 0,l = 0,x = 0,y = 0;//循环用临时变量 //fen[0] = [10000000,3000000,500000,4000000,3000000,200000];//fen[1] = [10000000,3000000,500000,,4000000,2000000,200000]; fen[0] = [10000000,3000000,500000,1000000,9000000,2000000,200000,1000000]; fen[1] = [18267021440000,41225760000,93040000,210000,867797120000,1958480000,4420000,10000];for(i = 0;i<15;i++){chess[i] = [];for(j = 0;j < 15;j++){chess[i][j] = [];for(k = 0; k < 8;k ++){chess[i][j][k] = [];for(l = 0;l < 5;l++){chess[i][j][k][l] = 0;}}}}for(i = 0;i < 15;i ++){chessboard[i] = [];pingfen[i] = [];for(j = 0;j< 15;j++){chessboard[i][j] = 0;pingfen[i][j] = [];for(k = 0;k < 3; k++){pingfen[i][j][k] = 0;}}} //边界问题for(i=0;i<15;i++)//边界问题的赋值{    chess[0][i][7][0]=3;    chess[0][i][0][0]=3;      chess[0][i][1][0]=3;//第一行    chess[14][i][3][0]=3;      chess[14][i][4][0]=3;     chess[14][i][5][0]=3;//第十五行 chess[i][0][7][0]=3;   chess[i][0][6][0]=3; chess[i][0][5][0]=3;//第一列chess[i][14][1][0]=3;  chess[i][14][2][0]=3; chess[i][14][3][0]=3;//第十五列}function initialize(){//将棋盘信息送给chess[][][][]for( i = 0; i < 15; i++)  //0方向检查   for( j = 0; j<15; j++)  if( chessboard[i][j] == 0)  for( k = 0, x = i, y = j; k<5&&x>0; k++, x--)  chess[i][j][0][k] = chessboard[x-1][y];for( i = 0; i < 15; i++)   //4 方向检查    for( j = 0; j < 15; j++)   if( chessboard[i][j] == 0)   for( k = 0, x = i, y = j;k<5&&x<14;k++, x++)chess[i][j][4][k] = chessboard[x+1][y];     for( i = 0; i < 15; i++)    // 1 方向检查for( j = 0; j <15;j++)  if(chessboard[i][j] == 0)      for( k = 0, x = i, y = j; k<5&&x>0&&y<14; k++, x--, y++)        chess[i][j][1][k] = chessboard[x-1][y+1];      for( i = 0; i <15; i++) // 5 方向检查for( j=0; j<15; j++)   if(chessboard[i][j] == 0)  for( k = 0, x = i, y = j; k<5&&x<14&&y>0; k++, x++, y--) chess[i][j][5][k] = chessboard[x+1][y-1];      for( i = 0; i < 15; i++)// 2 方向检查     for( j = 0; j < 15; j++)   if( chessboard[i][j] == 0)   for( k = 0, x = i, y = j; k<5&&y<14; k++, y++)   chess[i][j][2][k] = chessboard[x][y+1];      for( i = 0; i < 15; i++)//6 方向检查for( j = 0; j <15; j++)   if( chessboard[i][j] == 0)   for( k = 0, x = i, y = j; k<5&&y>0; k++,y--)chess[i][j][6][k] = chessboard[x][y-1];        for(i=0;i<15;i++)// 3 方向检查for(j=0;j<15;j++)   if( chessboard[i][j] == 0)      for( k = 0, x = i, y = j; k<5&&y<14&&x<14; k++, x++, y++)      chess[i][j][3][k] = chessboard[x+1][y+1]; for(i=0;i<15;i++)// 7 方向检查for(j=0;j<15;j++)   if(chessboard[i][j] == 0)   for( k = 0, x = i, y = j; k<5&&x>0&&y>0; k++, x--, y--) chess[i][j][7][k] = chessboard[x-1][y-1];}function pingfe(){for(i = 0;i < 15;i++)for(j = 0;j< 15;j++){for(k = 1;k < 3; k++){pingfen[i][j][k] = 0;}} var m =0,n = 0;var player1 = 1,player2 = 2;for( i=0;i<15;i++)for( j=0;j<15;j++)if(chessboard[i][j] == 0){for(k=0;k<8;k++){if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k][2]==player1&&chess[i][j][k][3]==player1) // 0 0 0 0 1pingfen[i][j][player1] += fen[rank][0];}for(k=0;k<4;k++){     if(chess[i][j][k][0]==player1&&chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1&&chess[i][j][k+4][2]==player1)   //  0 1 0 0 0      pingfen[i][j][player1]+=fen[rank][0];if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k][2]==player1&&chess[i][j][k+4][0]==player1)               //  0 0 0 1 0pingfen[i][j][player1]+=fen[rank][0];       if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1)   // 0 0 1 0 0  pingfen[i][j][player1]+=fen[rank][0];     } //电脑可以形成成五for(k=0;k<4;k++){if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k][2]==player1&&chess[i][j][k][3]==0&&chess[i][j][k+4][0]==0) // 6 0 0 0 1 6pingfen[i][j][player1]+=fen[rank][1];if(chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1&&chess[i][j][k+4][2]==player1&&chess[i][j][k+4][3]==0&&chess[i][j][k][0]==0)//6 1 0 0 0 6pingfen[i][j][player1]+=fen[rank][1]; if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k][2]==0&&chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==0)     // 6 0 0 1 0 6pingfen[i][j][player1]+=fen[rank][1];if(chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1&&chess[i][j][k+4][2]==0&&chess[i][j][k][0]==player1&&chess[i][j][k][1]==0)  //6 0 1 0 0 6  pingfen[i][j][player1]+=fen[rank][1]; }//电脑可以形成活四 for(k=0;k<4;k++){     if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k][2]==player1&&((chess[i][j][k][3]==player2&&chess[i][j][k+4][0]==0)||(chess[i][j][k][3]==0&&chess[i][j][k+4][0]==player2))){// 2 0 0 0 1 6 / 6 0 0 0 1 2 pingfen[i][j][player1]+=5000;      n++;      }      if(chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1&&chess[i][j][k+4][2]==player1&&((chess[i][j][k+4][3]==player2&&chess[i][j][k][0]==0)||(chess[i][j][k+4][3]==0&&chess[i][j][k][0]==player2))){// 6 1 0 0 0 2 / 2 1 0 0 0 6       pingfen[i][j][player1]+=5000;      n++;     } if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k+4][0]==player1&&((chess[i][j][k][3]==player2&&chess[i][j][k+4][1]==0)||(chess[i][j][k][3]==0&&chess[i][j][k+4][1]==player2))){ // 2 0 0 1 0 6 / 6 0 0 1 0 2     pingfen[i][j][player1]+=5000;    n++;      }     if(chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1&&chess[i][j][k][0]==player1&&(chess[i][j][k+4][3]==player2&&chess[i][j][k][1]==0||chess[i][j][k+4][3]==0&&chess[i][j][k][1]==player2)){// 6 0 1 0 0 2 / 2 0 1 0 0 6    pingfen[i][j][player1]+=5000;      n++;     }       }//电脑可以成冲四for(k=0;k<4;k++){              if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k][2]==0&&chess[i][j][k+4][0]==0){// 6 0 0 1 6      pingfen[i][j][player1]+=fen[rank][3];  m++;        }      if(chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1&&chess[i][j][k+4][2]==0&&chess[i][j][k][0]==0){ //   6 1 0 0 6   pingfen[i][j][player1]+=fen[rank][3];     m++;        }       if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==0&&chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==0){// 6 0 1 0 6     pingfen[i][j][player1]+=fen[rank][3];   m++;  } }//电脑可以成双活三if(m>1){pingfen[i][j][player1]+=fen[rank][2];}//电脑可以成三三if(m>0&&n>0){pingfen[i][j][player1]+=fen[rank][2];}//电脑可以成冲四双活三for(k=0;k<4;k++){   if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&((chess[i][j][k][2]==player2&&chess[i][j][k+4][0]==0)||(chess[i][j][k][2]==0&&chess[i][j][k+4][0]==player2)))// 2 0 0 1 6 / 6 0 0 1 2    pingfen[i][j][player1]+=500;     if(chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1&&((chess[i][j][k+4][2]==player2&&chess[i][j][k][0]==0)||(chess[i][j][k+4][2]==0&&chess[i][j][k][0]==player2))) // 6 1 0 0 2 / 2 1 0 0 6 pingfen[i][j][player1]+=500;  if(chess[i][j][k][0]==player1&&chess[i][j][k+4][0]==player1&&((chess[i][j][k+4][1]==0&&chess[i][j][k][1]==player2)||(chess[i][j][k+4][1]==player2&&chess[i][j][k][1]==0))) // 2 0 1 0 6  / 6 0 1 0 2   pingfen[i][j][player1]+=500;  }//电脑可以成单活三 for(k=0;k<4;k++){ if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k][2]==player1&&chess[i][j][k][3]==player2&&chess[i][j][k+4][0]==player2) // 2 0 0 0 1 2       pingfen[i][j][player1]+=10;   if(chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1&&chess[i][j][k+4][2]==player1&&chess[i][j][k+4][3]==player2&&chess[i][j][k][0]==player2)     // 2 1 0 0 0 2pingfen[i][j][player1]+=10;       if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k+4][0]==player1&&chess[i][j][k][2]==player2&&chess[i][j][k+4][1]==player2)  // 2 0 0 1 0 2pingfen[i][j][player1]+=10;   if(chess[i][j][k][0]==player1&&chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1&&chess[i][j][k+4][2]==player2&&chess[i][j][k][1]==player2)   //  2 0 1 0 0 2  pingfen[i][j][player1]+=10;              }//电脑可以形成死四     for(k=0;k<4;k++){   if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player1&&chess[i][j][k][2]==player2&&chess[i][j][k+4][0]==player2) // 2 0 0 1 2  pingfen[i][j][player1]+=5;       if(chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player1&&chess[i][j][k+4][2]==player2&&chess[i][j][k][0]==player2)  // 2 1 0 0 2pingfen[i][j][player1]+=5;      if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player2&&chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player2)    // 2 0 1 0 2  pingfen[i][j][player1]+=5;      }//电脑成死三 for(k=0;k<4;k++){  if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==0&&chess[i][j][k+4][0]==0)// 6 0 1 6  pingfen[i][j][player1]+=100;  if(chess[i][j][k][0]==0&&chess[i][j][k+4][1]==0&&chess[i][j][k+4][0]==player1) //  6 1 0 6    pingfen[i][j][player1]+=100;    }//电脑成双活二for(k=0;k<4;k++){       if(chess[i][j][k][0]==player1&&((chess[i][j][k][1]==player2&&chess[i][j][k+4][0]==0)||(chess[i][j][k][1]==0&&chess[i][j][k+4][0]==player2))) //  2 0 1 6/ 6 0 1 2        pingfen[i][j][player1]+=50; if(chess[i][j][k+4][0]==player1&&((chess[i][j][k+4][1]==player2&&chess[i][j][k][0]==0)||(chess[i][j][k+4][1]==0&&chess[i][j][k][0]==player2)))// 6 1 0 2 / 2 1 0 6  pingfen[i][j][player1]+=50;   }//电脑成活二          for(k=0;k<4;k++){   if(chess[i][j][k][0]==player1&&chess[i][j][k][1]==player2&&chess[i][j][k+4][0]==player2) // 2 0 1 2  pingfen[i][j][player1]+=3;   if(chess[i][j][k+4][0]==player1&&chess[i][j][k+4][1]==player2&&chess[i][j][k][0]==player2)  pingfen[i][j][player1]+=3;  //2 1 0 2}//电脑成死二}m = 0;n = 0;///////////////////////////////////////for( i=0;i<15;i++)for( j=0;j<15;j++)if(chessboard[i][j] == 0){for(k=0;k<8;k++){if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k][2]==player2&&chess[i][j][k][3]==player2) pingfen[i][j][player2] +=fen[rank][4];}for(k=0;k<4;k++){      if(chess[i][j][k][0]==player2&&chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player2&&chess[i][j][k+4][2]==player2)      pingfen[i][j][player2]+=fen[rank][4];if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player2)       pingfen[i][j][player2]+=fen[rank][4];       if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k][2]==player2&&chess[i][j][k+4][0]==player2)     pingfen[i][j][player2]+=fen[rank][4];     } //人可以形成成五for(k=0;k<4;k++){if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k][2]==player2&&chess[i][j][k][3]==0&&chess[i][j][k+4][0]==0) pingfen[i][j][player2]+=fen[rank][5];if(chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player2&&chess[i][j][k+4][2]==player2&&chess[i][j][k+4][3]==0&&chess[i][j][k][0]==0)pingfen[i][j][player2]+=fen[rank][5]; if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k][2]==0&&chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==0)     pingfen[i][j][player2]+=fen[rank][5];if(chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player2&&chess[i][j][k+4][2]==0&&chess[i][j][k][0]==player2&&chess[i][j][k][1]==0)    pingfen[i][j][player2]+=fen[rank][5]; }//人可以形成活四 for(k=0;k<4;k++){     if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k][2]==player2&&((chess[i][j][k][3]==player1&&chess[i][j][k+4][0]==0)||(chess[i][j][k][3]==0&&chess[i][j][k+4][0]==player1))){pingfen[i][j][player2]+=5000;      n++;      }      if(chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player2&&chess[i][j][k+4][2]==player2&&((chess[i][j][k+4][3]==player1&&chess[i][j][k][0]==0)||(chess[i][j][k+4][3]==0&&chess[i][j][k][0]==player1)))  {         pingfen[i][j][player2]+=5000;      n++;     } if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k+4][0]==player2&&((chess[i][j][k][3]==player1&&chess[i][j][k+4][1]==0)||(chess[i][j][k][3]==0&&chess[i][j][k+4][1]==player1)))      {      pingfen[i][j][player2]+=5000;    n++;      }     if(chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player2&&chess[i][j][k][0]==player2&&(chess[i][j][k+4][3]==player1&&chess[i][j][k][1]==0||chess[i][j][k+4][3]==0&&chess[i][j][k][1]==player1))   {    pingfen[i][j][player2]+=5000;      n++;     }       }//人可以成冲四 for(k=0;k<4;k++){   //j=0;             if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k][2]==0&&chess[i][j][k+4][0]==0) {        pingfen[i][j][player2]+=fen[rank][7];  m++;        }      if(chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player2&&chess[i][j][k+4][2]==0&&chess[i][j][k][0]==0) {    pingfen[i][j][player2]+=fen[rank][7];     m++;        }       if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==0&&chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==0)  {     pingfen[i][j][player2]+=fen[rank][7];   m++;  } }//人可以成双活三if(m>1){pingfen[i][j][player2]+=fen[rank][6];}//人可以成三三if(m>0&&n>0){pingfen[i][j][player2]+=fen[rank][6];}//人d可以成冲四双活三for(k=0;k<4;k++){   if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&(chess[i][j][k][2]==player1&&chess[i][j][k+4][0]==0||chess[i][j][k][2]==0&&chess[i][j][k+4][0]==player1))    pingfen[i][j][player2]+=500;     if(chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player2&&(chess[i][j][k+4][2]==player1&&chess[i][j][k][0]==0||chess[i][j][k+4][2]==0&&chess[i][j][k][0]==player1))    pingfen[i][j][player2]+=500;  if(chess[i][j][k][0]==player2&&chess[i][j][k+4][0]==player2&&(chess[i][j][k+4][1]==0&&chess[i][j][k][1]==player1||chess[i][j][k+4][1]==player1&&chess[i][j][k][1]==0))       pingfen[i][j][player2]+=500;  }//人可以成单活三for(k=0;k<4;k++){ if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k][2]==player2&&chess[i][j][k][3]==player1&&chess[i][j][k+4][0]==player1)       pingfen[i][j][player2]+=10;   if(chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player2&&chess[i][j][k+4][2]==player2&&chess[i][j][k+4][3]==player1&&chess[i][j][k][0]==player1)       pingfen[i][j][player2]+=10;       if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k+4][0]==player2&&chess[i][j][k][2]==player1&&chess[i][j][k+4][1]==player1)  pingfen[i][j][player2]+=10;   if(chess[i][j][k][0]==player2&&chess[i][j][k+4][1]==player2&&chess[i][j][k+4][0]==player2&&chess[i][j][k+4][2]==player1&&chess[i][j][k][1]==player1)     pingfen[i][j][player2]+=10;              }//人可以形成死四     for(k=0;k<4;k++){   if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player2&&chess[i][j][k][2]==player1&&chess[i][j][k+4][0]==player1)   pingfen[i][j][player2]+=5;       if(chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player2&&chess[i][j][k+4][2]==player1&&chess[i][j][k][0]==player1)  pingfen[i][j][player2]+=5;      if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player1&&chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player1)      pingfen[i][j][player2]+=5;      }//人成死三 for(k=0;k<4;k++){  if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==0&&chess[i][j][k+4][0]==0)  pingfen[i][j][player2]+=100;  if(chess[i][j][k][0]==0&&chess[i][j][k+4][1]==0&&chess[i][j][k+4][0]==player2)     pingfen[i][j][player2]+=100;    }//人成双活二for(k=0;k<4;k++){       if(chess[i][j][k][0]==player2&&(chess[i][j][k][1]==player1&&chess[i][j][k+4][0]==0||chess[i][j][k][1]==0&&chess[i][j][k+4][0]==player1))      pingfen[i][j][player2]+=30; if(chess[i][j][k+4][0]==player2&&(chess[i][j][k+4][1]==player1&&chess[i][j][k][0]==0||chess[i][j][k+4][1]==0&&chess[i][j][k][0]==player1))  pingfen[i][j][player2]+=30;   }//人成活二          for(k=0;k<4;k++){   if(chess[i][j][k][0]==player2&&chess[i][j][k][1]==player1&&chess[i][j][k+4][0]==player1)   pingfen[i][j][player2]+=3;   if(chess[i][j][k+4][0]==player2&&chess[i][j][k+4][1]==player1&&chess[i][j][k][0]==player1)  pingfen[i][j][player2]+=3;  }//人成死二}} function add_chessman(ad,chang){chessboard[ad.x][ad.y] = chang;pingfen[ad.x][ad.y][0] = chang;}function check(){for(i = 0;i < 15;i++){//逐行检查//换行清空 k = 0;l = 0;//k 表示黑棋连续个数  l表示白棋for(j = 0;j < 15;j++){if(chessboard[i][j] == 0){k = 0;l = 0;}else if(chessboard[i][j] == 1){l = 0;k++;}else{k = 0;l++;}if(k == 5){blink(i,j,0);return 1;}if(l == 5){blink(i,j,0);return 2;}}}for(j = 0;j < 15;j++){//逐列检查 k = 0;l = 0;//k 表示黑棋连续个数  l表示白棋for(i = 0;i < 15;i++){if(chessboard[i][j] == 0){k = 0;l = 0;}else if(chessboard[i][j] == 1){l = 0;k++;}else{k = 0;l++;}if(k == 5){blink(i,j,1);return 1;}if(l == 5){blink(i,j,1);return 2;}}}for(i = 4;i<15;i++){//右下向右上方向检查k = 0;l = 0;var s = 0;for(j = 0;j<11;j++){if(chessboard[i][j] == 0){k = 0;l = 0;}else if(chessboard[i][j] == 1){l = 0;k++;for(s = 1;s < 5; s++){if(chessboard[i-s][j+s] == 1){k++;}else{k = 0;break;}}if(k == 5){blink(i,j,2);return 1;}}else{k = 0;l++;for(s = 1;s < 5; s++){if(chessboard[i-s][j+s] == 2){l++;}else{l = 0;break;}}if( l == 5){blink(i,j,2);return 2;}}}}for(i = 4;i<15;i++){//右下向左上方向检查k = 0;l = 0;var s = 0;for(j = 4;j<15;j++){if(chessboard[i][j] == 0){k = 0;l = 0;}else if(chessboard[i][j] == 1){l=0;k++;for(s = 1;s < 5; s++){if(chessboard[i-s][j-s] == 1){k++;}else{k = 0;break;}}if(k == 5){blink(i,j,3);return 1;}}else{k=0;l++;for(s = 1;s < 5; s++){if(chessboard[i-s][j-s] == 2){l++;}else{l = 0;break;}}if(l == 5){blink(i,j,3);return 2;}}}}return 0;}function sosuo(tu){var max = [];for(i = 0;i < 3;i++){//记录电脑评分最大值位置max[i] = 0;} var max2 = [];for(i = 0;i < 3;i++){max2[i] = 0;} for(i=0;i<15;i++)for(j=0;j<15;j++)if(pingfen[i][j][0] == 0 && max[0] < pingfen[i][j][1]){max[1] = i;max[2] = j;max[0] = pingfen[i][j][1];} for(i=0;i<15;i++)for(j=0;j<15;j++)if(pingfen[i][j][0] == 0 && max2[0] < pingfen[i][j][2]){max2[1] = i;max2[2] = j;max2[0] = pingfen[i][j][2];} if(tu == 1){if(max[0] >= max2[0]){return {"x":max[1],"y":max[2]};}else{return {"x":max2[1],"y":max2[2]};}}else{if(max2[0] > max[0]){return {"x":max2[1],"y":max2[2]};}else{return {"x":max[1],"y":max[2]};}}}
主要的处理函数,高级与初级也就,对各种情况评分不同而已,并没有像下搜索什么的

5.index.css

#myCanvas{width:450px;height:450px;margin: 40px auto;display:block;}input{width:100px;height:30px;font-size:20px;}#score{width:100px;height:100px;color:red;background:white;top:20%;right:20%;position:absolute;text-align:center;font-size:20px;}#first{top:42%;right:20%;position:absolute;}#start{top:50%;right:20%;position:absolute;}#sele{top:60%;right:20%;width:100px;height:30px;font-size:10px;position:absolute;}




0 0
原创粉丝点击