}
//悔棋按钮 else if (back()){
//删除用过的坐标 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){
}}
public void back(){ 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,55,55);
41
if (play[M].getName().charAt(1) == '1'){ text.setText(\ 黑棋走棋\ chessPlayClick = 1;
} else{ text.setText(\ 红棋走棋\ chessPlayClick = 2;
}
}
//退出
else if (exit()){}
public void 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){
42
//向下移动、得到终点的坐标模糊成合法的坐标
if ((me.getY()-play.getY()) > 27 && (me.getY()-play.getY()) < 86
&& (me.getX()-play.getX()) < 55 && (me.getX()-play.getX()) > 0){
else if (play.getY() > 284 && (me.getX() - play.getX()) >= 57 && }
//向右移动、得到终点的坐标模糊成合法的坐标、必须过河
//当前记录添加到集合(用于悔棋) 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()+57,55,55);
(me.getX() - play.getX()) <= 112){
}
//向左移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() > 284 && (play.getX() - me.getX()) >= 2 &&
play.setBounds(play.getX()+57,play.getY(),55,55);
(play.getX() - me.getX()) <=58){
}
}
//模糊坐标
play.setBounds(play.getX()-57,play.getY(),55,55);
//红卒向上 else{
43
//当前记录添加到集合(用于悔棋) 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()) <= 55
&& (play.getY()-me.getY()) >27 && play.getY()-me.getY() < 86){
}
//向右移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() <= 341 && (me.getX() - play.getX()) >= 57 &&
play.setBounds(play.getX(),play.getY()-57,55,55);
(me.getX() - play.getX()) <= 112){
}
//向左移动、得到终点的坐标模糊成合法的坐标、必须过河 else if (play.getY() <= 341 && (play.getX() - me.getX()) >= 3 &&
play.setBounds(play.getX()+57,play.getY(),55,55);
(play.getX() - me.getX()) <=58){
}
}
play.setBounds(play.getX()-57,play.getY(),55,55);
}//卒移动结束
/**卒吃棋规则*/
public void armsRule(JLabel play1,JLabel play2){
//向右走
if ((play2.getX() - play1.getX()) <= 112 && (play2.getX() -
44
play1.getX()) >= 57 && (play1.getY() - play2.getY()) < 22 && (play1.getY() - play2.getY())
>
-22
&&
play2.isVisible()
&&
play1.getName().charAt(1)!=play2.getName().charAt(1)){
//黑棋要过河才能右吃棋
if (play1.getName().charAt(1) == '1' && play1.getY() > 284 &&
play1.getName().charAt(1) != play2.getName().charAt(1)){
}
//红棋要过河才左能吃棋
else if (play1.getName().charAt(1) == '2' && play1.getY() < 341
play2.setVisible(false); //把对方的位置给自己
play1.setBounds(play2.getX(),play2.getY(),55,55);
&& play1.getName().charAt(1) != play2.getName().charAt(1)){
} //向左走
else if ((play1.getX() - play2.getX()) <= 112 && (play1.getX() -
}
play2.setVisible(false); //把对方的位置给自己
play1.setBounds(play2.getX(),play2.getY(),55,55);
play2.getX()) >= 57 && (play1.getY() - play2.getY()) < 22 && (play1.getY() - play2.getY())
>
-22
&&
play2.isVisible()
&&
play1.getName().charAt(1)!=play2.getName().charAt(1)){
//黑棋要过河才能左吃棋
if (play1.getName().charAt(1) == '1' && play1.getY() > 284 &&
play1.getName().charAt(1) != play2.getName().charAt(1)){
45