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

📄 chess.java

📁 java编写的中国象棋游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
					play1.setBounds(play2.getX(),play2.getY(),55,55);
				}
				
				//红棋不能向下吃棋
				else if (play1.getName().charAt(1) == '2' && play1.getY() > play2.getY() && play1.getName().charAt(1) != play2.getName().charAt(1)){
					play2.setVisible(false);
					//把对方的位置给自己
					play1.setBounds(play2.getX(),play2.getY(),55,55);
				}			
			}
			
			//当前记录添加到集合(用于悔棋)
			Var.add(String.valueOf(play1.isVisible()));
			Var.add(String.valueOf(play1.getX()));
			Var.add(String.valueOf(play1.getY()));
			Var.add(String.valueOf(Man));
			
			//当前记录添加到集合(用于悔棋)
			Var.add(String.valueOf(play2.isVisible()));
			Var.add(String.valueOf(play2.getX()));
			Var.add(String.valueOf(play2.getY()));
			Var.add(String.valueOf(i));

		}//卒吃结束
		
		/**炮、车移动规则*/
		public void cannonRule(JLabel play,JLabel playQ[],MouseEvent me){
			//起点和终点之间是否有棋子
			int Count = 0;
			
			//上、下移动
			if (play.getX() - me.getX() <= 0 && play.getX() - me.getX() >= -55){
				//指定所有模糊Y坐标
				for (int i=56;i<=571;i+=57){
					//移动的Y坐标是否有指定坐标相近的
					if (i - me.getY() >= -27 && i - me.getY() <= 27){
						//所有的棋子
						for (int j=0;j<32;j++){
							//找出在同一条竖线的所有棋子、并不包括自己
							if (playQ[j].getX() - play.getX() >= -27 && playQ[j].getX() - play.getX() <= 27 && playQ[j].getName()!=play.getName() && playQ[j].isVisible()){
								//从起点到终点(从左到右)
								for (int k=play.getY()+57;k<i;k+=57){
									//大于起点、小于终点的坐标就可以知道中间是否有棋子
									if (playQ[j].getY() < i && playQ[j].getY() > play.getY()){
										//中间有一个棋子就不可以从这条竖线过去
										Count++;
										break;
									}
								}//for
								
								//从起点到终点(从右到左)
								for (int k=i+57;k<play.getY();k+=57){
									//找起点和终点的棋子
									if (playQ[j].getY() < play.getY() && playQ[j].getY() > i){
										Count++;
										break;
									}
								}//for
							}//if
						}//for
						
						//起点和终点没有棋子就可以移动了
						if (Count == 0){
							//当前记录添加到集合(用于悔棋)
							Var.add(String.valueOf(play.isVisible()));
							Var.add(String.valueOf(play.getX()));
							Var.add(String.valueOf(play.getY()));
							Var.add(String.valueOf(Man));
							play.setBounds(play.getX(),i,55,55);
							break;
						}
					}//if
				}//for
			}//if

			//左、右移动
			else if (play.getY() - me.getY() >=-27 && play.getY() - me.getY() <= 27){
				//指定所有模糊X坐标
				for (int i=24;i<=480;i+=57){
					//移动的X坐标是否有指定坐标相近的
					if (i - me.getX() >= -55 && i-me.getX() <= 0){
						//所有的棋子
						for (int j=0;j<32;j++){
							//找出在同一条横线的所有棋子、并不包括自己
							if (playQ[j].getY() - play.getY() >= -27 && playQ[j].getY() - play.getY() <= 27 && playQ[j].getName()!=play.getName() && playQ[j].isVisible()){
								//从起点到终点(从上到下)				
								for (int k=play.getX()+57;k<i;k+=57){
									//大于起点、小于终点的坐标就可以知道中间是否有棋子
									if (playQ[j].getX() < i && playQ[j].getX() > play.getX()){
										//中间有一个棋子就不可以从这条横线过去
										Count++;
										break;
									}
								}//for
								
								//从起点到终点(从下到上)
								for (int k=i+57;k<play.getX();k+=57){
									//找起点和终点的棋子
									if (playQ[j].getX() < play.getX() && playQ[j].getX() > i){
										Count++;
										break;
									}
								}//for
							}//if
						}//for
						
						//起点和终点没有棋子
						if (Count == 0){
							//当前记录添加到集合(用于悔棋)
							Var.add(String.valueOf(play.isVisible()));
							Var.add(String.valueOf(play.getX()));
							Var.add(String.valueOf(play.getY()));
							Var.add(String.valueOf(Man));
							
							play.setBounds(i,play.getY(),55,55);
							break;
						}
					}//if
				}//for
			}//else
			
		}//炮、车移动方法结束


		/**炮、车吃棋规则*/
		public void cannonRule(int Chess,JLabel play,JLabel playTake,JLabel playQ[],MouseEvent me){
			//起点和终点之间是否有棋子
			int Count = 0;


			//所有的棋子
			for (int j=0;j<32;j++){
				//找出在同一条竖线的所有棋子、并不包括自己
				if (playQ[j].getX() - play.getX() >= -27 && playQ[j].getX() - play.getX() <= 27 && playQ[j].getName()!=play.getName() && playQ[j].isVisible()){

					//自己是起点被吃的是终点(从上到下)
					for (int k=play.getY()+57;k<playTake.getY();k+=57){
						//大于起点、小于终点的坐标就可以知道中间是否有棋子
						if (playQ[j].getY() < playTake.getY() && playQ[j].getY() > play.getY()){
								//计算起点和终点的棋子个数
								Count++;			
								break;							
						}
					}//for
								
					//自己是起点被吃的是终点(从下到上)
					for (int k=playTake.getY();k<play.getY();k+=57){
						//找起点和终点的棋子
						if (playQ[j].getY() < play.getY() && playQ[j].getY() > playTake.getY()){
								Count++;	
								break;
						}
					}//for
				}//if
							
				//找出在同一条竖线的所有棋子、并不包括自己
				else if (playQ[j].getY() - play.getY() >= -10 && playQ[j].getY() - play.getY() <= 10 && playQ[j].getName()!=play.getName() && playQ[j].isVisible()){
					//自己是起点被吃的是终点(从左到右)
					for (int k=play.getX()+50;k<playTake.getX();k+=57){
						//大于起点、小于终点的坐标就可以知道中间是否有棋子						
						if (playQ[j].getX() < playTake.getX() && playQ[j].getX() > play.getX()){
							Count++;			
							break;	
						}
					}//for
								
					//自己是起点被吃的是终点(从右到左)
					for (int k=playTake.getX();k<play.getX();k+=57){
						//找起点和终点的棋子
						if (playQ[j].getX() < play.getX() && playQ[j].getX() > playTake.getX()){
								Count++;
								break;
						}
					}//for
				}//if
			}//for
						
			//起点和终点之间要一个棋子是炮的规则、并不能吃自己的棋子
			if (Count == 1 && Chess == 0 && playTake.getName().charAt(1) != play.getName().charAt(1)){
				//当前记录添加到集合(用于悔棋)
				Var.add(String.valueOf(play.isVisible()));
				Var.add(String.valueOf(play.getX()));
				Var.add(String.valueOf(play.getY()));
				Var.add(String.valueOf(Man));
				
				//当前记录添加到集合(用于悔棋)
				Var.add(String.valueOf(playTake.isVisible()));
				Var.add(String.valueOf(playTake.getX()));									
				Var.add(String.valueOf(playTake.getY()));
				Var.add(String.valueOf(i));
				
				playTake.setVisible(false);
				play.setBounds(playTake.getX(),playTake.getY(),55,55);
			}
			
			//起点和终点之间没有棋子是车的规则、并不能吃自己的棋子			
			else if (Count ==0  && Chess == 1 && playTake.getName().charAt(1) != play.getName().charAt(1)){
				
				//当前记录添加到集合(用于悔棋)
				Var.add(String.valueOf(play.isVisible()));
				Var.add(String.valueOf(play.getX()));									
				Var.add(String.valueOf(play.getY()));
				Var.add(String.valueOf(Man));
				
				//当前记录添加到集合(用于悔棋)
				Var.add(String.valueOf(playTake.isVisible()));
				Var.add(String.valueOf(playTake.getX()));									
				Var.add(String.valueOf(playTake.getY()));
				Var.add(String.valueOf(i));
				
				playTake.setVisible(false);
				play.setBounds(playTake.getX(),playTake.getY(),55,55);
			}
			
		}//炮、车吃棋方法结束
		
		/**马移动规则*/
		public void horseRule(JLabel play,JLabel playQ[],MouseEvent me){
			//保存坐标和障碍
			int Ex=0,Ey=0,Move=0;			
			
			//上移、左边
			if (play.getX() - me.getX() >= 2 && play.getX() - me.getX() <= 57 && play.getY() - me.getY() >= 87 && play.getY() - me.getY() <= 141){
				//合法的Y坐标
				for (int i=56;i<=571;i+=57){
					//移动的Y坐标是否有指定坐标相近的
					if (i - me.getY() >= -27 && i - me.getY() <= 27){
						Ey = i;
						break;
					}
				}
				
				//合法的X坐标
				for (int i=24;i<=480;i+=57){
					//移动的X坐标是否有指定坐标相近的
					if (i - me.getX() >= -55 && i-me.getX() <= 0){
						Ex = i;
						break;
					}
				}
				
				//正前方是否有别的棋子
				for (int i=0;i<32;i++){
					if (playQ[i].isVisible() && play.getX() - playQ[i].getX() == 0  && play.getY() - playQ[i].getY() == 57 ){
						Move = 1;
						break;
					}	
				}
				
				//可以移动该棋子
				if (Move == 0){
					//当前记录添加到集合(用于悔棋)
					Var.add(String.valueOf(play.isVisible()));
					Var.add(String.valueOf(play.getX()));
					Var.add(String.valueOf(play.getY()));
					Var.add(String.valueOf(Man));
									
					play.setBounds(Ex,Ey,55,55);
				}
				
			}//if
			
			//左移、上边
			else if (play.getY() - me.getY() >= 27 && play.getY() - me.getY() <= 86 && play.getX() - me.getX() >= 70 && play.getX() - me.getX() <= 130){
				//Y
				for (int i=56;i<=571;i+=57){
					if (i - me.getY() >= -27 && i - me.getY() <= 27){
						Ey = i;
					}
				}
				
				//X
				for (int i=24;i<=480;i+=57){
					if (i - me.getX() >= -55 && i-me.getX() <= 0){
						Ex = i;
					}
				}
				
				//正左方是否有别的棋子
				for (int i=0;i<32;i++){
					if (playQ[i].isVisible() && play.getY() - playQ[i].getY() == 0 && play.getX() - playQ[i].getX() == 57 ){
						Move = 1;
						break;
					}
				}
				
				if (Move == 0){
					//当前记录添加到集合(用于悔棋)
					Var.add(String.valueOf(play.isVisible()));
					Var.add(String.valueOf(play.getX()));
					Var.add(String.valueOf(play.getY()));
					Var.add(String.valueOf(Man));
					
					play.setBounds(Ex,Ey,55,55);
				}
			}//else
			
			//下移、右边
			else if (me.getY() - play.getY() >= 87 && me.getY() - play.getY() <= 141 && me.getX() - play.getX() <= 87 && me.getX() - play.getX() >= 2 ){	
				//Y		
				for (int i=56;i<=571;i+=57){
					if (i - me.getY() >= -27 && i - me.getY() <= 27){
						Ey = i;
					}
				}
				
				//X
				for (int i=24;i<=480;i+=57){
					if (i - me.getX() >= -55 && i-me.getX() <= 0){
						Ex = i;
					}
				}
				
				//正下方是否有别的棋子
				for (int i=0;i<32;i++){
					if (playQ[i].isVisible() && play.getX() - playQ[i].getX() == 0  && playQ[i].getY() - play.getY() == 57 ){
						Move = 1;
						break;
					}
				}
				
				if (Move == 0){
					//当前记录添加到集合(用于悔棋)
					Var.add(String.valueOf(play.isVisible()));
					Var.add(String.valueOf(play.getX()));
					Var.add(String.valueOf(play.getY()));
					Var.add(String.valueOf(Man));
					
					play.setBounds(Ex,Ey,55,55);
				}
			}//else
			
			//上移、右边
			else if (play.getY() - me.getY() >= 87 && play.getY() - me.getY() <= 141 && me.getX() - play.getX() <= 87 && me.getX() - play.getX() >= 30 ){
				//合法的Y坐标
				for (int i=56;i<=571;i+=57){
					if (i - me.getY() >= -27 && i - me.getY() <= 27){
						Ey = i;
						break;
					}
				}
				
				//合法的X坐标
				for (int i=24;i<=480;i+=57){
					if (i - me.getX() >= -55 && i-me.getX() <= 0){
						Ex = i;
						break;
					}
				}
				
				//正前方是否有别的棋子
				for (int i=0;i<32;i++){
					System.out.println(i+"playQ[i].getX()="+playQ[i].getX());
					//System.out.println("play.getX()="+play.getX());
					if (playQ[i].isVisible() && play.getX() - playQ[i].getX() == 0 && play.getY() - playQ[i].getY() == 57 ){
						Move = 1;
						//System.out.println("play.getY()="+play.getY());
						//System.out.println("playQ[i].getY()="+playQ[i].getY());
						break;
					}
				}
				
				//可以移动该棋子
				if (Move == 0){
					//当前记录添加到集合(用于悔棋)
					Var.add(String.valueOf(play.isVisible()));
					Var.add(String.valueOf(play.getX()));	
					Var.add(String.valueOf(play.getY()));
					Var.add(String.valueOf(Man));
					
					play.setBounds(Ex,Ey,55,55);
				}
			}//else 
			
			//下移、左边
			else if (me.getY() - play.getY() >= 87 && me.getY() - play.getY() <= 141 && play.getX() - me.getX() <= 87 && play.getX() - me.getX() >= 10 ){
				//合法的Y坐标
				for (int i=56;i<=571;i+=57){
					if (i - me.getY() >= -27 && i - me.getY() <= 27){
						Ey = i;
						break;
					}
				}
				
				//合法的X坐标
				for (int i=24;i<=480;i+=57){
					if (i - me.getX() >= -55 && i-me.getX() <= 0){
						Ex = i;
						break;
					}
				}
				
				//正下方是否有别的棋子
				for (int i=0;i<32;i++){
					if (playQ[i].isVisible() && play.getX() - playQ[i].getX() == 0 && play.getY() - playQ[i].getY() == 57 ){
						Move = 1;
						break;
					}
				}
				
				//可以移动该棋子
				if (Move == 0){
					//当前记录添加到集合(用于悔棋)
					Var.add(String.valueOf(play.isVisible()));
					Var.add(String.valueOf(play.getX()));
					Var.add(String.valueOf(play.getY()));
					Var.add(String.valueOf(Man));
					
					play.setBounds(Ex,Ey,55,55);
				}
			}//else
			
			//右移、上边
			else if (play.getY() - me.getY() >= 30 && play.getY() - me.getY() <= 87 && me.getX() - play.getX() <= 141 && me.getX() - play.getX() >= 87 ){
				//Y		
				for (int i=56;i<=571;i+=57){
					if (i - me.getY() >= -27 && i - me.getY() <= 27){
						Ey = i;
					}
				}
				
				//X
				for (int i=24;i<=480;i+=57){
					if (i - me.getX() >= -55 && i-me.getX() <= 0){
						Ex = i;
					}
				}

⌨️ 快捷键说明

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