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

📄 gamescreen.java

📁 j2me华容道游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					// 卒上下移动
					if (ID[from] == 7){
						ChangeZu(g);
						return;
					}
					
					// 关羽下移动
					if (ID[from] == 5 && cursorPosition - from == 4){
						if (ID[cursorPosition + 1] == 0){
							ChangeGuanYu_V(g);
							return;
						}
					}
					
					// 关羽上移动
					if (ID[from] == 5 && cursorPosition - from == -4){
						if (ID[cursorPosition + 1] == 0){
							ChangeGuanYu_V(g);
							return;
						}
					}					
				}
				
				// 关羽上下移动一格处理
				if (cursorPosition - from == 5 || cursorPosition - from == -3){
					// 关羽下移动
					if (ID[from] == 5 && cursorPosition - from == 5){
						if (ID[cursorPosition - 1] == 0){
							cursorPosition = cursorPosition - 1;
							ChangeGuanYu_V(g);
							return;
						}
					}
					
					// 关羽上移动
					if (ID[from] == 5 && cursorPosition - from == -3){
						if (ID[cursorPosition - 1] == 0){
							cursorPosition = cursorPosition - 1;
							ChangeGuanYu_V(g);
							return;
						}
					}					
				}
				
				// 曹操上下移动一格处理
				if (cursorPosition - from == 8 || cursorPosition - from == -4){
					// 曹操下移动
					if (ID[from] == 2 && cursorPosition - from == 8){
						if (ID[cursorPosition + 1] == 0){
							ChangeCaoCao_V(g, 1);
							return;
						}
					}
					
					// 曹操上移动
					if (ID[from] == 2 && cursorPosition - from == -4){
						if (ID[cursorPosition + 1] == 0){
							ChangeCaoCao_V(g, -1);
							return;
						}
					}					
				}
					
				// 曹操上下移动一格处理
				if (cursorPosition - from == 9 || cursorPosition - from == -3){
					// 曹操下移动
					if (ID[from] == 2 && cursorPosition - from == 9){
						if (ID[cursorPosition - 1] == 0){
							cursorPosition = cursorPosition - 1;
							ChangeCaoCao_V(g, 1);
							return;
						}
					}
					
					// 曹操上移动
					if (ID[from] == 2 && cursorPosition - from == -3){
						if (ID[cursorPosition - 1] == 0){
							cursorPosition = cursorPosition - 1;
							ChangeCaoCao_V(g, -1);
							return;
						}
					}					
				}
				
				// 张飞、马超、赵云、黄忠上下移动一格处理
				if (cursorPosition - from == 8 || cursorPosition - from == -4){
					// 下移动
					if (hOld == boardCellSize * 2 && cursorPosition - from == 8){
						ChangeV2_V(g, 1);
						return;
					}
					
					// 上移动
					if (hOld == boardCellSize * 2 && cursorPosition - from == -4){
						ChangeV2_V(g, -1);
						return;
					}					
				}
					
				// 张飞、马超、赵云、黄忠上下移动两格处理
				if (cursorPosition - from == 12 || cursorPosition - from == -8){
					// 下移动
					if (hOld == boardCellSize * 2 && cursorPosition - from == 12){
						ChangeV2_V(g, 2);
						return;
					}
					
					// 上移动
					if (hOld == boardCellSize * 2 && cursorPosition - from == -8){
						ChangeV2_V(g, -2);
						return;
					}					
				}
				
				// 卒下移两格处理
				if (cursorPosition - from == 8){
					if (ID[from] == 7 && ID[cursorPosition - 4] == 0){
						ChangeZu(g);
						return;
					}
				}
				
				// 卒上移两格处理
				if (cursorPosition - from == -8){
					if (ID[from] == 7 && ID[cursorPosition + 4] == 0){
						ChangeZu(g);
						return;
					}
				}
			
				// 卒右移两格处理
				if (cursorPosition - from == 2 && cursorPosition % 4 > 1){
					if (ID[from] == 7 && ID[cursorPosition - 1] == 0){
						ChangeZu(g);
						return;
					}
				}

				// 卒左移两格处理
				if (cursorPosition - from == -2 && cursorPosition % 4 < 2){
					if (ID[from] == 7 && ID[cursorPosition + 1] == 0){
						ChangeZu(g);
						return;
					}
				}
					
				// 卒右移一格、上移一格处理
				if (cursorPosition - from == -3 && cursorPosition % 4 > 0){
					if (ID[from] == 7 && (ID[from - 4] == 0 || ID[from + 1] == 0)){
						ChangeZu(g);
						return;
					}
				}
				
				// 卒左移一格、上移一格处理
				if (cursorPosition - from == -5 && cursorPosition % 4 < 3){
					if (ID[from] == 7 && (ID[from - 4] == 0 || ID[from - 1] == 0 )){
						ChangeZu(g);
						return;
					}
				}
				
				// 卒左移一格、下移一格处理
				if (cursorPosition - from == 3 && cursorPosition % 4 < 3){
					if (ID[from] == 7 && (ID[from - 1] == 0 || ID[from + 4] == 0 )){
						ChangeZu(g);
						return;
					}
				}
					
				// 卒右移一格、下移一格处理
				if (cursorPosition - from == 5 && cursorPosition % 4 > 0){
					if (ID[from] == 7 && (ID[from + 1] == 0 || ID[from + 4] == 0 )){
						ChangeZu(g);
						return;
					}
				}				
			}							
		}		
				
		// 在光标当前所处位置以蓝线绘制光标框
		g.setColor(BLUE);
		
		// 当前光标大小
		int w = boardCellSize;
		int h = boardCellSize;
		if (cursorPosition / 4 < 4)
			if (Draw[cursorPosition + 4] == 0 && ID[cursorPosition] == ID[cursorPosition + 4])
				h = h * 2;		
		if (cursorPosition % 4 < 3)
			if (Draw[cursorPosition + 1] == 0 && ID[cursorPosition] == ID[cursorPosition + 1])
				w = w * 2;
			
		// 绘制光标
		g.drawRect(((cursorPosition % 4) * boardCellSize) + 1 + boardLeft, ((int)(cursorPosition / 4) * boardCellSize) + 1 + boardTop, w - 2, h - 2);	
	}

	private void ChangeZu(Graphics g) {
		// 交换图象
		ID[cursorPosition] = 7;
		ID[from] = 0;
		
		// 交换主索引标志
		Draw[cursorPosition] = 1;
		Draw[from] = 1;

		// 绘制交换后的图片
		int x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
		int y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[ID[cursorPosition]], x, y, 0);
		
		x = (from % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[0], x, y, 0);
	}	
	
	private void ChangeV2_V(Graphics g, int step){
		// 交换图象
		int temp = ID[from]; 
		ID[from] = 0;
		ID[from + 4] = 0;
		ID[cursorPosition] = temp;

		// 交换主索引标志
		Draw[from] = 1;
		Draw[from + 4] = 1;

		if (step > 0){
			// 交换图象
			ID[cursorPosition - 4] = temp;
	
			// 交换主索引标志
			Draw[cursorPosition - 4] = 1;
			Draw[cursorPosition] = 0;
	
			// 修正主索引位置
			cursorPosition = cursorPosition - 4; 
		}
		else{
			// 交换图象
			ID[cursorPosition + 4] = temp;
	
			// 交换主索引标志
			Draw[cursorPosition] = 1;
			Draw[cursorPosition + 4] = 0;
		}
			
		int x = (from % 4) * boardCellSize + 1 + boardLeft;
		int y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[0], x, y, 0);

		x = ((from + 4) % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)((from + 4) / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[0], x, y, 0);

		// 绘制交换后的图片
		x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[ID[cursorPosition]], x, y, 0);		
	}
	
	private void ChangeV2_H(Graphics g){
		// 交换图象
		ID[cursorPosition] = ID[from];
		ID[cursorPosition + 4] = ID[from];
		ID[from] = 0;
		ID[from + 4] = 0;
		
		// 交换主索引标志
		Draw[cursorPosition] = 1;
		Draw[cursorPosition + 4] = 0;
		Draw[from] = 1;
		Draw[from + 4] = 1;

		// 绘制交换后的图片
		int x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
		int y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[ID[cursorPosition]], x, y, 0);
		
		x = (from % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[0], x, y, 0);

		x = ((from + 4) % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)((from + 4) / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[0], x, y, 0);
	}	
	
	private void ChangeGuanYu_H(Graphics g, int step){
		// 交换图象
		ID[from] = 0;
		ID[from + 1] = 0;
		ID[cursorPosition] = 5;

		// 交换主索引标志
		Draw[from] = 1;
		Draw[from + 1] = 1;

		if (step > 0){
			// 交换图象
			ID[cursorPosition - 1] = 5;
	
			// 交换主索引标志
			Draw[cursorPosition - 1] = 1;
			Draw[cursorPosition] = 0;
	
			// 修正主索引位置
			cursorPosition = cursorPosition - 1; 
		}
		else{
			// 交换图象
			ID[cursorPosition + 1] = 5;
	
			// 交换主索引标志
			Draw[cursorPosition] = 1;
			Draw[cursorPosition + 1] = 0;
		}
			
		int x = (from % 4) * boardCellSize + 1 + boardLeft;
		int y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[0], x, y, 0);

		x = ((from + 1) % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)((from + 1) / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[0], x, y, 0);

		// 绘制交换后的图片
		x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[ID[cursorPosition]], x, y, 0);			
	}
	
	private void ChangeGuanYu_V(Graphics g){
		// 交换图象
		ID[cursorPosition] = ID[from];
		ID[cursorPosition + 1] = ID[from];
		ID[from] = 0;
		ID[from + 1] = 0;
		
		// 交换主索引标志
		Draw[cursorPosition] = 1;
		Draw[cursorPosition + 1] = 0;
		Draw[from] = 1;
		Draw[from + 1] = 1;

		// 绘制交换后的图片
		int x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
		int y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[ID[cursorPosition]], x, y, 0);
		
		x = (from % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[0], x, y, 0);

		x = ((from + 1) % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)((from + 1) / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[0], x, y, 0);
	}
	
	private void ChangeCaoCao_H(Graphics g, int step){
		int x, y;
		
		// 交换图象
		ID[from] = 0;
		ID[from + 1] = 0;
		ID[from + 4] = 0;
		ID[from + 5] = 0;
		ID[cursorPosition] = 2;
		ID[cursorPosition + 4] = 2;

		// 交换主索引标志
		Draw[from] = 1;
		Draw[from + 1] = 1;
		Draw[from + 4] = 1;
		Draw[from + 5] = 1;

		if (step > 0){
			// 交换图象
			ID[cursorPosition - 1] = 2;
			ID[cursorPosition + 3] = 2;
	
			// 交换主索引标志
			Draw[cursorPosition - 1] = 1;
			Draw[cursorPosition] = 0;
			Draw[cursorPosition + 3] = 0;
			Draw[cursorPosition + 4] = 0;
	
			// 修正主索引位置
			cursorPosition = cursorPosition - 1; 
			
			x = (from % 4) * boardCellSize + 1 + boardLeft;
			y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
			g.drawImage(Pic[0], x, y, 0);

			x = ((from + 4) % 4) * boardCellSize + 1 + boardLeft;
			y = ((int)((from + 4) / 4)) * boardCellSize + boardTop + 1;
			g.drawImage(Pic[0], x, y, 0);
		}
		else{
			// 交换图象
			ID[cursorPosition + 1] = 2;
			ID[cursorPosition + 5] = 2;
	
			// 交换主索引标志
			Draw[cursorPosition] = 1;
			Draw[cursorPosition + 1] = 0;
			Draw[cursorPosition + 4] = 0;
			Draw[cursorPosition + 5] = 0;

			x = ((from + 1) % 4) * boardCellSize + 1 + boardLeft;
			y = ((int)((from + 1) / 4)) * boardCellSize + boardTop + 1;
			g.drawImage(Pic[0], x, y, 0);

			x = ((from + 5) % 4) * boardCellSize + 1 + boardLeft;
			y = ((int)((from + 5) / 4)) * boardCellSize + boardTop + 1;
			g.drawImage(Pic[0], x, y, 0);
		}
			
		// 绘制交换后的图片
		x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[ID[cursorPosition]], x, y, 0);		
		
		// 游戏结束检测
		if (ID[13] == 2 && ID[14] == 2 && ID[17] == 2 && ID[18] == 2) {
			isGameOver = true;
			repaint();
		}
					
		preCursorPosition = cursorPosition;
	}
	
	private void ChangeCaoCao_V(Graphics g, int step){
		int x, y;
		// 交换图象
		ID[from] = 0;
		ID[from + 1] = 0;
		ID[from + 4] = 0;
		ID[from + 5] = 0;
		ID[cursorPosition] = 2;
		ID[cursorPosition + 1] = 2;

		// 交换主索引标志
		Draw[from] = 1;
		Draw[from + 1] = 1;
		Draw[from + 4] = 1;
		Draw[from + 5] = 1;

		if (step > 0){
			// 交换图象
			ID[cursorPosition - 4] = 2;
			ID[cursorPosition - 3] = 2;
	
			// 交换主索引标志
			Draw[cursorPosition - 4] = 1;
			Draw[cursorPosition - 3] = 0;
			Draw[cursorPosition] = 0;
			Draw[cursorPosition + 1] = 0;
	
			// 修正主索引位置
			cursorPosition = cursorPosition - 4; 

			x = (from % 4) * boardCellSize + 1 + boardLeft;
			y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
			g.drawImage(Pic[0], x, y, 0);

			x = ((from + 1) % 4) * boardCellSize + 1 + boardLeft;
			y = ((int)((from + 1) / 4)) * boardCellSize + boardTop + 1;
			g.drawImage(Pic[0], x, y, 0);
		}
		else{
			// 交换图象
			ID[cursorPosition + 4] = 2;
			ID[cursorPosition + 5] = 2;
	
			// 交换主索引标志
			Draw[cursorPosition] = 1;
			Draw[cursorPosition + 1] = 0;
			Draw[cursorPosition + 4] = 0;
			Draw[cursorPosition + 5] = 0;

			x = ((from + 4) % 4) * boardCellSize + 1 + boardLeft;
			y = ((int)((from + 4) / 4)) * boardCellSize + boardTop + 1;
			g.drawImage(Pic[0], x, y, 0);

			x = ((from + 5) % 4) * boardCellSize + 1 + boardLeft;
			y = ((int)((from + 5) / 4)) * boardCellSize + boardTop + 1;
			g.drawImage(Pic[0], x, y, 0);
		}

		// 绘制交换后的图片
		x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
		y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
		g.drawImage(Pic[ID[cursorPosition]], x, y, 0);				

		// 游戏结束检测
		if (ID[13] == 2 && ID[14] == 2 && ID[17] == 2 && ID[18] == 2){ 
			isGameOver = true;
			repaint();
		}
		preCursorPosition = cursorPosition;
	}
}

⌨️ 快捷键说明

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