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

📄 piecesselect.java

📁 一个简单的Java Swing 游戏Blokus~方块圈地~Eclipse3.0 Project
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			
			for(int i = 0; i < mit; i ++)
				for(int j = mit; j < 20 - maxC; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			
			for(int i = 0; i < mit; i ++)
				for(int j = 0; j < mit; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			
			
		}
		
		if(p.getpColor() == 2){
			maxBr = maxRow(boardT,2);
			maxBc = minColum(boardT,2);
			mit = (maxBr + maxBc) / 2;
			
			if(maxBr > 10 && maxBc < 10)
				mit = 10;
			
			//System.out.println("mit:" + mit);
			for(int i = mit; i < 20 - maxR; i ++)
				for(int j = 0; j < mit; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			for(int i = 0; i < mit; i ++)
				for(int j = 0; j < mit; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			
			for(int i = mit; i < 20 - maxR; i ++)
				for(int j = mit; j < 20 - maxC; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			
			for(int i = 0; i < mit; i ++)
				for(int j = mit; j < 20 - maxC; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
		}
		
		if(p.getpColor() == 3){
			maxBr = minRow(boardT,3);
			maxBc = minColum(boardT,3);
			mit = (maxBr + maxBc) / 2;
			if(maxBr < 10 && maxBc < 10)
				mit = 10;
			
			//System.out.println("mit:" + mit);
			for(int i = 0; i < mit - maxR; i ++)
				for(int j = 0; j < mit - maxC; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			for(int i = mit; i < 20 - maxR; i ++)
				for(int j = 0; j < mit; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			
			for(int i = 0; i < mit; i ++)
				for(int j = mit; j < 20 - maxC; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			
			for(int i = mit - maxR; i < 20 - maxR; i ++)
				for(int j = mit - maxC; j < 20 - maxC; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
		}
		
		if(p.getpColor() == 4){
			maxBr = minRow(boardT,4);
			maxBc = maxColum(boardT,4);
			mit = (maxBr + maxBc) / 2;
			if(maxBr < 10 && maxBc > 10)
				mit = 10;
			
			//System.out.println("mit:" + mit);
			for(int i = 0; i < mit; i ++)
				for(int j = mit; j < 20 - maxC; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			for(int i = 0; i < mit; i ++)
				for(int j = 0; j < mit; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
			
			for(int i = mit; i < 20 - maxR; i ++)
				for(int j = mit; j < 20 - maxC; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							
							return true;
						}
					}
			
			for(int i = mit; i < 20 - maxR; i ++)
				for(int j = 0; j < mit; j ++)
					if(boardT[i][j] == 0){
						if(canDo(p,boardT,gridT,i,j) == true){
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++)
									if(gridT[k][h] == 1){
										if(game.getBoardGrid()[i + k][j + h] != 0){
											canP = false;
											//break;
											return false;
											//game.getBoardGrid()[i + k][j + h] = p.getpColor();
											}	
									}
							for(int k = 0; k < p.getScore(); k ++)
								for(int h = 0; h < p.getScore(); h ++){
									if(gridT[k][h] == 1 && canP == true){
										game.getBoardGrid()[i + k][j + h] = p.getpColor();
									}
								}
							return true;
						}
					}
		}
		
		if(canP == false)
		for(int i = 0; i < 20 - maxR; i ++)
			for(int j = 0; j < 20 - maxC; j ++)
				if(boardT[i][j] == 0){
					if(canDo(p,boardT,gridT,i,j) == true){
						for(int k = 0; k < p.getScore(); k ++)
							for(int h = 0; h < p.getScore(); h ++)
								if(gridT[k][h] == 1){
									if(game.getBoardGrid()[i + k][j + h] != 0){
										canP = false;
										return false;
										//game.getBoardGrid()[i + k][j + h] = p.getpColor();
										}	
								}
						for(int k = 0; k < p.getScore(); k ++)
							for(int h = 0; h < p.getScore(); h ++){
								if(gridT[k][h] == 1 && canP == true){
									game.getBoardGrid()[i + k][j + h] = p.getpColor();
								}
							}
						System.out.println("www");
						return true;
					}
				}
		
		return false;
	}
	
	//是否能自动放上棋子
	private boolean canDo(Pieces p, int[][] boardT, int[][] gridT, int i, int j){
		boolean can = false;
		for(int k = 0; k < p.getScore(); k ++)
			for(int h = 0; h < p.getScore(); h ++){
				if(gridT[k][h] == 1){
					if(canBePutAuto(p,boardT,i + k,j + h) == true)
						can = true;
					if(canNotBePutAuto(p,boardT,i + k,j + h) == false)
						return false;
				}
			}
		return can;
	}
	
	//自动情况下能放棋子的情况
	private boolean canBePutAuto(Pieces p, int[][] boardT, int i, int j){
		int color = p.getpColor();
		int m = 0, n = 0;
		
		if(blueS == 0 || yellowS == 0 || redS == 0 || greenS == 0){
			switch(turn){
			case 1:{m = 0; n = 0;}
				break;
			case 2:{m = 0; n = 19;}
				break;
			case 3:{m = 19; n = 19;}
				break;
			case 4:{m = 19; n =0;}
				break;
			default:{m = 0; n = 0;}
				break;
			}
		}
		
		try{
			if((turn == 1 && blueS == 0) || (turn == 2 && yellowS == 0) 
					|| (turn == 3 && redS == 0) || (turn == 4 && greenS == 0)){
				if(i == m && j == n){
					if(turn == 1 && blueS == 0)
						blueS = 2;
					else if(turn == 2 && yellowS == 0)
						yellowS = 2;
					else if(turn == 3 && redS == 0)
						redS = 2;
					else if(turn == 4 && greenS == 0)
						greenS = 2;
					
					return true;
					}
				else

⌨️ 快捷键说明

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