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

📄 premovenodesgen.java

📁 用jav语言开发的基于J2SE平台的中国象棋.供大家参考和学习
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
							if (InBoard(i + k, j + l) && (j >= 5 && j + l >= 5 || j <= 4 && j + l <= 4)) {
								BishopMoves[i * 10 + j][Index] =  (i + k) * 10 + j + l;
								ElephantEyes[i * 10 + j][Index] =  (i + k / 2) * 10 + j + l / 2;
								Index ++;
							}
						}
					}
				}
				BishopMoves[i * 10 + j][Index] =  -1;

				// 马Nodes
				Index = 0;
				for (k = -1; k <= 1; k += 2) {
					for (l = -2; l <= 2; l += 4) {
						if (InBoard(i + k, j + l)) {
							KnightMoves[i * 10 + j][Index] = (i + k) * 10 + j + l;
							HorseLegs[i * 10 + j][Index] = i * 10 + j + l / 2;
							Index ++;
						}
						if (InBoard(i + l, j + k)) {
							KnightMoves[i * 10 + j][Index] = (i + l) * 10 + j + k;
							HorseLegs[i * 10 + j][Index] = (i + l / 2) * 10 + j;
							Index ++;
						}
					}
				}
				KnightMoves[i * 10 + j][Index] = -1;

				// 兵Nodes
				for (k = 0; k <= 1; k ++) {
					Index = 0;
					if (InBoard(i, k==1 ? j - 1 : j + 1)) {
						PawnMoves[i * 10 + j][k][Index] = (k==1 ? i * 10 + j - 1 : i * 10 + j + 1);
						Index ++;
					}
					if (k==1 ? j <= 4 : j >= 5) {
						for (l = -1; l <= 1; l += 2) {
							if (InBoard(i + l, j)) {
								PawnMoves[i * 10 + j][k][Index] = (i + l) * 10 + j;
								Index ++;
							}
						}
					}
					PawnMoves[i * 10 + j][k][Index] =  -1;
				}
			}//end of j loop
		}//end of i loop

		// Generate FilePreMoveNodes for Rooks and Cannons
		for (i = 0; i < 10; i ++) {
			for (j = 0; j < 1024; j ++) {
				Index = 0;
				FileNonCapMax[i][j] = i;
				for (k = i + 1; k <= 9; k ++) {
					if ((j & (1 << k))!=0) {
						break;
					}
					FileNonCapMoves[i][j][Index] =  k;
					Index ++;
					FileNonCapMax[i][j] =  k;
				}
				FileNonCapMin[i][j] =  i;
				for (k = i - 1; k >= 0; k --) {
					if ((j & (1 << k))!=0) {
						break;
					}
					FileNonCapMoves[i][j][Index] =  k;
					Index ++;
					FileNonCapMin[i][j] =  k;
				}
				FileNonCapMoves[i][j][Index] =  -1;
				Index = 0;
				FileRookCapMax[i][j] =  i;
				for (k = i + 1; k <= 9; k ++) {
					if ((j & (1 << k))!=0) {
						FileRookCapMoves[i][j][Index] =  k;
						Index ++;
						FileRookCapMax[i][j] =  k;
						break;
					}
				}
				FileRookCapMin[i][j] =  i;
				for (k = i - 1; k >= 0; k --) {
					if ((j & (1 << k))!=0) {
						FileRookCapMoves[i][j][Index] =  k;
						Index ++;
						FileRookCapMin[i][j] =  k;
						break;
					}
				}
				FileRookCapMoves[i][j][Index] =  -1;
				Index = 0;
				FileCannonCapMax[i][j] =  i;
				for (k = i + 1; k <= 9; k ++) {
					if ((j & (1 << k))!=0) {
						k ++;
						break;
					}
				}
				for (; k <= 9; k ++) {
					if ((j & (1 << k))!=0) {
						FileCannonCapMoves[i][j][Index] =  k;
						Index ++;
						FileCannonCapMax[i][j] =  k;
						break;
					}
				}
				FileCannonCapMin[i][j] =  i;
				for (k = i - 1; k >= 0; k --) {
					if ((j & (1 << k))!=0) {
						k --;
						break;
					}
				}
				for (; k >= 0; k --) {
					if ((j & (1 << k))!=0) {
						FileCannonCapMoves[i][j][Index] =  k;
						Index ++;
						FileCannonCapMin[i][j] =  k;
						break;
					}
				}
				FileCannonCapMoves[i][j][Index] =  -1;
			}
		}

		// Generate RankPreMoveNodes for Rooks and Cannons
		for (i = 0; i < 9; i ++) {
			for (j = 0; j < 512; j ++) {
				Index = 0;
				RankNonCapMax[i][j] =  (i * 10);
				for (k = i + 1; k <= 8; k ++) {
					if ((j & (1 << k))!=0) {
						break;
					}
					RankNonCapMoves[i][j][Index] =  (k * 10);
					Index ++;
					RankNonCapMax[i][j] =  (k * 10);
				}
				RankNonCapMin[i][j] =  (i * 10);
				for (k = i - 1; k >= 0; k --) {
					if ((j & (1 << k))!=0) {
						break;
					}
					RankNonCapMoves[i][j][Index] =  (k * 10);
					Index ++;
					RankNonCapMin[i][j] =  (k * 10);
				}
				RankNonCapMoves[i][j][Index] = -1;
				Index = 0;
				RankRookCapMax[i][j] =  (i * 10);
				for (k = i + 1; k <= 8; k ++) {
					if ((j & (1 << k))!=0) {
						RankRookCapMoves[i][j][Index] =  (k * 10);
						Index ++;
						RankRookCapMax[i][j] =  (k * 10);
						break;
					}
				}
				RankRookCapMin[i][j] =  (i * 10);
				for (k = i - 1; k >= 0; k --) {
					if ((j & (1 << k))!=0) {
						RankRookCapMoves[i][j][Index] =  (k * 10);
						Index ++;
						RankRookCapMin[i][j] =  (k * 10);
						break;
					}
				}
				RankRookCapMoves[i][j][Index] =  -1;
				Index = 0;
				RankCannonCapMax[i][j] =  (i * 10);
				for (k = i + 1; k <= 8; k ++) {
					if ((j & (1 << k))!=0) {
						k ++;
						break;
					}
				}
				for (; k <= 8; k ++) {
					if ((j & (1 << k))!=0) {
						RankCannonCapMoves[i][j][Index] =  (k * 10);
						Index ++;
						RankCannonCapMax[i][j] =  (k * 10);
						break;
					}
				}
				RankCannonCapMin[i][j] =  (i * 10);
				for (k = i - 1; k >= 0; k --) {
					if ((j & (1 << k))!=0) {
						k --;
						break;
					}
				}
				for (; k >= 0; k --) {
					if ((j & (1 << k))!=0) {
						RankCannonCapMoves[i][j][Index] =  (k * 10);
						Index ++;
						RankCannonCapMin[i][j] =  (k * 10);
						break;
					}
				}
				RankCannonCapMoves[i][j][Index] =  -1;
			}
		}
		return;
	}
	//for test
	public static void main(String[] args) throws IOException{
		System.out.println("-------------------------------------");
		//System.out.println("KnightMoves[44][i]:");
		//for(int i=0;i<12;i++)
		//	System.out.print((int)KnightMoves[44][i]+"   ");
		
		//System.out.println("\nKnightMoves[44][i](Knight Leg):");
		//for(int i=0;i<8;i++)
		//	System.out.print((int)HorseLegs[44][i]+"   ");	
		
		//System.out.println("\nFileNonCapMoves[2][0][i]:");
		//for(int i=0;i<12;i++)
		//	System.out.print((int)FileNonCapMoves[2][0][i]+"   ");
		
		//System.out.println("\nFileNonCapMoves[2][129][i]:");
		//for(int i=0;i<12;i++)
		//	System.out.print((int)FileNonCapMoves[2][129][i]+"   ");
			
		//System.out.println("\nFileCannonCapMoves[2][129][i]:");
		//for(int i=0;i<4;i++)
		//	System.out.print((int)FileCannonCapMoves[2][224][i]+"   ");
		//for(int i=0;i<18;i++){
		//System.out.println("\nPawnCheck["+i+"]");
		//System.out.println(PawnCheck[i]);	
		//}
		//for(int i=50;i<80;i++){
			//System.out.println("\nKnightPinCheck[8]["+i+"]");
			//System.out.println(KnightPinCheck[8][i]);
			//System.out.println(CheckLegs[i]);
			//System.out.println(BitBoard.CheckSum(CheckLegs[i]));
			//System.out.println(BitMask[i]);
		//}
		//System.in.read();
		for (int i=0;i<18;i++){
			System.out.println(i);
			System.out.println(CheckLegs[i]);		
		}
	}
}

⌨️ 快捷键说明

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