<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    楊彩的Java博客
    醉里挑燈看劍,夢里吹雨聽風.仗劍獨走天涯,試問誰與爭鋒!
    posts - 8,comments - 49,trackbacks - 0

    /*
    ?*中國象棋Java
    ?*作者:yanick
    ?*源文件:Chess.java
    ?*最后修改時間:2006-11-1
    ?*添加功能:實現了當前棋局的保存
    ?*Chess.java
    ?*/

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import java.io.*;

    //主類
    public class Chess
    {
    ?public static void main(String args[])
    ?{
    ??new ChessMainFrame("中國象棋_Java版");
    ?}
    }

    //主框架類
    class ChessMainFrame extends JFrame implements ActionListener,MouseListener,Runnable
    {
    ?//玩家
    ?JLabel play[] = new JLabel[32];
    ?
    ?//棋盤
    ?JLabel image;?
    ?
    ?//窗格
    ?Container con;
    ?
    ?//工具欄
    ?JToolBar jmain;?
    ?//重新開始
    ?JButton anew;
    ?//悔棋
    ?JButton repent;
    ?//打開
    ?JButton showOpen;
    ?//保存
    ?JButton showSave;
    ?//退出
    ?JButton exit;
    ?
    ?//當前信息
    ?JLabel text;
    ?
    ?//保存當前操作
    ?Vector FileVar;
    ?Vector Var;
    ?
    ?//規則類對象(使于調用方法)
    ?ChessRule rule;
    ?
    ?/*單擊棋子**********************************/
    ?/*chessManClick = true 閃爍棋子 并給線程響應*/
    ?/*chessManClick = false 吃棋子 停止閃爍? 并給線程響應*/
    ?boolean chessManClick;
    ?
    ?/*控制玩家走棋****************************/
    ?/*chessPlayClick=1 黑棋走棋*/
    ?/*chessPlayClick=2 紅棋走棋 默認紅棋*/
    ?/*chessPlayClick=3 雙方都不能走棋*/?
    ?int chessPlayClick=2;
    ?
    ?//控制棋子閃爍的線程
    ?Thread tmain;
    ?//把第一次的單擊棋子給線程響應
    ?static int Man,i;?
    ?
    ?ChessMainFrame(){}
    ?
    ?ChessMainFrame(String Title)
    ?{
    ??//獲行客格引用
    ??con = this.getContentPane();
    ??con.setLayout(null);
    ??//實例化規則類
    ??rule = new ChessRule();
    ??FileVar? = new Vector();
    ??Var = new Vector();??
    ??
    ??//創建工具欄
    ??jmain = new JToolBar();
    ??text = new JLabel("? 熱烈歡迎");
    ??text.setToolTipText("提示信息");
    ??anew = new JButton(" 新 游 戲 "?);
    ??anew.setToolTipText("重新開始新的一局");
    ??exit = new JButton(" 退? 出 ");
    ??exit.setToolTipText("退出本程序");
    ??repent = new JButton(" 悔? 棋 ");
    ??repent.setToolTipText("返回到上次走棋的位置");????
    ??showOpen = new JButton("打開");
    ??showOpen.setToolTipText("打開以前棋局");??
    ??showSave = new JButton("保存");
    ??showSave.setToolTipText("保存當前棋局");
    ??
    ??//把組件添加到工具欄
    ??jmain.setLayout(new GridLayout(0,6));
    ??jmain.add(anew);
    ??jmain.add(repent);??
    ??jmain.add(showOpen);
    ??jmain.add(showSave);
    ??jmain.add(exit);
    ??jmain.add(text);
    ??jmain.setBounds(0,500,450,30);
    ??con.add(jmain);
    ??
    ??//添加棋子標簽
    ??drawChessMan();
    ???
    ??/*注冊監聽者*/
    ??
    ??//注冊按扭監聽
    ??anew.addActionListener(this);
    ??repent.addActionListener(this);
    ??exit.addActionListener(this);??
    ??showOpen.addActionListener(this);
    ??showSave.addActionListener(this);
    ????
    ??//注冊棋子移動監聽
    ??for (int i=0;i<32;i++)
    ??{
    ???con.add(play[i]);
    ???play[i].addMouseListener(this);???
    ??}
    ??
    ??//添加棋盤標簽
    ??con.add(image = new JLabel(new ImageIcon("CChess.GIF")));
    ??image.setBounds(0,0,445,498);
    ??image.addMouseListener(this);
    ??
    ??//注冊窗體關閉監聽
    ??this.addWindowListener(new WindowAdapter()
    ??{
    ???public void windowClosing(WindowEvent we)
    ???{
    ????System.exit(0);
    ???}
    ??});
    ??
    ??//窗體居中
    ??Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    ??Dimension frameSize = this.getSize();
    ??
    ??if (frameSize.height > screenSize.height)
    ??{
    ???frameSize.height = screenSize.height;
    ??}
    ??if (frameSize.width > screenSize.width)
    ??{
    ???frameSize.width = screenSize.width;
    ??}
    ??
    ??this.setLocation((screenSize.width - frameSize.width) / 2 - 200 ,(screenSize.height - frameSize.height ) / 2 - 290);
    ?
    ??this.setIconImage(new ImageIcon("相1.gif").getImage());
    ??this.setResizable(false);
    ??this.setTitle(Title);
    ??this.setSize(450,555);
    ??this.show();
    ?}
    ?
    ?/*添加棋子方法************/
    ?public void drawChessMan()
    ?{
    ??//流程控制
    ??int i,k;
    ??//圖標
    ??Icon in;
    ????
    ??//黑色棋子
    ??
    ??//車
    ??in = new ImageIcon("車1.GIF");
    ??for (i=0,k=10;i<2;i++,k+=385)
    ??{??
    ???play[i] = new JLabel(in);
    ???play[i].setBounds(k,10,40,40);?
    ???play[i].setName("車1");???
    ??}?
    ??
    ??//馬
    ??in = new ImageIcon("馬1.GIF");
    ??for (i=4,k=60;i<6;i++,k+=285)
    ??{???
    ???play[i] = new JLabel(in);???
    ???play[i].setBounds(k,10,40,40);???
    ???play[i].setName("馬1");
    ??}
    ??
    ??//相
    ??in = new ImageIcon("相1.GIF");
    ??for (i=8,k=105;i<10;i++,k+=195)
    ??{???
    ???play[i] = new JLabel(in);
    ???play[i].setBounds(k,10,40,40);???
    ???play[i].setName("相1");
    ??}
    ??
    ??//士
    ??in = new ImageIcon("士1.GIF");???
    ??for (i=12,k=155;i<14;i++,k+=95)
    ??{???
    ???play[i] = new JLabel(in);
    ???play[i].setBounds(k,10,40,40);???
    ???play[i].setName("士1");
    ??}
    ??
    ??//卒
    ??in = new ImageIcon("卒1.GIF");???
    ??for (i=16,k=10;i<21;i++,k+=96.5)
    ??{??
    ???play[i] = new JLabel(in);
    ???play[i].setBounds(k,160,40,40);???
    ???play[i].setName("卒1" + i);
    ??}
    ??
    ??//炮
    ??in = new ImageIcon("炮1.GIF");???
    ??for (i=26,k=60;i<28;i++,k+=289)
    ??{???
    ???play[i] = new JLabel(in);
    ???play[i].setBounds(k,110,40,40);????
    ???play[i].setName("炮1" + i);
    ??}
    ??
    ??//將
    ??in = new ImageIcon("將1.GIF");???
    ??play[30] = new JLabel(in);
    ??play[30].setBounds(205,10,40,40);???
    ??play[30].setName("將1");

    ??
    ??//紅色棋子
    ??
    ??//車
    ??in = new ImageIcon("車2.GIF");
    ??for (i=2,k=10;i<4;i++,k+=385)
    ??{??????
    ???play[i] = new JLabel(in);
    ???play[i].setBounds(k,450,40,40);??
    ???play[i].setName("車2");
    ??}
    ??
    ??//馬
    ??in = new ImageIcon("馬2.GIF");
    ??for (i=6,k=60;i<8;i++,k+=285)
    ??{???
    ???play[i] = new JLabel(in);???
    ???play[i].setBounds(k,450,40,40);???
    ???play[i].setName("馬2");
    ??}
    ??
    ??//相
    ??in = new ImageIcon("相2.GIF");???
    ??for (i=10,k=105;i<12;i++,k+=195)
    ??{???
    ???play[i] = new JLabel(in);
    ???play[i].setBounds(k,450,40,40);???
    ???play[i].setName("相2");
    ??}
    ??
    ??//士
    ??in = new ImageIcon("士2.GIF");???
    ??for (i=14,k=155;i<16;i++,k+=95)
    ??{???
    ???play[i] = new JLabel(in);
    ???play[i].setBounds(k,450,40,40);???
    ???play[i].setName("士2");
    ??}
    ??
    ??//兵
    ??in = new ImageIcon("兵2.GIF");???
    ??for (i=21,k=10;i<26;i++,k+=96.5)
    ??{???
    ???play[i] = new JLabel(in);
    ???play[i].setBounds(k,300,40,40);???
    ???play[i].setName("兵2" + i);
    ??}
    ??
    ??//炮
    ??in = new ImageIcon("炮2.GIF");???
    ??for (i=28,k=60;i<30;i++,k+=289)
    ??{???
    ???play[i] = new JLabel(in);
    ???play[i].setBounds(k,350,40,40);?
    ???play[i].setName("炮2" + i);
    ??}
    ??
    ??//帥
    ??in = new ImageIcon("帥2.GIF");???
    ??play[31] = new JLabel(in);
    ??play[31].setBounds(205,450,40,40);??
    ??play[31].setName("帥2");
    ?}
    ?
    ?/*線程方法控制棋子閃爍*/
    ?public void run()
    ?{
    ??while (true)
    ??{
    ???//單擊棋子第一下開始閃爍
    ???if (chessManClick)
    ???{????
    ????play[Man].setVisible(false);?????

    ????//時間控制
    ????try
    ????{
    ?????tmain.sleep(500);
    ????}
    ????catch(Exception e){}
    ????
    ????play[Man].setVisible(true);????????
    ???}
    ???
    ???//閃爍當前提示信息 以免用戶看不見
    ???else
    ???{
    ????text.setVisible(false);
    ????
    ????//時間控制
    ????try
    ????{
    ?????tmain.sleep(500);
    ????}
    ????catch(Exception e){}
    ????
    ????text.setVisible(true);
    ???}
    ???
    ???try
    ???{
    ????tmain.sleep(500);
    ???}?
    ???catch (Exception e){}???
    ??}
    ?}
    ?
    ?/*單擊棋子方法************************/
    ?public void mouseClicked(MouseEvent me)
    ?{
    ??System.out.println("Mouse");
    ??
    ??//當前坐標
    ??int Ex=0,Ey=0;??
    ??
    ??//啟動線程
    ??if (tmain == null)
    ??{
    ???tmain = new Thread(this);
    ???tmain.start();
    ??}??
    ??
    ??//單擊棋盤(移動棋子)
    ??if (me.getSource().equals(image))
    ??{
    ???//該紅棋走棋的時候
    ???if (chessPlayClick == 2 && play[Man].getName().charAt(1) == '2')
    ???{?
    ????Ex = play[Man].getX();
    ????Ey = play[Man].getY();
    ????
    ????//移動卒、兵
    ????if (Man > 15 && Man < 26)
    ????{????
    ?????rule.armsRule(Man,play[Man],me);
    ????}???
    ????
    ????//移動炮
    ????else if (Man > 25 && Man < 30)
    ????{???
    ?????rule.cannonRule(play[Man],play,me);
    ????}
    ????
    ????//移動車
    ????else if (Man >=0 && Man < 4)
    ????{
    ?????rule.cannonRule(play[Man],play,me);
    ????}
    ????
    ????//移動馬
    ????else if (Man > 3 && Man < 8)
    ????{
    ?????rule.horseRule(play[Man],play,me);
    ????}
    ????
    ????//移動相、象
    ????else if (Man > 7 && Man < 12)
    ????{
    ?????rule.elephantRule(Man,play[Man],play,me);
    ????}
    ????
    ????//移動仕、士
    ????else if (Man > 11 && Man < 16)
    ????{
    ?????rule.chapRule(Man,play[Man],play,me);
    ????}
    ????
    ????//移動將、帥
    ????else if (Man == 30 || Man == 31)
    ????{????
    ?????rule.willRule(Man,play[Man],play,me);
    ????}
    ????
    ????//是否走棋錯誤(是否在原地沒有動)
    ????if (Ex == play[Man].getX() && Ey == play[Man].getY())
    ????{
    ?????text.setText("? 紅棋走棋");
    ?????chessPlayClick=2;
    ????}
    ????
    ????else
    ????{
    ?????text.setText("? 黑棋走棋");
    ?????chessPlayClick=1;
    ????}
    ????
    ???}//if
    ???
    ???//該黑棋走棋的時候
    ???else if (chessPlayClick == 1 && play[Man].getName().charAt(1) == '1')
    ???{??
    ????Ex = play[Man].getX();
    ????Ey = play[Man].getY();
    ??????
    ????//移動卒、兵
    ????if (Man > 15 && Man < 26)
    ????{????
    ?????rule.armsRule(Man,play[Man],me);
    ????}???
    ????
    ????//移動炮
    ????else if (Man > 25 && Man < 30)
    ????{???
    ?????rule.cannonRule(play[Man],play,me);
    ????}
    ????
    ????//移動車
    ????else if (Man >=0 && Man < 4)
    ????{
    ?????rule.cannonRule(play[Man],play,me);
    ????}
    ????
    ????//移動馬
    ????else if (Man > 3 && Man < 8)
    ????{
    ?????rule.horseRule(play[Man],play,me);
    ????}
    ????
    ????//移動相、象
    ????else if (Man > 7 && Man < 12)
    ????{
    ?????rule.elephantRule(Man,play[Man],play,me);
    ????}
    ????
    ????//移動仕、士
    ????else if (Man > 11 && Man < 16)
    ????{
    ?????rule.chapRule(Man,play[Man],play,me);
    ????}
    ????
    ????//移動將、帥
    ????else if (Man == 30 || Man == 31)
    ????{????
    ?????rule.willRule(Man,play[Man],play,me);
    ????}
    ????
    ????//是否走棋錯誤(是否在原地沒有動)
    ????if (Ex == play[Man].getX() && Ey == play[Man].getY())
    ????{
    ?????text.setText("? 黑棋走棋");
    ?????chessPlayClick=1;
    ????}
    ????
    ????else
    ????{
    ????
    ?????text.setText("? 紅棋走棋");
    ?????chessPlayClick=2;?
    ????}

    ???????
    ???}//else if??
    ???
    ???//當前沒有操作(停止閃爍)
    ???chessManClick=false;
    ???
    ??}//if
    ??
    ??//單擊棋子
    ??else
    ??{???
    ???//第一次單擊棋子(閃爍棋子)
    ???if (!chessManClick)
    ???{
    ????for (int i=0;i<32;i++)
    ????{
    ?????//被單擊的棋子
    ?????if (me.getSource().equals(play[i]))
    ?????{???
    ??????//告訴線程讓該棋子閃爍??
    ??????Man=i;
    ??????//開始閃爍
    ??????chessManClick=true;
    ??????break;
    ?????}
    ????}//for
    ???}//if
    ???
    ???//第二次單擊棋子(吃棋子)
    ???else if (chessManClick)
    ???{
    ????//當前沒有操作(停止閃爍)
    ????chessManClick=false;
    ????
    ????for (i=0;i<32;i++)
    ????{
    ?????//找到被吃的棋子
    ?????if (me.getSource().equals(play[i]))
    ?????{
    ??????//該紅棋吃棋的時候
    ??????if (chessPlayClick == 2 && play[Man].getName().charAt(1) == '2')
    ??????{
    ???????Ex = play[Man].getX();
    ???????Ey = play[Man].getY();
    ???????
    ???????//卒、兵吃規則
    ???????if (Man > 15 && Man < 26)
    ???????{
    ????????rule.armsRule(play[Man],play[i]);????????????????
    ???????}
    ???????
    ???????//炮吃規則
    ???????else if (Man > 25 && Man < 30)
    ???????{???
    ????????rule.cannonRule(0,play[Man],play[i],play,me);????????
    ???????}
    ???????
    ???????//車吃規則
    ???????else if (Man >=0 && Man < 4)
    ???????{
    ????????rule.cannonRule(1,play[Man],play[i],play,me);
    ???????}
    ???????
    ???????//馬吃規則
    ???????else if (Man > 3 && Man < 8)
    ???????{
    ????????rule.horseRule(play[Man],play[i],play,me);?
    ???????}
    ???????
    ???????//相、象吃規則
    ???????else if (Man > 7 && Man < 12)
    ???????{
    ????????rule.elephantRule(play[Man],play[i],play);
    ???????}
    ???????
    ???????//士、仕吃棋規則
    ???????else if (Man > 11 && Man < 16)
    ???????{
    ????????rule.chapRule(Man,play[Man],play[i],play);
    ???????}
    ???????
    ???????//將、帥吃棋規則
    ???????else if (Man == 30 || Man == 31)
    ???????{?????????
    ????????rule.willRule(Man,play[Man],play[i],play);
    ????????play[Man].setVisible(true);?
    ???????}
    ???????
    ???????//是否走棋錯誤(是否在原地沒有動)
    ???????if (Ex == play[Man].getX() && Ey == play[Man].getY())
    ???????{
    ????????text.setText("? 紅棋走棋");
    ????????chessPlayClick=2;
    ????????break;
    ???????}
    ??????????????
    ???????else
    ???????{
    ????????text.setText("? 黑棋走棋");
    ????????chessPlayClick=1;
    ????????break;
    ???????}?
    ???????
    ??????}//if?????
    ??????
    ??????//該黑棋吃棋的時候
    ??????else if (chessPlayClick == 1 && play[Man].getName().charAt(1) == '1')
    ??????{?
    ???????Ex = play[Man].getX();
    ???????Ey = play[Man].getY();
    ?????????????
    ???????//卒、兵吃規則
    ???????if (Man > 15 && Man < 26)
    ???????{
    ????????rule.armsRule(play[Man],play[i]);
    ???????}
    ???????
    ???????//炮吃規則
    ???????else if (Man > 25 && Man < 30)
    ???????{???
    ????????rule.cannonRule(0,play[Man],play[i],play,me);???????
    ???????}
    ???????
    ???????//車吃規則
    ???????else if (Man >=0 && Man < 4)
    ???????{
    ????????rule.cannonRule(1,play[Man],play[i],play,me);?
    ???????}
    ???????
    ???????//馬吃規則
    ???????else if (Man > 3 && Man < 8)
    ???????{
    ????????rule.horseRule(play[Man],play[i],play,me);
    ???????}
    ???????
    ???????//相、象吃規則
    ???????else if (Man > 7 && Man < 12)
    ???????{
    ????????rule.elephantRule(play[Man],play[i],play);
    ???????}
    ???????
    ???????//士、仕吃棋規則
    ???????else if (Man > 11 && Man < 16)
    ???????{
    ????????rule.chapRule(Man,play[Man],play[i],play);
    ???????}
    ???????
    ???????//將、帥吃棋規則
    ???????else if (Man == 30 || Man == 31)
    ???????{?????????
    ????????rule.willRule(Man,play[Man],play[i],play);
    ????????play[Man].setVisible(true);???
    ???????}
    ???????
    ???????//是否走棋錯誤(是否在原地沒有動)???????
    ???????if (Ex == play[Man].getX() && Ey == play[Man].getY())
    ???????{
    ????????text.setText("? 黑棋走棋");
    ????????chessPlayClick=1;
    ????????break;
    ???????}
    ????
    ???????else
    ???????{????
    ????????text.setText("? 紅棋走棋");
    ????????chessPlayClick=2;?
    ????????break;
    ???????}
    ??????????????
    ??????}//else if
    ??????
    ?????}//if
    ?????
    ????}//for
    ????
    ????
    ????//是否勝利
    ????if (!play[31].isVisible())
    ????{??
    ?????JOptionPane.showConfirmDialog(this,"黑棋勝利","玩家一勝利",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);?????
    ?????//雙方都不可以在走棋了
    ?????chessPlayClick=3;
    ?????text.setText("? 黑棋勝利");
    ?????
    ????}//if

    ????else if (!play[30].isVisible())
    ????{
    ?????JOptionPane.showConfirmDialog(this,"紅棋勝利","玩家二勝利",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
    ?????chessPlayClick=3;
    ?????text.setText("? 紅棋勝利");
    ????}//else if?
    ????
    ???}//else
    ???
    ??}//else
    ??
    ?}
    ?
    ?public void mousePressed(MouseEvent me){}
    ?public void mouseReleased(MouseEvent me){}
    ?public void mouseEntered(MouseEvent me){}
    ?public void mouseExited(MouseEvent me){}
    ?
    ?/*單擊按扭*********************************/
    ?public void actionPerformed(ActionEvent ae)
    ?{
    ??//重新開始
    ??if (ae.getSource().equals(anew))
    ??{
    ???int i,k;
    ???
    ???//重新排列每個棋子的位置
    ???//車
    ???for (i=0,k=10;i<2;i++,k+=385)
    ???{???
    ????play[i].setBounds(k,10,40,40);????
    ???}?
    ??
    ???//馬??
    ???for (i=4,k=60;i<6;i++,k+=285)
    ???{???
    ????play[i].setBounds(k,10,40,40);???
    ???}
    ??
    ???//相
    ??
    ???for (i=8,k=105;i<10;i++,k+=195)
    ???{
    ????play[i].setBounds(k,10,40,40);???
    ???}
    ??
    ???//士??
    ???for (i=12,k=155;i<14;i++,k+=95)
    ???{
    ????play[i].setBounds(k,10,40,40);
    ???}
    ??
    ???//卒??
    ???for (i=16,k=10;i<21;i++,k+=96.5)
    ???{
    ????play[i].setBounds(k,160,40,40);???
    ???}
    ??
    ???//炮??
    ???for (i=26,k=60;i<28;i++,k+=289)
    ???{????
    ????play[i].setBounds(k,110,40,40);????
    ???}
    ??
    ???//將
    ???play[30].setBounds(205,10,40,40);???
    ????
    ???//紅色棋子
    ??
    ???//車
    ???
    ???for (i=2,k=10;i<4;i++,k+=385)
    ???{????
    ????play[i].setBounds(k,450,40,40);
    ???}
    ??
    ???//馬??
    ???for (i=6,k=60;i<8;i++,k+=285)
    ???{???
    ????play[i].setBounds(k,450,40,40);
    ???}
    ??
    ???//相??
    ???for (i=10,k=105;i<12;i++,k+=195)
    ???{???
    ????play[i].setBounds(k,450,40,40);???
    ???}
    ??
    ???//士??
    ???for (i=14,k=155;i<16;i++,k+=95)
    ???{
    ????play[i].setBounds(k,450,40,40);????
    ???}??
    ??
    ???//兵??
    ???for (i=21,k=10;i<26;i++,k+=96.5)
    ???{???
    ????play[i].setBounds(k,300,40,40);?????
    ???}
    ??
    ???//炮??
    ???for (i=28,k=60;i<30;i++,k+=289)
    ???{???
    ????play[i].setBounds(k,350,40,40);
    ???}
    ??
    ???//帥??
    ???play[31].setBounds(205,450,40,40);?
    ???
    ???chessPlayClick = 2;
    ???text.setText("? 紅棋走棋");
    ???
    ???for (i=0;i<32;i++)
    ???{
    ????play[i].setVisible(true);
    ???}
    ???
    ???for (i=0;i<Var.size();i++)
    ???{
    ????Var.remove(i);
    ???}
    ??}?
    ??
    ??//悔棋
    ??else if (ae.getSource().equals(repent))
    ??{???
    ???try
    ???{
    ????//獲得setVisible屬性值
    ????String S = (String)Var.get(Var.size()-4);
    ????//獲得X坐標
    ????int x = Integer.parseInt((String)Var.get(Var.size()-3));
    ????//獲得Y坐標
    ????int y = Integer.parseInt((String)Var.get(Var.size()-2));
    ????//獲得索引
    ????int M = Integer.parseInt((String)Var.get(Var.size()-1));???
    ??
    ????//賦給棋子
    ????play[M].setVisible(true);???
    ????play[M].setBounds(x,y,40,40);
    ????
    ????if (play[M].getName().charAt(1) == '1')
    ????{
    ?????text.setText("? 黑棋走棋");
    ?????chessPlayClick = 1;
    ????}
    ????else
    ????{
    ?????text.setText("? 紅棋走棋");
    ?????chessPlayClick = 2;
    ????}
    ????
    ????//刪除用過的坐標
    ????Var.remove(Var.size()-4);
    ????Var.remove(Var.size()-3);
    ????Var.remove(Var.size()-2);
    ????Var.remove(Var.size()-1);
    ????
    ????//停止旗子閃爍
    ????chessManClick=false;
    ???}
    ???
    ???catch(Exception e){}
    ??}
    ??
    ??//打開棋局
    ??else if (ae.getSource().equals(showOpen))
    ??{
    ???try
    ???{
    ????//打開對話框
    ????JFileChooser jfcOpen = new JFileChooser("打開棋局");
    ????int v=jfcOpen.showOpenDialog(this);
    ????
    ????if (v != JFileChooser.CANCEL_OPTION)
    ????{
    ?????//刪除集合所有信息?????
    ?????Var.removeAllElements();
    ?????FileVar.removeAllElements();
    ?????
    ?????//打開文件獲得所有數據
    ?????FileInputStream fileIn = new FileInputStream(jfcOpen.getSelectedFile());
    ?????ObjectInputStream objIn = new ObjectInputStream(fileIn);
    ?????FileVar = (Vector)objIn.readObject();?????
    ?????fileIn.close();
    ?????objIn.close();
    ?????
    ?????//集合內容對應棋子坐標
    ?????int k=0;
    ?????for (int i=0;i<32;i++)
    ?????{??????
    ??????play[i].setBounds(((Integer)FileVar.get(k)).intValue(),((Integer)FileVar.get(k+1)).intValue(),40,40);??????
    ??????//被吃掉的棋子不顯示
    ??????if (!((Boolean)FileVar.elementAt(k+2)).booleanValue())
    ??????{
    ???????play[i].setVisible(false);
    ??????}
    ??????k+=3;
    ?????}
    ?????
    ?????//當前該哪方棋子走棋
    ?????if (((String)FileVar.lastElement()).toString().equals("? 紅棋走棋"))
    ?????{
    ??????text.setText(((String)FileVar.lastElement()).toString());
    ??????chessPlayClick = 2;
    ?????}
    ?????else if (((String)FileVar.lastElement()).toString().equals("? 黑棋走棋"))
    ?????{
    ??????text.setText(((String)FileVar.lastElement()).toString());
    ??????chessPlayClick = 1;
    ?????}
    ?????else if (((String)FileVar.lastElement()).toString().substring(5).equals("利"))
    ?????{
    ??????text.setText(((String)FileVar.lastElement()).toString());
    ??????chessPlayClick = 3;
    ?????}
    ?????
    ????}
    ???}
    ???
    ???catch(Exception e)
    ???{
    ????System.out.println("ERROR ShowOpen");
    ???}
    ??}
    ??
    ??//保存當前棋局
    ??else if (ae.getSource().equals(showSave))
    ??{
    ???try
    ???{
    ????//保存對話框?
    ????JFileChooser jfcSave = new JFileChooser("保存當前棋局");
    ????int v=jfcSave.showSaveDialog(this);
    ????
    ????if (v != JFileChooser.CANCEL_OPTION)
    ????{
    ?????FileVar.removeAllElements();
    ?????
    ?????//保存所有棋子的坐標和是否可見
    ?????for (int i=0;i<32;i++)
    ?????{
    ??????FileVar.addElement(new Integer(play[i].getX()));
    ??????FileVar.addElement(new Integer(play[i].getY()));
    ??????FileVar.addElement(new Boolean(play[i].isVisible()));
    ?????}
    ?????//保存當前該哪方吃棋????
    ?????FileVar.add(text.getText());
    ?????
    ?????//保存到文件
    ?????FileOutputStream fileOut = new FileOutputStream(jfcSave.getSelectedFile());
    ?????ObjectOutputStream objOut = new ObjectOutputStream(fileOut);
    ?????objOut.writeObject(FileVar);?????
    ?????objOut.close();
    ?????fileOut.close();
    ????}
    ???}
    ???
    ???catch(Exception e)
    ???{
    ????System.out.println("ERROR ShowSave");
    ???}
    ??}
    ??
    ??//退出
    ??else if (ae.getSource().equals(exit))
    ??{
    ???int j=JOptionPane.showConfirmDialog(this,"真的要退出嗎?","退出",JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);
    ???
    ???if (j == JOptionPane.YES_OPTION)
    ???{
    ????System.exit(0);
    ???}
    ??}
    ?}

    ?/*規則類*/
    ?class ChessRule
    ?{??
    ??/*卒移動規則******************************************/
    ??public void armsRule(int Man,JLabel play,MouseEvent me)
    ??{???
    ???//黑卒向下
    ???if (Man < 21)
    ???{
    ????//向下移動、得到終點的坐標模糊成合法的坐標
    ????if ((me.getY()-play.getY()) > 40 && (me.getY()-play.getY()) < 80 && (me.getX()-play.getX()) < 30 && (me.getX()-play.getX()) > 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(),play.getY()+45,40,40);
    ????}
    ????
    ????//向右移動、得到終點的坐標模糊成合法的坐標、必須過河????
    ????else if (play.getY() >= 250 && (me.getX() - play.getX()) >= 30 && (me.getX() - play.getX()) <= 90)
    ????{?????
    ?????play.setBounds(play.getX()+48,play.getY(),40,40);?
    ????}
    ????
    ????//向左移動、得到終點的坐標模糊成合法的坐標、必須過河
    ????else if (play.getY() >= 250 && (play.getX() - me.getX()) >= 20 && (play.getX() - me.getX()) <=90)
    ????{??
    ?????//模糊坐標???
    ?????play.setBounds(play.getX()-48,play.getY(),40,40);
    ????}
    ???}
    ???
    ???//紅卒向上
    ???else
    ???{
    ????//當前記錄添加到集合(用于悔棋)
    ????Var.add(String.valueOf(play.isVisible()));
    ????Var.add(String.valueOf(play.getX()));?????????
    ????Var.add(String.valueOf(play.getY()));
    ????Var.add(String.valueOf(Man));
    ????
    ????//向上移動、得到終點的坐標模糊成合法的坐標
    ????if ((me.getX()-play.getX()) > 0 && (me.getX()-play.getX()) < 30 && (play.getY()-me.getY()) >20 && play.getY()-me.getY() < 70)
    ????{?????
    ?????play.setBounds(play.getX(),play.getY()-48,40,40);
    ????}
    ????
    ????//向右移動、得到終點的坐標模糊成合法的坐標、必須過河
    ????else if (play.getY() <= 210 && (me.getX() - play.getX()) >= 30 && (me.getX() - play.getX()) <= 90)
    ????{?????
    ?????play.setBounds(play.getX()+50,play.getY(),40,40);
    ????}????
    ????
    ????//向左移動、得到終點的坐標模糊成合法的坐標、必須過河
    ????else if (play.getY() <= 210 && (play.getX() - me.getX()) >= 20 && (play.getX() - me.getX()) <=60)
    ????{????
    ?????play.setBounds(play.getX()-52,play.getY(),40,40);
    ????}
    ???}
    ??}//卒移動結束
    ??
    ??/*卒吃棋規則**********************************/
    ??public void armsRule(JLabel play1,JLabel play2)
    ??{???
    ???//向右走???
    ???if ((play2.getX() - play1.getX()) <= 60 && (play2.getX() - play1.getX()) >= 40 && (play1.getY() - play2.getY()) < 10 && (play1.getY() - play2.getY()) > -10 && play2.isVisible() && play1.getName().charAt(1)!=play2.getName().charAt(1))
    ???{
    ????//黑棋要過河才能右吃棋
    ????if (play1.getName().charAt(1) == '1' && play1.getY() >= 250 && play1.getName().charAt(1) != play2.getName().charAt(1))
    ????{

    ?????play2.setVisible(false);
    ?????//把對方的位置給自己
    ?????play1.setBounds(play2.getX(),play2.getY(),40,40);
    ????}
    ????
    ????//紅棋要過河才左能吃棋
    ????else if (play1.getName().charAt(1) == '2' && play1.getY() <= 210 && play1.getName().charAt(1) != play2.getName().charAt(1))
    ????{
    ?????play2.setVisible(false);
    ?????//把對方的位置給自己
    ?????play1.setBounds(play2.getX(),play2.getY(),40,40);????
    ????}
    ???}
    ???
    ???//向左走
    ???else if ((play1.getX() - play2.getX()) <= 60 && (play1.getX() - play2.getX()) >= 40 && (play1.getY() - play2.getY()) < 10 && (play1.getY() - play2.getY()) > -10 && play2.isVisible() && play1.getName().charAt(1)!=play2.getName().charAt(1))
    ???{
    ????//黑棋要過河才能左吃棋
    ????if (play1.getName().charAt(1) == '1' && play1.getY() >= 250 && play1.getName().charAt(1) != play2.getName().charAt(1))
    ????{
    ?????play2.setVisible(false);
    ?????//把對方的位置給自己
    ?????play1.setBounds(play2.getX(),play2.getY(),40,40);
    ????}
    ????
    ????//紅棋要過河才能右吃棋
    ????else if (play1.getName().charAt(1) == '2' && play1.getY() <= 210 && play1.getName().charAt(1) != play2.getName().charAt(1))
    ????{
    ?????play2.setVisible(false);
    ?????//把對方的位置給自己
    ?????play1.setBounds(play2.getX(),play2.getY(),40,40);????
    ????}
    ???}
    ???
    ???//向上走
    ???else if (play1.getX() - play2.getX() >= -10 && play1.getX() - play2.getX() <= 10 && play1.getY() - play2.getY() >= -70 && play1.getY() - play2.getY() <= 70)
    ???{
    ????//黑棋不能向上吃棋
    ????if (play1.getName().charAt(1) == '1' && play1.getY() < play2.getY() && play1.getName().charAt(1) != play2.getName().charAt(1))
    ????{
    ?????play2.setVisible(false);
    ?????//把對方的位置給自己
    ?????play1.setBounds(play2.getX(),play2.getY(),40,40);
    ????}
    ????
    ????//紅棋不能向下吃棋
    ????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(),40,40);????
    ????}???
    ???}
    ???
    ???//當前記錄添加到集合(用于悔棋)
    ???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() <= 10 && play.getX() - me.getX() >= -30)
    ???{
    ????//指定所有模糊Y坐標
    ????for (int i=30;i<=462;i+=48)
    ????{?????
    ?????//移動的Y坐標是否有指定坐標相近的
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????//所有的棋子
    ??????for (int j=0;j<32;j++)
    ??????{
    ???????//找出在同一條豎線的所有棋子、并不包括自己
    ???????if (playQ[j].getX() - play.getX() >= -10 && playQ[j].getX() - play.getX() <= 10 && playQ[j].getName()!=play.getName() && playQ[j].isVisible())
    ???????{?????
    ????????//從起點到終點(從左到右)
    ????????for (int k=play.getY()+50;k<i;k+=50)
    ????????{??
    ?????????//大于起點、小于終點的坐標就可以知道中間是否有棋子??????
    ?????????if (playQ[j].getY() < i && playQ[j].getY() > play.getY())
    ?????????{?
    ??????????//中間有一個棋子就不可以從這條豎線過去?????????
    ??????????Count++;
    ??????????break;
    ?????????}
    ????????}//for
    ????????
    ????????//從起點到終點(從右到左)
    ????????for (int k=i+50;k<play.getY();k+=50)
    ????????{
    ?????????//找起點和終點的棋子
    ?????????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-17,40,40);
    ???????break;
    ??????}
    ?????}//if
    ????}//for
    ???}//if
    ???
    ???
    ???//左、右移動
    ???else if (play.getY() - me.getY() >=-35 && play.getY() - me.getY() <= 10)
    ???{
    ????//指定所有模糊X坐標
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????//移動的X坐標是否有指定坐標相近的
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????//所有的棋子
    ??????for (int j=0;j<32;j++)
    ??????{
    ???????//找出在同一條橫線的所有棋子、并不包括自己
    ???????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<i;k+=50)
    ????????{??????
    ?????????//大于起點、小于終點的坐標就可以知道中間是否有棋子???
    ?????????if (playQ[j].getX() < i && playQ[j].getX() > play.getX())
    ?????????{??????
    ??????????//中間有一個棋子就不可以從這條橫線過去??????
    ??????????Count++;
    ??????????break;
    ?????????}
    ????????}//for
    ????????
    ????????//從起點到終點(從下到上)
    ????????for (int k=i+50;k<play.getX();k+=50)
    ????????{
    ?????????//找起點和終點的棋子
    ?????????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-20,play.getY(),40,40);
    ???????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() >= -10 && playQ[j].getX() - play.getX() <= 10 && playQ[j].getName()!=play.getName() && playQ[j].isVisible())
    ????{?????
    ?????//自己是起點被吃的是終點(從上到下)
    ?????for (int k=play.getY()+50;k<playTake.getY();k+=50)
    ?????{??
    ??????//大于起點、小于終點的坐標就可以知道中間是否有棋子??????
    ??????if (playQ[j].getY() < playTake.getY() && playQ[j].getY() > play.getY())
    ??????{?
    ????????//計算起點和終點的棋子個數
    ????????Count++;???
    ????????break;???????
    ??????}
    ?????}//for
    ????????
    ?????//自己是起點被吃的是終點(從下到上)
    ?????for (int k=playTake.getY();k<play.getY();k+=50)
    ?????{
    ??????//找起點和終點的棋子
    ??????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+=50)
    ?????{??
    ??????//大于起點、小于終點的坐標就可以知道中間是否有棋子??????
    ??????if (playQ[j].getX() < playTake.getX() && playQ[j].getX() > play.getX())
    ??????{??????
    ???????Count++;???
    ???????break;???????
    ??????}
    ?????}//for
    ????????
    ?????//自己是起點被吃的是終點(從右到左)
    ?????for (int k=playTake.getX();k<play.getX();k+=50)
    ?????{
    ??????//找起點和終點的棋子
    ??????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(),40,40);
    ???}
    ???
    ???//起點和終點之間沒有棋子是車的規則、并不能吃自己的棋子???
    ???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(),40,40);
    ???}
    ???
    ??}//炮、車吃棋方法結束
    ??
    ??/*馬移動規則***************************************************/
    ??public void horseRule(JLabel play,JLabel playQ[],MouseEvent me)
    ??{??
    ???//保存坐標和障礙
    ???int Ex=0,Ey=0,Move=0;???
    ???
    ???//上移、左邊
    ???if (play.getX() - me.getX() >= 10 && play.getX() - me.getX() <= 50 && play.getY() - me.getY() >= 60 && play.getY() - me.getY() <= 100)
    ???{????
    ????//合法的Y坐標
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????//移動的Y坐標是否有指定坐標相近的
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//合法的X坐標
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????//移動的X坐標是否有指定坐標相近的
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//正前方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() <= 10 && play.getX() - playQ[i].getX() >= -10 && play.getY() - playQ[i].getY() >= 40 && play.getY() - playQ[i].getY() <= 60)
    ?????{
    ??????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-20,Ey-17,40,40);?????
    ????}
    ????
    ???}//if
    ???
    ???//左移、上邊
    ???else if (play.getY() - me.getY() >= 10 && play.getY() - me.getY() <= 50 && play.getX() - me.getX() >= 60 && play.getX() - me.getX() <= 100)
    ???{????
    ????//Y
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ?????}
    ????}
    ????
    ????//X
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ?????}
    ????}
    ????
    ????//正左方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getY() - playQ[i].getY() <= 10 && play.getY() - playQ[i].getY() >= -10 && play.getX() - playQ[i].getX() >= 40 && play.getX() - playQ[i].getX() <= 60)
    ?????{
    ??????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-20,Ey-17,40,40);?????
    ????}
    ???}//else
    ???
    ???//下移、右邊
    ???else if (me.getY() - play.getY() >= 100 && me.getY() - play.getY() <= 130 && me.getX() - play.getX() <= 70 && me.getX() - play.getX() >= 30 )
    ???{?
    ????//Y??
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ?????}
    ????}
    ????
    ????//X
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ?????}
    ????}
    ????
    ????//正下方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() <= 10 && play.getX() - playQ[i].getX() >= -10 && playQ[i].getY() - play.getY() >= 40 && playQ[i].getY() - play.getY() <= 60)
    ?????{
    ??????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-20,Ey-17,40,40);?????
    ????}
    ???}//else
    ???
    ???//上移、右邊
    ???else if (play.getY() - me.getY() >= 60 && play.getY() - me.getY() <= 100 && me.getX() - play.getX() <= 80 && me.getX() - play.getX() >= 50 )
    ???{????
    ????//合法的Y坐標
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//合法的X坐標
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//正前方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() <= 10 && play.getX() - playQ[i].getX() >= -10 && play.getY() - playQ[i].getY() >= 40 && play.getY() - playQ[i].getY() <= 60)
    ?????{
    ??????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-20,Ey-17,40,40);?????
    ????}
    ???}//else
    ???
    ???//下移、左邊
    ???else if (me.getY() - play.getY() >= 100 && me.getY() - play.getY() <= 140 && play.getX() - me.getX() <= 50 && play.getX() - me.getX() >= 10 )
    ???{???
    ????//合法的Y坐標
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//合法的X坐標
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//正下方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{????
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() <= 10 && play.getX() - playQ[i].getX() >= -10 && play.getY() - playQ[i].getY() <= -40 && play.getY() - playQ[i].getY() >= -60)
    ?????{
    ??????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-20,Ey-17,40,40);?????
    ????}

    ???}//else
    ???
    ???//右移、上邊
    ???else if (play.getY() - me.getY() >= 10 && play.getY() - me.getY() <= 50 && me.getX() - play.getX() <= 140 && me.getX() - play.getX() >= 100 )
    ???{??
    ????//Y??
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ?????}
    ????}
    ????
    ????//X
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ?????}
    ????}
    ????
    ????//正右方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getY() - playQ[i].getY() <= 10 && play.getY() - playQ[i].getY() >= -10 && playQ[i].getX() - play.getX() >= 40 && playQ[i].getX() - play.getX() <= 60)
    ?????{
    ??????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-20,Ey-17,40,40);?????
    ????}
    ???}//else
    ???
    ???//右移、下邊
    ???else if (me.getY() - play.getY() >= 60 && me.getY() - play.getY() <= 90 && me.getX() - play.getX() <= 130 && me.getX() - play.getX() >= 100 )
    ???{??
    ????//Y??
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ?????}
    ????}
    ????
    ????//X
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ?????}
    ????}
    ????
    ????//正右方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getY() - playQ[i].getY() <= 10 && play.getY() - playQ[i].getY() >= -10 && playQ[i].getX() - play.getX() >= 40 && playQ[i].getX() - play.getX() <= 60)
    ?????{
    ??????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-20,Ey-17,40,40);?????
    ????}
    ???}//else
    ???
    ???//左移、下邊
    ???else if (me.getY() - play.getY() >= 50 && me.getY() - play.getY() <= 90 && play.getX() - me.getX() <= 100 && play.getX() - me.getX() >= 50 )
    ???{??
    ????//Y??
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ?????}
    ????}
    ????
    ????//X
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ?????}
    ????}
    ????
    ????//正左方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getY() - playQ[i].getY() <= 10 && play.getY() - playQ[i].getY() >= -10 && play.getX() - playQ[i].getX() >= 40 && play.getX() - playQ[i].getX() <= 60)
    ?????{
    ??????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-20,Ey-17,40,40);?????
    ????}
    ????
    ???}//else
    ???
    ??}//馬移動結束
    ??
    ??/*馬吃棋規則********************************************************************/
    ??public void horseRule(JLabel play,JLabel playTake ,JLabel playQ[],MouseEvent me)
    ??{???
    ???//障礙
    ???int Move=0;
    ???boolean Chess=false;
    ???
    ???//上移、左吃
    ???if (play.getName().charAt(1)!=playTake.getName().charAt(1) && play.getX() - playTake.getX() >= 10 && play.getX() - playTake.getX() <= 55 && play.getY() - playTake.getY() >= 60 && play.getY() - playTake.getY() <= 105)
    ???{??
    ????//正前方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() <= 10 && play.getX() - playQ[i].getX() >= -10 && play.getY() - playQ[i].getY() >= 40 && play.getY() - playQ[i].getY() <= 60)
    ?????{
    ??????Move = 1;
    ??????break;
    ?????}
    ????}//for
    ????
    ????Chess = true;
    ????
    ???}//if
    ???
    ???//上移、右吃
    ???else if (play.getY() - playTake.getY() >= 80 && play.getY() - playTake.getY() <= 110 && playTake.getX() - play.getX() <= 60 && playTake.getX() - play.getX() >= 40)
    ???{????
    ????//正前方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() <= 10 && play.getX() - playQ[i].getX() >= -10 && play.getY() - playQ[i].getY() >= 40 && play.getY() - playQ[i].getY() <= 60)
    ?????{
    ??????Move = 1;
    ??????break;
    ?????}
    ????}//for??
    ????
    ????Chess = true;
    ????
    ???}//else
    ???
    ???//左移、上吃
    ???else if (play.getY() - playTake.getY() >= 40 && play.getY() - playTake.getY() <= 60 && play.getX() - playTake.getX() >= 90 && play.getX() - playTake.getX() <= 110)
    ???{????????
    ????//正左方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getY() - playQ[i].getY() <= 10 && play.getY() - playQ[i].getY() >= -10 && play.getX() - playQ[i].getX() >= 40 && play.getX() - playQ[i].getX() <= 60)
    ?????{
    ??????Move = 1;
    ??????break;
    ?????}
    ????}//for
    ????
    ????Chess = true;
    ????
    ???}//else
    ???
    ???//左移、下吃
    ???else if (playTake.getY() - play.getY() >= 30 && playTake.getY() - play.getY() <= 60 && play.getX() - playTake.getX() <= 120 && play.getX() - playTake.getX() >= 80 )
    ???{
    ????//正左方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getY() - playQ[i].getY() <= 10 && play.getY() - playQ[i].getY() >= -10 && play.getX() - playQ[i].getX() >= 40 && play.getX() - playQ[i].getX() <= 60)
    ?????{
    ??????Move = 1;
    ??????break;
    ?????}
    ????}//for??
    ????
    ????Chess = true;
    ????
    ???}//else
    ???
    ???//右移、上吃
    ???else if (play.getY() - playTake.getY() >= 30 && play.getY() - playTake.getY() <= 60 && playTake.getX() - play.getX() <= 120 && playTake.getX() - play.getX() >= 80 )
    ???{????
    ????//正右方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getY() - playQ[i].getY() <= 10 && play.getY() - playQ[i].getY() >= -10 && playQ[i].getX() - play.getX() >= 40 && playQ[i].getX() - play.getX() <= 60)
    ?????{
    ??????Move = 1;
    ??????break;
    ?????}
    ????}//for
    ????
    ????Chess = true;
    ????
    ???}//else
    ???
    ???//右移、下吃
    ???else if (playTake.getY() - play.getY() >= 30 && playTake.getY() - play.getY() <= 60 && playTake.getX() - play.getX() <= 120 && playTake.getX() - play.getX() >= 80 )
    ???{???
    ????//正右方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getY() - playQ[i].getY() <= 10 && play.getY() - playQ[i].getY() >= -10 && playQ[i].getX() - play.getX() >= 40 && playQ[i].getX() - play.getX() <= 60)
    ?????{
    ??????Move = 1;
    ??????break;
    ?????}
    ????}//for
    ????
    ????Chess = true;
    ????
    ???}//else
    ???
    ???//下移、左吃
    ???else if (playTake.getY() - play.getY() >= 80 && playTake.getY() - play.getY() <= 120 && play.getX() - playTake.getX() <= 60 && play.getX() - playTake.getX() >= 30)
    ???{????
    ????//正下方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{????
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() <= 10 && play.getX() - playQ[i].getX() >= -10 && play.getY() - playQ[i].getY() <= -40 && play.getY() - playQ[i].getY() >= -60)
    ?????{
    ??????Move = 1;
    ??????break;????
    ?????}
    ????}//for
    ????
    ????Chess = true;
    ????
    ???}//else
    ???
    ???//下移、右吃
    ???else if (playTake.getY() - play.getY() >= 80 && playTake.getY() - play.getY() <= 120 && playTake.getX() - play.getX() <= 60 && playTake.getX() - play.getX() >= 40)
    ???{????
    ????//正下方是否有別的棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() <= 10 && play.getX() - playQ[i].getX() >= -10 && playQ[i].getY() - play.getY() >= 40 && playQ[i].getY() - play.getY() <= 60)
    ?????{
    ??????Move = 1;
    ??????break;
    ?????}
    ????}//for
    ????
    ????Chess = true;
    ????
    ???}//else?
    ???
    ???//沒有障礙、并可以吃棋、不能吃自己顏色
    ???if (Chess && Move == 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(),40,40);
    ???}
    ??}
    ??
    ??/*相移動規則******************************************************/
    ??public void elephantRule(int Man,JLabel play,JLabel playQ[],MouseEvent me)
    ??{???
    ???//坐標和障礙
    ???int Ex=0,Ey=0,Move=0;
    ???
    ???//上左
    ???if (play.getX() - me.getX() <= 90 && play.getX() - me.getX() >= 60 && play.getY() - me.getY() <= 100 && play.getY() - me.getY() >= 70)
    ???{????
    ????//合法的Y坐標
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//合法的X坐標
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//左上方是否有棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() >= 10 && play.getX() - playQ[i].getX() <= 50 && play.getY() - playQ[i].getY() >= 40 && play.getY() - playQ[i].getY() <= 60)
    ?????{
    ??????Move++;
    ??????break;
    ?????}
    ????}
    ????
    ????//紅旗不能過楚河
    ????if (Move == 0 && Ey > 230 && Man > 9)
    ????{???????
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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-20,Ey-15,40,40);?????
    ????}
    ????
    ????//黑旗不能過漢界
    ????else if (Move == 0 && Ey < 270 && Man < 10)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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-20,Ey-15,40,40);?
    ????}
    ???}//if
    ???
    ???//上右
    ???else if (play.getY() - me.getY() <= 100 && play.getY() - me.getY() >= 70 &&? me.getX() - play.getX() >= 100 && me.getX() - play.getX() <= 140)
    ???{?
    ????//合法的Y坐標
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//合法的X坐標
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//右上方是否有棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() &&? playQ[i].getX() - play.getX() >= 40 && playQ[i].getX() - play.getX() <= 90 && play.getY() - playQ[i].getY() >= 40 && play.getY() - playQ[i].getY() <= 60)
    ?????{
    ??????Move++;
    ??????break;
    ?????}
    ????}
    ????
    ????//相、象規則
    ????if (Move == 0 && Ey > 230 && Man > 9)
    ????{?????
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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-20,Ey-15,40,40);?????
    ????}
    ????
    ????else if (Move == 0 && Ey < 270 && Man < 10)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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-20,Ey-15,40,40);?????
    ????}??
    ????
    ???}// else if
    ???
    ???//下左
    ???else if (play.getX() - me.getX() <= 100 && play.getX() - me.getX() >= 60 && me.getY() - play.getY() <= 130 && me.getY() - play.getY() >= 100)
    ???{
    ????//合法的Y坐標
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//合法的X坐標
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ??????break;
    ?????}
    ????}
    ????
    ????//下左方是否有棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() >= 10 && play.getX() - playQ[i].getX() <= 60 && play.getY() - playQ[i].getY() <= -40 && play.getY() - playQ[i].getY() >= -60)
    ?????{
    ??????Move++;
    ??????break;
    ?????}
    ????}???
    ????
    ????//相、象規則
    ????
    ????if (Move == 0 && Ey > 230 && Man > 9)
    ????{?
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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-20,Ey-15,40,40);?????
    ????}
    ????
    ????else if (Move == 0 && Ey < 270 && Man < 10)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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-20,Ey-15,40,40);?????
    ????}
    ???}//else if
    ???
    ???//下右
    ???else if (me.getX() - play.getX() >= 100 &&? me.getX() - play.getX() <= 130 && me.getY() - play.getY() >= 100 && me.getY() - play.getY() <= 130)
    ???{????
    ????//Y??
    ????for (int i=30;i<=462;i+=48)
    ????{
    ?????if (i - me.getY() >= -10 && i - me.getY() <= 30)
    ?????{
    ??????Ey = i;
    ?????}
    ????}
    ????
    ????//X
    ????for (int i=30;i<=420;i+=48)
    ????{?????
    ?????if (i - me.getX() >= -35 && i-me.getX() <= 10)
    ?????{
    ??????Ex = i;
    ?????}
    ????}
    ????
    ????//下右方是否有棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && playQ[i].getX() - play.getX() >= 50 && playQ[i].getX() - play.getX()? <= 80 && playQ[i].getY() - play.getY() >= 40 && playQ[i].getY() - play.getY() <= 60)
    ?????{
    ??????Move = 1;
    ??????break;
    ?????}
    ????}
    ????
    ????//相、象規則
    ????if (Move == 0 && Ey > 230 && Man > 9)
    ????{?????
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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-20,Ey-15,40,40);?????
    ????}
    ????
    ????else if (Move == 0 && Ey < 270 && Man < 10)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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-20,Ey-15,40,40);????
    ????}
    ????
    ???}//else
    ???
    ??}//相移動規則吉束
    ??
    ??/*相、象吃棋規則***************************************************/
    ??public void elephantRule(JLabel play,JLabel playTake,JLabel playQ[])
    ??{
    ???//障礙
    ???int Move=0;
    ???boolean Chess=false;
    ???
    ???//吃左上方的棋子
    ???if (play.getX() - playTake.getX() >= 80 && play.getX() - playTake.getX() <= 100 && play.getY() - playTake.getY() >= 80 && play.getY() - playTake.getY() <= 110)
    ???{
    ????//左上方是否有棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() >= 10 && play.getX() - playQ[i].getX() <= 50 && play.getY() - playQ[i].getY() >= 40 && play.getY() - playQ[i].getY() <= 60)
    ?????{
    ??????Move++;
    ??????break;
    ?????}
    ????}//for???

    ????Chess=true;
    ????
    ???}//if
    ???
    ???//吃右上方的棋子
    ???else if (playTake.getX() - play.getX() >= 110 && playTake.getX() - play.getX() <= 80 && play.getY() - playTake.getY() >= 80 && play.getY() - playTake.getY() <= 110 )
    ???{
    ????//右上方是否有棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() &&? playQ[i].getX() - play.getX() >= 40 && playQ[i].getX() - play.getX() <= 90 && play.getY() - playQ[i].getY() >= 40 && play.getY() - playQ[i].getY() <= 60)
    ?????{
    ??????Move++;
    ??????break;
    ?????}
    ????}//for?
    ????
    ????Chess=true;????
    ???}//else
    ???
    ???//吃下左方的棋子
    ???else if (play.getX() - playTake.getX() >= 80 && play.getX() - playTake.getX() <= 110 && playTake.getY() - play.getY() >= 80 && playTake.getY() - play.getY() <= 110)
    ???{
    ????//下左方是否有棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && play.getX() - playQ[i].getX() >= 10 && play.getX() - playQ[i].getX() <= 60 && play.getY() - playQ[i].getY() <= -40 && play.getY() - playQ[i].getY() >= -60)
    ?????{
    ??????Move++;
    ??????break;
    ?????}
    ????}//for
    ????
    ????Chess=true;????
    ???}//else
    ???
    ???//吃下右放的棋子
    ???else if (playTake.getX() - play.getX() >= 80 && playTake.getX() - play.getX() <= 110 && playTake.getY() - play.getY() >= 80 && playTake.getY() - play.getY() <= 110)
    ???{
    ????//下右方是否有棋子
    ????for (int i=0;i<32;i++)
    ????{
    ?????if (playQ[i].isVisible() && playQ[i].getX() - play.getX() >= 50 && playQ[i].getX() - play.getX()? <= 80 && playQ[i].getY() - play.getY() >= 40 && playQ[i].getY() - play.getY() <= 60)
    ?????{
    ??????Move = 1;
    ??????break;
    ?????}
    ????}//for??

    ????Chess=true;
    ????
    ???}//else????
    ???
    ???//沒有障礙、并不能吃自己的棋子
    ???if (Chess && Move == 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(),40,40);
    ???}
    ???
    ??}//相、象吃棋規則結束
    ??
    ??/*士、仕移動方法*******************************************************/
    ??public void chapRule(int Man,JLabel play,JLabel playQ[],MouseEvent me)
    ??{???
    ???//上、右
    ???if (me.getX() - play.getX() >= 50 && me.getX() - play.getX() <= 80 && play.getY() - me.getY() >= 15 && play.getY() - me.getY() <= 50)
    ???{
    ????//士不能超過自己的界限
    ????if (Man < 14 && me.getX() > 150 && me.getX() < 300 && me.getY() < 150)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()+50,play.getY()-50,40,40);????
    ????}?
    ????
    ????//仕不能超過自己的界限
    ????else if (Man > 13 && me.getY() > 340 && me.getX() > 150 && me.getX() < 300)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()+50,play.getY()-50,40,40);
    ????}?
    ???}// else if
    ???
    ???//上、左
    ???else if (play.getX() - me.getX() <= 50 && play.getX() - me.getX() >= 13 && play.getY() - me.getY() >= 15 && play.getY() - me.getY() <= 50)
    ???{
    ????//士、仕規則
    ????if (Man < 14 && me.getX() > 150 && me.getX() < 300 && me.getY() < 150)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()-50,play.getY()-50,40,40);
    ????}?
    ????
    ????else if (Man > 13 && me.getY() > 340 && me.getX() > 150 && me.getX() < 300)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()-50,play.getY()-50,40,40);
    ????}????
    ???}// else if
    ???
    ???//下、左
    ???else if (play.getX() - me.getX() <= 50 && play.getX() - me.getX() >= 15 && me.getY() - play.getY() >= 50 && me.getY() - play.getY() <= 80)
    ???{
    ????//士、仕規則
    ????if (Man < 14 && me.getX() > 150 && me.getX() < 300 && me.getY() < 150)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()-50,play.getY()+50,40,40);
    ????}?
    ????
    ????else if (Man > 13 && me.getY() > 340 && me.getX() > 150 && me.getX() < 300)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()-50,play.getY()+50,40,40);
    ????}
    ????
    ???}// else if
    ???
    ???
    ???//下、右
    ???else if (me.getX() - play.getX() >= 50 && me.getX() - play.getX() <= 80 && me.getY() - play.getY() >= 50 && me.getY() - play.getY() <= 80)
    ???{
    ????//士、仕規則
    ????if (Man < 14 && me.getX() > 150 && me.getX() < 300 && me.getY() < 150)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()+50,play.getY()+50,40,40);
    ????}?
    ????
    ????else if (Man > 13 && me.getY() > 340 && me.getX() > 150 && me.getX() < 300)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()+50,play.getY()+50,40,40);
    ????}
    ???}//else if
    ???
    ??}//士、仕移動規則結束
    ??
    ??
    ??/*士、仕吃棋規則*********************************************************/
    ??public void chapRule(int Man ,JLabel play,JLabel playTake,JLabel playQ[])
    ??{??
    ???//當前狀態
    ???boolean Chap = false;?
    ???
    ???//上、右
    ???if (playTake.getX() - play.getX() >= 30 && playTake.getX() - play.getX() <= 60 && play.getY() - playTake.getY() >= 30 && play.getY() - playTake.getY() <= 60)
    ???{
    ????//被吃的棋子是否和當前士相近
    ????if (Man < 14 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() < 150 && playTake.isVisible())
    ????{
    ?????Chap = true;
    ????}
    ????
    ????//被吃的棋子是否和當前仕相近
    ????else if (Man > 13 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() > 340 && playTake.isVisible())
    ????{
    ?????Chap = true;
    ????}???
    ???}//if
    ???
    ???//上、左
    ???else if (play.getX() - playTake.getX() <= 60 && play.getX() - playTake.getX() >= 30 && play.getY() - playTake.getY() >= 30 && play.getY() - playTake.getY() <= 60)
    ???{
    ????//被吃的棋子是否和當前士相近
    ????if (Man < 14 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() < 150 && playTake.isVisible())
    ????{
    ?????Chap = true;
    ????}
    ????
    ????//被吃的棋子是否和當前仕相近
    ????else if (Man > 13 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() > 340 && playTake.isVisible())
    ????{
    ?????Chap = true;
    ????}
    ???}// else if
    ???
    ???//下、左
    ???else if (play.getX() - playTake.getX() <= 60 && play.getX() - playTake.getX() >= 30 && playTake.getY() - play.getY() >= 30 && playTake.getY() - play.getY() <= 60)
    ???{
    ????//被吃的棋子是否和當前士相近
    ????if (Man < 14 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() < 150 && playTake.isVisible())
    ????{
    ?????Chap = true;
    ????}
    ????
    ????//被吃的棋子是否和當前仕相近
    ????else if (Man > 13 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() > 340 && playTake.isVisible())
    ????{
    ?????Chap = true;
    ????}
    ???}// else if
    ???
    ???//下、右
    ???else if (playTake.getX() - play.getX() >= 30 && playTake.getX() - play.getX() <= 60 && playTake.getY() - play.getY() >= 30 && playTake.getY() - play.getY() <= 60)
    ???{
    ????//被吃的棋子是否和當前士相近
    ????if (Man < 14 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() < 150 && playTake.isVisible())
    ????{
    ?????Chap = true;
    ????}
    ????
    ????//被吃的棋子是否和當前仕相近
    ????else if (Man > 13 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() > 340 && playTake.isVisible())
    ????{
    ?????Chap = true;
    ????}
    ???}//else if
    ???
    ???//可移動、并不能吃自己的棋子
    ???if (Chap && 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(),40,40);
    ???}
    ???
    ??}//士、仕吃棋規則結束
    ??
    ??/*將、帥移動規則*******************************************************/
    ??public void willRule(int Man ,JLabel play,JLabel playQ[],MouseEvent me)??
    ??{???
    ???//向上
    ???if (me.getX() - play.getX() >= -5 && me.getX() - play.getX() <= 35 && play.getY() - me.getY() <= 50 && play.getY() - me.getY() >= 15)
    ???{
    ????//將是否超過自己的界限
    ????if (Man == 30 && me.getX() > 150 && me.getX() < 300 && me.getY() < 150)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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(),play.getY()-50,40,40);?
    ????}?
    ????
    ????//帥是否超過自己的界限
    ????else if (Man == 31 && me.getY() > 340 && me.getX() > 150 && me.getX() < 300)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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(),play.getY()-50,40,40);?
    ????}????
    ???}//if
    ???
    ???//向左
    ???else if (play.getX() - me.getX() >= 15 && play.getX() - me.getX() <= 50 && me.getY() - play.getY() <= 40 && me.getY() - play.getY() >= -5)
    ???{
    ????//將是否超過自己的界限
    ????if (Man == 30 && me.getX() > 150 && me.getX() < 300 && me.getY() < 150)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()-50,play.getY(),40,40);?
    ????}?
    ????
    ????//帥是否超過自己的界限
    ????else if (Man == 31 && me.getY() > 340 && me.getX() > 150 && me.getX() < 300)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()-50,play.getY(),40,40);????
    ????}?????
    ???}//else if
    ???
    ???//向右
    ???else if (me.getX() - play.getX() >= 50 && me.getX() - play.getX() <= 85 && me.getY() - play.getY() <= 40 && me.getY() - play.getY() >= -5)
    ???{
    ????//將、帥規則
    ????if (Man == 30 && me.getX() > 150 && me.getX() < 300 && me.getY() < 150)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()+50,play.getY(),40,40);?
    ????}?
    ????
    ????else if (Man == 31 && me.getY() > 340 && me.getX() > 150 && me.getX() < 300)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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()+50,play.getY(),40,40);?
    ????}????
    ???}//else if
    ???
    ???//向下
    ???else if (me.getX() - play.getX() >= -5 && me.getX() - play.getX() <= 35 && me.getY() - play.getY() <= 85 && me.getY() - play.getY() >= 50)
    ???{
    ????//將、帥規則
    ????if (Man == 30 && me.getX() > 150 && me.getX() < 300 && me.getY() < 150)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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(),play.getY()+50,40,40);
    ????}?
    ????
    ????else if (Man == 31 && me.getY() > 340 && me.getX() > 150 && me.getX() < 300)
    ????{
    ?????//當前記錄添加到集合(用于悔棋)
    ?????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(),play.getY()+50,40,40);?
    ?????
    ????}?
    ????????
    ???}//else if ???
    ???
    ??}//將、帥移動規則結束
    ??
    ??public void willRule(int Man ,JLabel play,JLabel playTake ,JLabel playQ[])
    ??{?
    ???//當前狀態??
    ???boolean will = false;
    ???
    ???//向上吃
    ???if (play.getX() - playTake.getX() >= -10 && play.getX() - playTake.getX() <= 10 && play.getY() - playTake.getY() >= 40 && play.getY() - playTake.getY() <= 60 && playTake.isVisible())
    ???{
    ????//被吃的棋子是否和當前將相近
    ????if (Man == 30 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() < 150)
    ????{
    ?????will = true;
    ????}
    ????
    ????//被吃的棋子是否和當前帥相近
    ????else if (Man == 31 && playTake.getY() > 340 && playTake.getX() > 150 && playTake.getX() < 300)
    ????{
    ?????will = true;
    ????}
    ???}
    ???
    ???//向左吃
    ???else if (play.getX() - playTake.getX() >= 40 && play.getX() - playTake.getX() <= 60 && playTake.getY() - play.getY() <= 10 && playTake.getY() - play.getY() >= -10 && playTake.isVisible())
    ???{
    ????//將、帥規則
    ????if (Man == 30 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() < 150)
    ????{
    ?????will = true;
    ????}
    ????
    ????else if (Man == 31 && playTake.getY() > 340 && playTake.getX() > 150 && playTake.getX() < 300)
    ????{
    ?????will = true;
    ????}
    ???}
    ???
    ???//向右吃
    ???else if (playTake.getX() - play.getX() >= 40 && playTake.getX() - play.getX() <= 60 && playTake.getY() - play.getY() <= 10 && playTake.getY() - play.getY() >= -10 && playTake.isVisible())
    ???{
    ????//將、帥規則
    ????if (Man == 30 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() < 150)
    ????{
    ?????will = true;
    ????}
    ????
    ????else if (Man == 31 && playTake.getY() > 340 && playTake.getX() > 150 && playTake.getX() < 300)
    ????{
    ?????will = true;
    ????}
    ???}
    ???
    ???//向下
    ???else if (playTake.getX() - play.getX() >= -10 && playTake.getX() - play.getX() <= 10 && playTake.getY() - play.getY() <= 60 && playTake.getY() - play.getY() >= 40 && playTake.isVisible())
    ???{
    ????//將、帥規則
    ????if (Man == 30 && playTake.getX() > 150 && playTake.getX() < 300 && playTake.getY() < 150)
    ????{
    ?????will = true;
    ????}
    ????
    ????else if (Man == 31 && playTake.getY() > 340 && playTake.getX() > 150 && playTake.getX() < 300)
    ????{
    ?????will = true;
    ????}
    ???}
    ????
    ???//不能吃自己的棋子、符合當前要求?
    ???if (playTake.getName().charAt(1) != play.getName().charAt(1) && will)
    ???{?
    ????//當前記錄添加到集合(用于悔棋)
    ????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(),40,40);
    ???}???
    ???
    ??}//將、帥吃規則結束
    ??
    ?}//規則類
    ?
    }//主框架類

    posted on 2006-11-15 00:43 楊彩 閱讀(4285) 評論(5)  編輯  收藏 所屬分類: 經典java程序

    FeedBack:
    # re: Java版中國象棋
    2007-05-31 20:12 | 逗逗
    能不能逐一的解釋一下呢,看得不怎么太懂,謝謝了  回復  更多評論
      
    # re: Java版中國象棋
    2007-06-04 18:27 | 逗逗
    能不能把異常處理的也順便解釋一下捏.萬分感謝拉  回復  更多評論
      
    # re: 我想辦個Java版中國象棋在線游戲
    2007-09-23 22:59 | 包子
    我想辦個Java版中國象棋在線游戲 特來求教 聯系QQ:54478418  回復  更多評論
      
    # re: Java版中國象棋
    2007-10-21 22:34 | 地方士大夫
    不能用啊 沒有棋盤  回復  更多評論
      
    # re: Java版中國象棋[未登錄]
    2007-10-23 16:19 | 楊彩
    可以自己弄個背景圖片!  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲av日韩av无码av| 人人狠狠综合久久亚洲| 女人18毛片a级毛片免费| 福利片免费一区二区三区| 亚洲精品无码久久不卡| 久久青草免费91观看| 亚洲av午夜精品无码专区| 国产麻豆免费观看91| 最近更新免费中文字幕大全| 亚洲精品在线播放| 亚洲精品99久久久久中文字幕 | 亚洲综合国产成人丁香五月激情| 国产免费观看青青草原网站| a级男女仿爱免费视频| 亚洲日韩中文字幕无码一区| 国产精品亚洲片在线| 毛片视频免费观看| 久久精品国产免费一区| 亚洲欧洲专线一区| 亚洲短视频男人的影院| 国产zzjjzzjj视频全免费| 国产精品免费大片| 四虎影视久久久免费观看| 亚洲妇女水蜜桃av网网站| 国产成人精品久久亚洲| 日韩免费a级毛片无码a∨| 成人精品一区二区三区不卡免费看| 亚洲欧美成人av在线观看| 亚洲春色在线视频| 亚洲男女内射在线播放| 在线精品免费视频| 8x成人永久免费视频| www.xxxx.com日本免费| 亚洲精品理论电影在线观看| 亚洲丁香色婷婷综合欲色啪| 国产亚洲人成网站在线观看| 国产jizzjizz免费看jizz| 18禁成年无码免费网站无遮挡 | 中文字幕视频免费| 三年在线观看免费观看完整版中文 | 一级做a爰黑人又硬又粗免费看51社区国产精品视 |