html css js五子棋

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


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");
			else
				circle(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" οnclick="mouse()"></canvas>
	<input type="button" value="电脑先手" οnclick="first()" id="first">
	<input type="button" value="开  始" οnclick="start()" id="start">
	<div id = "step" style="text-align:center;">当前步数:0</div>
	<div id="score">五子棋</div>
		<select id="sele" οnchange="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   4		data[i-4][j-4]    data[i-4][j]    data[i-4][j+4]
 3  3  3
  2 2 2  
   111
432101234
   111 
  2 2 2
 3  3  3
4   4   4 
chess[i][j]		//记录棋盘当前样子
701
6 2
543

首先是一系列定义:
连五:纵、横、斜线同色五子的紧连。	930400000     1 1 1 1 0
活四:两端都可形成连五的四。		44200000		0 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 1
					pingfen[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 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+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 6
						pingfen[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 6
						pingfen[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 6
						pingfen[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 2
				pingfen[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 2
				pingfen[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 2
			pingfen[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;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值