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

📄 chess.java

📁 象棋游戏源码-单个文件编译随处运行. 象棋游戏源码-单个文件编译随处运行.
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    Rectangle rect=null;
    if(e.getSource()==this)
        move=false;
    if(move==false)
      if(e.getSource() instanceof ChessPiece)
       {
         piece=(ChessPiece)e.getSource();   
         startX=piece.getBounds().x;        
         startY=piece.getBounds().y;     
         
          rect=piece.getBounds();
          for(int i=1;i<=x轴长;i++)
            {
              for(int j=1;j<=y轴长;j++)
                {
                  int x=point[i][j].getX();
                  int y=point[i][j].getY();
                  if(rect.contains(x,y))
                   {                   
                     startI=i;
                     startJ=j;
                     break;
                   }
                  
                }
            }
       }
  } 
 public void mouseMoved(MouseEvent e)
  { 
  }
 public void mouseDragged(MouseEvent e)
  {
 
    ChessPiece piece=null;
       if(e.getSource() instanceof ChessPiece)
         {
           piece=(ChessPiece)e.getSource();   
           
           move=true; 
           
           e=SwingUtilities.convertMouseEvent(piece,e,this); 
         }
    
       if(e.getSource()==this)
        {
          if(move&&piece!=null)
           {
            x=e.getX(); 
            y=e.getY();
            if(红方走棋&&((piece.棋子类别()).equals(红方颜色)))
               {
                 piece.setLocation(x-piece.getWidth()/2,y-piece.getHeight()/2);
               }
            if(黑方走棋&&(piece.棋子类别().equals(黑方颜色)))
               {
                 piece.setLocation(x-piece.getWidth()/2,y-piece.getHeight()/2);
               }
           }
        }
 }
 public void mouseReleased(MouseEvent e)
  { 
    ChessPiece piece=null;
    move=false;
    Rectangle rect=null;
    if(e.getSource() instanceof ChessPiece)
      {
        piece=(ChessPiece)e.getSource();   
        rect=piece.getBounds();
         
        e=SwingUtilities.convertMouseEvent(piece,e,this); 
      }
    if(e.getSource()==this)
     {
        boolean containChessPoint=false;
        int x=0,y=0;
        int m=0,n=0;
        if(piece!=null)
         { 
          for(int i=1;i<=x轴长;i++)
            {
              for(int j=1;j<=y轴长;j++)
                {
                  x=point[i][j].getX();
                  y=point[i][j].getY();
                  if(rect.contains(x,y))
                   { 
                    
                     containChessPoint=true;
                     m=i;
                     n=j;
                     break;
                   }
                  
                }
            }
         }
        if(piece!=null&&containChessPoint)
         {
           Color pieceColor=piece.获取棋子颜色();
          if(point[m][n].isPiece()) 
            { 
               Color c=(point[m][n].getPiece()).获取棋子颜色();
               if(pieceColor.getRGB()==c.getRGB())
                   { 
                     piece.setLocation(startX,startY);
                     
                     (point[startI][startJ]).set有棋子(true);
                   }                  
               else
                   { 
                      boolean ok=rule.movePieceRule(piece,startI,startJ, m,n);
                      if(ok)
                       {                 
                            ChessPiece pieceRemoved=point[m][n].getPiece();
                            point[m][n].reMovePiece(pieceRemoved,this);
                            point[m][n].setPiece(piece,this);
                            (point[startI][startJ]).set有棋子(false);
                            record.记录棋谱(piece,startI,startJ,m,n) ;
                            record.记录吃掉的棋子(pieceRemoved)   ;      
                             if(piece.棋子类别().equals(红方颜色))
                                {
                                   红方走棋=false;
                                   黑方走棋=true;
                                }
                             if(piece.棋子类别().equals(黑方颜色))
                                {
                                   黑方走棋=false;
                                   红方走棋=true;
                               }
                           validate();
                           repaint();
                       }
                      else    
                       {
                           piece.setLocation(startX,startY);
                           (point[startI][startJ]).set有棋子(true);
                       }
                   }
                 
            }
          else
            {
              
               boolean ok=rule.movePieceRule(piece,startI,startJ, m,n);
               if(ok)
                 {
                    point[m][n].setPiece(piece,this);
                   (point[startI][startJ]).set有棋子(false);
                   record.记录棋谱(piece,startI,startJ,m,n) ;
                   record.记录吃掉的棋子("没吃棋子");        
                     if(piece.棋子类别().equals(红方颜色))
                       {
                          红方走棋=false;
                          黑方走棋=true;
                       }
                      if(piece.棋子类别().equals(黑方颜色))
                       {
                         黑方走棋=false;
                         红方走棋=true;
                       }
                 }
               else     
                 {
                   piece.setLocation(startX,startY);
                   (point[startI][startJ]).set有棋子(true);
                 }
            }
        }
     if(piece!=null&&!containChessPoint)        
       {        
          piece.setLocation(startX,startY);
          (point[startI][startJ]).set有棋子(true);
       }
    }  
  }
 public void mouseEntered(MouseEvent e)
  {
  }
 public void mouseExited(MouseEvent e)
  { 
  }
 public void mouseClicked(MouseEvent e)
  { 
  }
}
class Rule 
{
  ChessBoard board=null;
  ChessPiece piece=null;
  ChessPoint point[][]; 
  int startI,startJ,endI,endJ;
  public Rule(ChessBoard board,ChessPoint point[][])
  {
    this.board=board;
    this.point=point;
  }
  public boolean movePieceRule(ChessPiece piece,int startI,int startJ,int endI,int endJ)
  {
    this.piece=piece;
    this.startI=startI;
    this.startJ=startJ;
    this.endI=endI;
    this.endJ=endJ;
    int minI=Math.min(startI,endI);
    int maxI=Math.max(startI,endI);
    int minJ=Math.min(startJ,endJ); 
    int maxJ=Math.max(startJ,endJ);
    boolean 可否走棋=false;
   if(piece.getName().equals("车"))
    {
              if(startI==endI)   
                 {
                   int j=0;
                   for(j=minJ+1;j<=maxJ-1;j++)
                     { 
                        if(point[startI][j].isPiece())
                          {
                             可否走棋=false;
                             break;
                          } 
                     }
                    if(j==maxJ)
                     {
                        可否走棋=true;
                     }
                 }
               else if(startJ==endJ)  
                 {  
                    int i=0;
                    for(i=minI+1;i<=maxI-1;i++)
                     { 
                        if(point[i][startJ].isPiece())
                          {
                             可否走棋=false;
                             break;
                          } 
                     }
                    if(i==maxI)
                     {
                          可否走棋=true;
                     } 
                 }
               else                  
                 {
                    可否走棋=false;
                 }

    }
    else if(piece.getName().equals("马"))  
    {
        int xAxle=Math.abs(startI-endI);
        int yAxle=Math.abs(startJ-endJ);
       
       if(xAxle==2&&yAxle==1)
          { 
             if(endI>startI)
                {
                   if(point[startI+1][startJ].isPiece())
                     {
                       可否走棋=false;
                     }
                   else
                     {
                       可否走棋=true;
                     }
                }
              if(endI<startI)
                {
                   if(point[startI-1][startJ].isPiece())
                     {
                       可否走棋=false;
                     }
                   else
                     {
                       可否走棋=true;
                     }
                }
              
          } 
       
       else if(xAxle==1&&yAxle==2)       
          { 
             if(endJ>startJ)
                {
                   if(point[startI][startJ+1].isPiece())
                     {
                       可否走棋=false;
                     }
                   else
                     {
                       可否走棋=true;
                     }
                }
              if(endJ<startJ)
                {
                   if(point[startI][startJ-1].isPiece())
                     {
                       可否走棋=false;
                     }
                   else
                     {
                       可否走棋=true;
                     }
                }
              
          } 
       else 
          {
            可否走棋=false;
          }
    }
   else if(piece.getName().equals("象"))  
    {
        int centerI=(startI+endI)/2;
        int centerJ=(startJ+endJ)/2;
        int xAxle=Math.abs(startI-endI);
        int yAxle=Math.abs(startJ-endJ); 
        if(xAxle==2&&yAxle==2&&endJ<=5)          
          {
             if(point[centerI][centerJ].isPiece())
                {            
                 可否走棋=false;
                }
             else
                {
                  可否走棋=true;
                }
          } 
       else
          {
            可否走棋=false;
          }
    }
   else if(piece.getName().equals("相"))  
    {
        int centerI=(startI+endI)/2;
        int centerJ=(startJ+endJ)/2;
        int xAxle=Math.abs(startI-endI);
        int yAxle=Math.abs(startJ-endJ); 
        if(xAxle==2&&yAxle==2&&endJ>=6)          
          {
             if(point[centerI][centerJ].isPiece())
                {            
                  可否走棋=false;
                }
             else
                {
                  可否走棋=true;
                }
          } 
       else
          {
            可否走棋=false;
          }
    }
   else if(piece.getName().equals("炮"))  
    {
       int number=0;
       if(startI==endI)   
                 {
                   int j=0;
                   for(j=minJ+1;j<=maxJ-1;j++)
                     { 
                        if(point[startI][j].isPiece())
                          {
                            number++;
                          } 
                     }
                   if(number>1)
                     {
                        可否走棋=false;
                     }
                   else if(number==1)
                     {
                        if(point[endI][endJ].isPiece())
                          {
                            可否走棋=true;
                          }
                     }
                   else if(number==0&&!point[endI][endJ].isPiece())
                     {
                        可否走棋=true;
                     }
                 }
       else if(startJ==endJ)  
                 {  
                    int i=0;
                    for(i=minI+1;i<=maxI-1;i++)
                     { 
                        if(point[i][startJ].isPiece())
                          {
                            number++;
                          } 
                     }
                   if(number>1)
                     {
                        可否走棋=false;
                     }
                   else if(number==1)
                     {
                        if(point[endI][endJ].isPiece())
                          {
                            可否走棋=true;
                          }
                     }
                   else if(number==0&&!point[endI][endJ].isPiece())
                     {
                        可否走棋=true;
                     }
                 }
       else 
                 {
                    可否走棋=false;
                 }
    }
   else if(piece.getName().equals("兵"))  
    {
      int xAxle=Math.abs(startI-endI);
      int yAxle=Math.abs(startJ-endJ);
      
       if(endJ>=6)  
          {
            if(startJ-endJ==1&&xAxle==0) 
               {
                  可否走棋=true; 
               }
            
            else
               {
                  可否走棋=false; 
               }
          }

⌨️ 快捷键说明

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