⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jinshou.java

📁 JAVA 写的五子棋
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

public class jinshou {
	
	public boolean panduan(int m,int n,int pq[][]){
		int left=0;
		int right=0;
		int above=0;
		int below=0;
		int skewabove=0;
		int skewbelow=0;
		int tiltedabove=0;
		int tiltedbelow=0;
		int horizon=0;      //  水平方向上棋子数
		int vertical=0;     //  竖直方向上棋子数
		int bias1=0;        //  "\"方向上棋子数
		int bias2=0;        //  "/"方向上棋子数
		
		
//		//判断最一般的三三禁手情况
//		if(pq[m][n]==1){
//			//判断水平方向
//			int a=1;
//			if(m-1>=0){
//			for(a=m-1;a>=0;a--){
//				if(pq[a][n]==1){
//					left++;
//				}
//				else{
//					break;
//				}
//			}
//			}
//			if(a>=0&&a!=m-1){
//				if(pq[a][n]==-1){
//					return false;
//				}
//			}
//			int b=1;
//			if(m+1<15){
//			for(b=m+1;b<15;b++){
//				if(pq[b][n]==1){
//					right++;
//				}
//				else{
//					break;
//				}
//			}
//			}
//			if(b<15&&b!=m+1){
//				if(pq[b][n]==-1){
//					return false;
//				}
//			}
//			horizon=left+right;
//			
//			//判断竖直方向
//			int c=1;
//			for(c=n-1;c>=0;c--){
//				if(pq[m][c]==1){
//					above++;
//				}
//				else{
//					break;
//				}
//			}
//			if(c>=0&&c!=n-1){
//				if(pq[m][c]==-1){
//					return false;
//				}
//			}
//			int d=1;
//			for(d=n+1;d<15;d++){
//				if(pq[m][d]==1){
//					below++;
//				}
//				else{
//					break;
//				}
//			}
//			if(d<15&&d!=n+1){
//				if(pq[m][d]==-1){
//					return false;
//				}
//			}
//			vertical=above+below;
//			
//			//判断"\"方向
//			int e=1,f=1;
//			for(e=m-1,f=n-1;e>=0&&f>=0;e--,f--){
//				if(pq[e][f]==1){
//					skewabove++;
//				}
//				else{
//					break;
//				}
//			}
//			if(e>=0&&f>=0&&e!=m-1&&f!=n-1){
//				if(pq[e][f]==-1){
//					return false;
//				}
//			}
//			int g=1,h=1;
//			for(g=m+1,h=n+1;g<15&&h<15;g++,h++){
//				if(pq[g][h]==1){
//					skewbelow++;
//				}
//				else{
//					break;
//				}
//			}
//			if(g<15&&h<15&&g!=m+1&&h!=n+1){	
//				if(pq[g][h]==-1){
//					return false;
//				}
//			}
//			bias1=skewabove+skewbelow;
//			
//			//判断"/"方向
//			int e1=1,f1=1;
//			for(e1=m+1,f1=n-1;e1<15&&f1>=0;e1++,f1--){
//				if(pq[e1][f1]==1){
//					tiltedabove++;
//				}
//				else{
//					break;
//				}
//			}
//			if(e1<15&&f1>=0&&e1!=m+1&&f1!=n-1){
//				if(pq[e1][f1]==-1){
//					return false;
//				}
//			}
//			int g1=1,h1=1;
//			for(g1=m-1,h1=n+1;g1>=0&&h1<15;g1--,h1++){
//				if(pq[g1][h1]==1){
//					tiltedbelow++;
//				}
//				else{
//					break;
//				}
//			}
//			if(g1>=0&&h1<15&&g1!=m-1&&h1!=n+1){
//				if(pq[g1][h1]==-1){
//					return false;
//				}
//			}
//			bias2=tiltedabove+tiltedbelow;
//			
//			
//			if((horizon==2&&vertical==2)||(horizon==2&&bias1==2)||(horizon==2&&bias2==2)
//					||(vertical==2&&bias1==2)||(vertical==2&&bias2==2)||(bias1==2&&bias2==2)){
//				return true;
//			}
//		}
//		
//		
		
//		//判断有跳冲三的情况
//		left=0;
//		right=0;
//		above=0;
//		below=0;
//		skewabove=0;
//		skewbelow=0;
//		tiltedabove=0;
//		tiltedbelow=0;
//		horizon=0;      //  水平方向上棋子数
//		vertical=0;     //  竖直方向上棋子数
//		bias1=0;        //  "\"方向上棋子数
//		bias2=0;        //  "/"方向上棋子数
		if(pq[m][n]==1){
			//判断水平方向
			int a=1;
			int b=1;
		
//			if(m-1>0){
//				a=m-1;
//			}
//			if(m+1<15){
//				b=m+1;
//			}
			if(m-1>=0&&m+1<15){
				a=m-1;
				b=m+1;
			if(pq[a][n]==0){
				for(a=m-2;a>=0;a--){
					if(pq[a][n]==1){
						left++;
					}
					else{
						break;
					}
				}
				if(a>=0&&a!=m-1){
					if(pq[a][n]==-1){
						return false;
					}
				}
				if(pq[b][n]==0){
					for(b=m+2;b<15;b++){
						if(pq[b][n]==1){
							right++;
						}
						else{
							break;
						}
					}
					if(b<15&&b!=m+1){
						if(pq[b][n]==-1){
							return false;
						}
					}
				}
				else{
					if(pq[b][n]==1){
						right=1;
						b=m+2;
						if(pq[b][n]==1){
							right=2;
							for(b=m+3;b<15;b++){
								if(pq[b][n]==1){
									right++;
								}
								else{
									break;
								}
							}
						}
						else{
							if(pq[b][n]==0){
								for(b=m+3;b<15;b++){
									if(pq[b][n]==1){
										right++;
									}
									else{
										break;
									}
								}
							}
						}
						if(b<15&&b!=m+1){
							if(pq[b][n]==-1){
								return false;
							}
						}
					}
				}
				horizon=left+right;
			}
			else{
	            a=m-1;
				b=m+1;
				//if((pq[a][n]==1)&&(pq[b][n]==0)){
				if((pq[a][n]==1)){
					left=1;
					a=m-2;
					if(pq[a][n]==1){
						left=2;
						for(a=m-3;a>=0;a--){
							if(pq[a][n]==1){
								left++;
							}
							else{
								break;
							}
						}
					}
					else{
						if(pq[a][n]==0){
							for(a=m-3;a>=0;a--){
								if(pq[a][n]==1){
									left++;
								}
								else{
									break;
								}
							}
						}
					}

					if(a>=0&&a!=m-1){
						if(pq[a][n]==-1){
							return false;
						}
					}
					if(pq[b][n]==1){
						right=1;
						b=m+2;
						if(pq[b][n]==1){
							right=2;
							for(b=m+3;b<15;b++){
								if(pq[b][n]==1){
									right++;
								}
								else{
									break;
								}
							}
						}
						else{
							if(pq[b][n]==0){
								for(b=m+3;b<15;b++){
									if(pq[b][n]==1){
										right++;
									}
									else{
										break;
									}
								}
							}
						}
						if(b<15&&b!=m+1){
							if(pq[b][n]==-1){
								return false;
							}
						}
					}
					else{
						if(pq[b][n]==0){
							for(b=m+2;b<15;b++){
								if(pq[b][n]==1){
									right++;
								}
								else{
									break;
								}
							}
							if(b<15&&b!=m+1){
								if(pq[b][n]==-1){
									return false;
								}
							}
						}
					}
				}
				horizon=left+right;
			}
			}
			
			//判断竖直方向
			int c=1;
			int d=1;
//			c=n-1;
//			d=n+1;
			if(n-1>=0&&n+1<15){
				c=n-1;
				d=n+1;
			if(pq[m][c]==0){
				for(c=n-2;c>=0;c--){
					if(pq[m][c]==1){
						above++;
					}
					else{
						break;
					}
				}
				if(c>=0&&c!=n-1){
					if(pq[m][c]==-1){
						return false;
					}
				}
				if(pq[m][d]==1){
					below=1;
					d=n+2;
					if(pq[m][d]==1){
						below=2;
						for(d=n+3;d<15;d++){
							if(pq[m][d]==1){
								below++;
							}
							else{
								break;
							}
						}
					}
					else{
						if(pq[m][d]==0){
							for(d=n+3;d<15;d++){
								if(pq[m][d]==1){
									below++;
								}
								else{
									break;
								}
							}
						}
					}
					if(d<15&&d!=n+1){
						if(pq[m][d]==-1){
							return false;
						}
					}
				}
				else{
					if(pq[m][d]==0){
						for(d=n+2;d<15;d++){
							if(pq[m][d]==1){
								below++;
							}
							else{
								break;
							}
						}
						if(d<15&&d!=n+1){
							if(pq[m][d]==-1){
								return false;
							}
						}
					}
				}
				vertical=above+below;
			}
			else{
				c=n-1;
				d=n+1;
				if((pq[m][c]==1)){
					above=1;
					c=n-2;
					if(pq[m][c]==1){
						above=2;
						for(c=n-3;c>=0;c--){
							if(pq[m][c]==1){
								above++;
							}
							else{
								break;
							}
						}
					}
					else{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -