Java+Swing实现中国象棋游戏

 更新时间:2022年02月09日 15:37:27   作者:水坚石青  
这篇文章将通过Java+Swing实现经典的中国象棋游戏。文中可以实现开始游戏,悔棋,退出等功能。感兴趣的小伙伴可以跟随小编一起动手试一试

一、系统介绍

1.开发环境

开发工具:Eclipse2021

JDK版本:jdk1.8

Mysql版本:8.0.13

2.技术选型

Java+Swing

3.系统功能

实现中国象棋游戏,开始游戏,悔棋,退出功能。

二、系统展示

1.首页

2.红旗走

3.黑棋走

三、部分代码

ChineseCheseRule.java

package com.sjsq;
 
import java.awt.event.MouseEvent;
 
import javax.swing.JLabel;
 
/* 定义中国象棋规则的类 */
public class ChineseCheseRule {
	/** 卒子的移动规则 */
	public void armsRule(int Man, JLabel chessMain, MouseEvent me) {
		int boardX = Math.round((float) (me.getX() - 24) / 57) * 57 + 24;
		int boardY = Math.round((float) (me.getY() - 56) / 57) * 57 + 56;
		// 黑卒向下
		if (Man < 21) {
			// 向下移动
			if (boardY - chessMain.getY() == 57 && boardX == chessMain.getX()
					&& boardY <= 569) {
				ChineseChessMainFrame.list.add(String.valueOf(1));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(Man));
				chessMain.setBounds(chessMain.getX(), chessMain.getY() + 57,
						55, 55);
			}
			// 向右移动,必须过河
			else if (chessMain.getY() >= 341 && boardY == chessMain.getY()
					&& boardX - chessMain.getX() == 57 && boardX <= 480) {
				ChineseChessMainFrame.list.add(String.valueOf(1));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(Man));
				chessMain.setBounds(chessMain.getX() + 57, chessMain.getY(),
						55, 55);
			}
			// 向左移动,必须过河
			else if (chessMain.getY() >= 341 && boardY == chessMain.getY()
					&& chessMain.getX() - boardX == 57 && boardX >= 24) {
				ChineseChessMainFrame.list.add(String.valueOf(1));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(Man));
				chessMain.setBounds(chessMain.getX() - 57, chessMain.getY(),
						55, 55);
			}
		}
		// 红卒向上
		else {
			// 向上移动
			if (chessMain.getY() - boardY == 57 && boardX == chessMain.getX()
					&& boardY >= 56) {
				ChineseChessMainFrame.list.add(String.valueOf(1));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(Man));
				chessMain.setBounds(chessMain.getX(), chessMain.getY() - 57,
						55, 55);
			}
			// 向右移动,必须过河
			else if (chessMain.getY() <= 284 && boardY == chessMain.getY()
					&& boardX - chessMain.getX() == 57 && boardX <= 480) {
				ChineseChessMainFrame.list.add(String.valueOf(1));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(Man));
				chessMain.setBounds(chessMain.getX() + 57, chessMain.getY(),
						55, 55);
			}
			// 向左移动,必须过河
			else if (chessMain.getY() <= 284 && boardY == chessMain.getY()
					&& chessMain.getX() - boardX == 57 && boardX >= 24) {
				ChineseChessMainFrame.list.add(String.valueOf(1));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(Man));
				chessMain.setBounds(chessMain.getX() - 57, chessMain.getY(),
						55, 55);
			}
		}
	}// 卒移动结束
 
	/** 卒吃棋规则 */
	public void armsRule(JLabel chessMain1, JLabel chessMain2) {
		// 向右走
		if (chessMain2.getX() - chessMain1.getX() == 57
				&& chessMain1.getY() == chessMain2.getY()
				&& chessMain2.isVisible()
				&& chessMain1.getName().charAt(1) != chessMain2.getName()
						.charAt(1)) {
			// 黑棋要过河才能吃棋
			if (chessMain1.getName().charAt(1) == '1'
					&& chessMain1.getY() >= 341) {
				ChineseChessMainFrame.list.add(String.valueOf(3));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain1
						.getName().substring(2)));
				ChineseChessMainFrame.list.add(String.valueOf(2));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain2
						.getName().substring(2)));
				chessMain2.setVisible(false);
				chessMain1.setBounds(chessMain2.getX(), chessMain2.getY(), 55,
						55);
			}
			// 红棋要过河才能吃棋
			else if (chessMain1.getName().charAt(1) == '2'
					&& chessMain1.getY() <= 284) {
				ChineseChessMainFrame.list.add(String.valueOf(3));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain1
						.getName().substring(2)));
				ChineseChessMainFrame.list.add(String.valueOf(2));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain2
						.getName().substring(2)));
				chessMain2.setVisible(false);
				chessMain1.setBounds(chessMain2.getX(), chessMain2.getY(), 55,
						55);
			}
		}
		// 向左走
		else if (chessMain1.getX() - chessMain2.getX() == 57
				&& chessMain1.getY() == chessMain2.getY()
				&& chessMain2.isVisible()
				&& chessMain1.getName().charAt(1) != chessMain2.getName()
						.charAt(1)) {
			// 黑棋要过河才能吃棋
			if (chessMain1.getName().charAt(1) == '1'
					&& chessMain1.getY() >= 341) {
				ChineseChessMainFrame.list.add(String.valueOf(3));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain1
						.getName().substring(2)));
				ChineseChessMainFrame.list.add(String.valueOf(2));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain2
						.getName().substring(2)));
				chessMain2.setVisible(false);
				chessMain1.setBounds(chessMain2.getX(), chessMain2.getY(), 55,
						55);
			}
			// 红棋要过河才能吃棋
			else if (chessMain1.getName().charAt(1) == '2'
					&& chessMain1.getY() <= 284) {
				ChineseChessMainFrame.list.add(String.valueOf(3));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain1
						.getName().substring(2)));
				ChineseChessMainFrame.list.add(String.valueOf(2));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain2
						.getName().substring(2)));
				chessMain2.setVisible(false);
				chessMain1.setBounds(chessMain2.getX(), chessMain2.getY(), 55,
						55);
			}
		}
		// 向上走或向下走
		else if (chessMain1.getX() == chessMain2.getX()
				&& Math.abs(chessMain1.getY() - chessMain2.getY()) == 57
				&& chessMain2.isVisible()
				&& chessMain1.getName().charAt(1) != chessMain2.getName()
						.charAt(1)) {
			// 黑棋只能向下吃棋
			if (chessMain1.getName().charAt(1) == '1'
					&& chessMain2.getY() - chessMain1.getY() == 57) {
				ChineseChessMainFrame.list.add(String.valueOf(3));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain1
						.getName().substring(2)));
				ChineseChessMainFrame.list.add(String.valueOf(2));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain2
						.getName().substring(2)));
				chessMain2.setVisible(false);
				chessMain1.setBounds(chessMain2.getX(), chessMain2.getY(), 55,
						55);
			}
			// 红棋只能向上吃棋
			else if (chessMain1.getName().charAt(1) == '2'
					&& chessMain1.getY() - chessMain2.getY() == 57) {
				ChineseChessMainFrame.list.add(String.valueOf(3));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain1.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain1
						.getName().substring(2)));
				ChineseChessMainFrame.list.add(String.valueOf(2));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getX()));
				ChineseChessMainFrame.list
						.add(String.valueOf(chessMain2.getY()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMain2
						.getName().substring(2)));
				chessMain2.setVisible(false);
				chessMain1.setBounds(chessMain2.getX(), chessMain2.getY(), 55,
						55);
			}
		}
 
	}// 卒吃结束
 
	/** 炮、车移动规则 */
	public void cannonRule(JLabel chessMan, JLabel[] chessman, MouseEvent me) {
		int boardX = Math.round((float) (me.getX() - 24) / 57) * 57 + 24;
		int boardY = Math.round((float) (me.getY() - 56) / 57) * 57 + 56;
		// 起点和终点之间是否有棋子
		int count = 0;
		// 上、下移动
		if (chessMan.getX() == boardX && chessMan.getY() != boardY
				&& boardY >= 56 && boardY <= 569) {
			// 找出在同一条竖线的所有棋子、并不包括自己
			for (int j = 0; j < chessman.length; j++) {
				if (chessman[j].getX() == chessMan.getX()
						&& !chessman[j].getName().equals(chessMan.getName())
						&& chessman[j].isVisible()) {
					if ((chessman[j].getY() > chessMan.getY() && chessman[j]
							.getY() < boardY)
							|| (chessman[j].getY() < chessMan.getY() && chessman[j]
									.getY() > boardY)) {
						count++;
						break;
					}
				}
 
			}
			if (count == 0) {
				ChineseChessMainFrame.list.add(String.valueOf(1));
				ChineseChessMainFrame.list.add(String.valueOf(chessMan.getX()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMan.getY()));
				for (int i = 0; i < chessman.length; i++) {
					if (chessman[i].getName().equals(chessMan.getName())) {
						ChineseChessMainFrame.list.add(String.valueOf(i));
						break;
					}
				}
				chessMan.setBounds(boardX, boardY, 55, 55);
			}
		}
		// 左、右移动
		if (chessMan.getY() == boardY && chessMan.getX() != boardX
				&& boardX >= 24 && boardX <= 480) {
			// 找出在同一条横线的所有棋子、并不包括自己
			for (int j = 0; j < chessman.length; j++) {
				if (chessman[j].getY() == chessMan.getY()
						&& !chessman[j].getName().equals(chessMan.getName())
						&& chessman[j].isVisible()) {
					if ((chessman[j].getX() > chessMan.getX() && chessman[j]
							.getX() < boardX)
							|| (chessman[j].getX() < chessMan.getX() && chessman[j]
									.getX() > boardX)) {
						count++;
						break;
					}
				}
 
			}
			if (count == 0) {
				ChineseChessMainFrame.list.add(String.valueOf(1));
				ChineseChessMainFrame.list.add(String.valueOf(chessMan.getX()));
				ChineseChessMainFrame.list.add(String.valueOf(chessMan.getY()));
				for (int i = 0; i < chessman.length; i++) {
					if (chessman[i].getName().equals(chessMan.getName())) {
						ChineseChessMainFrame.list.add(String.valueOf(i));
						break;
					}
				}
				chessMan.setBounds(boardX, boardY, 55, 55);
			}
		}
	}// 炮、车移动方法结束
 
	/** 炮、车吃棋规则 */
	public void cannonRule(int chess, JLabel chessMan, JLabel chessManTake,
			JLabel[] chessman) {
 
		// 起点和终点之间是否有棋子
		int count = 0;
		if (chessMan.getX() == chessManTake.getX()
				&& chessMan.getY() != chessManTake.getY()) {
			// 所有的棋子
			for (int i = 0; i < chessman.length; i++) {
				// 找出在同一条竖线的所有棋子、并不包括自己
				if (chessman[i].getX() == chessMan.getX()
						&& !chessman[i].getName().equals(chessMan.getName())
						&& chessman[i].isVisible()) {
					if ((chessman[i].getY() > chessMan.getY() && chessman[i]
							.getY() < chessManTake.getY())
							|| (chessman[i].getY() < chessMan.getY() && chessman[i]
									.getY() > chessManTake.getY())) {
						count++;
					}
				}
			}
		} else if (chessMan.getY() == chessManTake.getY()
				&& chessMan.getX() != chessManTake.getX()) {
			// 所有的棋子
			for (int i = 0; i < chessman.length; i++) {
				// 找出在同一条横线的所有棋子、并不包括自己
				if (chessman[i].getY() == chessMan.getY()
						&& !chessman[i].getName().equals(chessMan.getName())
						&& chessman[i].isVisible()) {
					if ((chessman[i].getX() > chessMan.getX() && chessman[i]
							.getX() < chessManTake.getX())
							|| (chessman[i].getX() < chessMan.getX() && chessman[i]
									.getX() > chessManTake.getX())) {
						count++;
					}
				}
			}
		}
		// 起点和终点之间只有一个棋子是炮的规则、并不能吃自己的棋子
		if (count == 1
				&& chess == 0
				&& chessMan.getName().charAt(1) != chessManTake.getName()
						.charAt(1)) {
			ChineseChessMainFrame.list.add(String.valueOf(3));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getName()
					.substring(2)));
			ChineseChessMainFrame.list.add(String.valueOf(2));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake
					.getName().substring(2)));
			chessManTake.setVisible(false);
			chessMan.setBounds(chessManTake.getX(), chessManTake.getY(), 55, 55);
		}
		// 起点和终点之间没有棋子是车的规则、并不能吃自己的棋子
		else if (count == 0
				&& chess == 1
				&& chessMan.getName().charAt(1) != chessManTake.getName()
						.charAt(1)) {
			ChineseChessMainFrame.list.add(String.valueOf(3));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getName()
					.substring(2)));
			ChineseChessMainFrame.list.add(String.valueOf(2));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake
					.getName().substring(2)));
			chessManTake.setVisible(false);
			chessMan.setBounds(chessManTake.getX(), chessManTake.getY(), 55, 55);
		}
	}// 炮、车吃棋方法结束
 
	/** 马移动规则 */
	public void horseRule(JLabel chessMan, JLabel[] chessman, MouseEvent me) {
		int boardX = Math.round((float) (me.getX() - 24) / 57) * 57 + 24;
		int boardY = Math.round((float) (me.getY() - 56) / 57) * 57 + 56;
		// 保存障碍
		int Move = 0;
		if (boardY >= 56 && boardY <= 569 && boardX >= 24 && boardX <= 480) {
			// 左移、上边
			if (chessMan.getX() - boardX == 114
					&& chessMan.getY() - boardY == 57) {
				// 正前方是否有别的棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessMan.getX() - chessman[i].getX() == 57
							&& chessMan.getY() == chessman[i].getY()
							&& chessman[i].isVisible()) {
						Move = 1;
						break;
					}
				}
				// 可以移动该棋子
				if (Move == 0) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					for (int i = 0; i < chessman.length; i++) {
						if (chessman[i].getName().equals(chessMan.getName())) {
							ChineseChessMainFrame.list.add(String.valueOf(i));
							break;
						}
					}
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 左移、下边
			else if (chessMan.getX() - boardX == 114
					&& boardY - chessMan.getY() == 57) {
				// 正前方是否有别的棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessMan.getX() - chessman[i].getX() == 57
							&& chessMan.getY() == chessman[i].getY()
							&& chessman[i].isVisible()) {
						Move = 1;
						break;
					}
				}
				// 可以移动该棋子
				if (Move == 0) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					for (int i = 0; i < chessman.length; i++) {
						if (chessman[i].getName().equals(chessMan.getName())) {
							ChineseChessMainFrame.list.add(String.valueOf(i));
							break;
						}
					}
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 右移、上边
			else if (boardX - chessMan.getX() == 114
					&& chessMan.getY() - boardY == 57) {
				// 正前方是否有别的棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessman[i].getX() - chessMan.getX() == 57
							&& chessMan.getY() == chessman[i].getY()
							&& chessman[i].isVisible()) {
						Move = 1;
						break;
					}
				}
				// 可以移动该棋子
				if (Move == 0) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					for (int i = 0; i < chessman.length; i++) {
						if (chessman[i].getName().equals(chessMan.getName())) {
							ChineseChessMainFrame.list.add(String.valueOf(i));
							break;
						}
					}
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 右移、下边
			else if (boardX - chessMan.getX() == 114
					&& boardY - chessMan.getY() == 57) {
				// 正前方是否有别的棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessman[i].getX() - chessMan.getX() == 57
							&& chessMan.getY() == chessman[i].getY()
							&& chessman[i].isVisible()) {
						Move = 1;
						break;
					}
				}
				// 可以移动该棋子
				if (Move == 0) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					for (int i = 0; i < chessman.length; i++) {
						if (chessman[i].getName().equals(chessMan.getName())) {
							ChineseChessMainFrame.list.add(String.valueOf(i));
							break;
						}
					}
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 上移、左边
			else if (chessMan.getX() - boardX == 57
					&& chessMan.getY() - boardY == 114) {
				// 正前方是否有别的棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessMan.getY() - chessman[i].getY() == 57
							&& chessMan.getX() == chessman[i].getX()
							&& chessman[i].isVisible()) {
						Move = 1;
						break;
					}
				}
				// 可以移动该棋子
				if (Move == 0) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					for (int i = 0; i < chessman.length; i++) {
						if (chessman[i].getName().equals(chessMan.getName())) {
							ChineseChessMainFrame.list.add(String.valueOf(i));
							break;
						}
					}
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 上移、右边
			else if (boardX - chessMan.getX() == 57
					&& chessMan.getY() - boardY == 114) {
				// 正前方是否有别的棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessMan.getY() - chessman[i].getY() == 57
							&& chessMan.getX() == chessman[i].getX()
							&& chessman[i].isVisible()) {
						Move = 1;
						break;
					}
				}
				// 可以移动该棋子
				if (Move == 0) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					for (int i = 0; i < chessman.length; i++) {
						if (chessman[i].getName().equals(chessMan.getName())) {
							ChineseChessMainFrame.list.add(String.valueOf(i));
							break;
						}
					}
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 下移、左边
			else if (chessMan.getX() - boardX == 57
					&& boardY - chessMan.getY() == 114) {
				// 正前方是否有别的棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessman[i].getY() - chessMan.getY() == 57
							&& chessMan.getX() == chessman[i].getX()
							&& chessman[i].isVisible()) {
						Move = 1;
						break;
					}
				}
				// 可以移动该棋子
				if (Move == 0) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					for (int i = 0; i < chessman.length; i++) {
						if (chessman[i].getName().equals(chessMan.getName())) {
							ChineseChessMainFrame.list.add(String.valueOf(i));
							break;
						}
					}
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 下移、右边
			else if (boardX - chessMan.getX() == 57
					&& boardY - chessMan.getY() == 114) {
				// 正前方是否有别的棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessman[i].getY() - chessMan.getY() == 57
							&& chessMan.getX() == chessman[i].getX()
							&& chessman[i].isVisible()) {
						Move = 1;
						break;
					}
				}
				// 可以移动该棋子
				if (Move == 0) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					for (int i = 0; i < chessman.length; i++) {
						if (chessman[i].getName().equals(chessMan.getName())) {
							ChineseChessMainFrame.list.add(String.valueOf(i));
							break;
						}
					}
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
		}
	}// 马移动结束
 
	/** 马吃棋规则 */
	public void horseRule(JLabel chessMan, JLabel chessManTake,
			JLabel[] chessman) {
		// 保存障碍
		int Move = 0;
		boolean Chess = false;
		// 左移、上边
		if (chessMan.getName().charAt(1) != chessManTake.getName().charAt(1)
				&& chessMan.getX() - chessManTake.getX() == 114
				&& chessMan.getY() - chessManTake.getY() == 57) {
			// 正前方是否有别的棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessMan.getX() - chessman[i].getX() == 57
						&& chessMan.getY() == chessman[i].getY()
						&& chessman[i].isVisible()) {
					Move = 1;
					break;
				}
			}
			Chess = true;
		}
		// 左移、下边
		else if (chessMan.getName().charAt(1) != chessManTake.getName().charAt(
				1)
				&& chessMan.getX() - chessManTake.getX() == 114
				&& chessManTake.getY() - chessMan.getY() == 57) {
			// 正前方是否有别的棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessMan.getX() - chessman[i].getX() == 57
						&& chessMan.getY() == chessman[i].getY()
						&& chessman[i].isVisible()) {
					Move = 1;
					break;
				}
			}
			Chess = true;
		}
		// 右移、上边
		else if (chessMan.getName().charAt(1) != chessManTake.getName().charAt(
				1)
				&& chessManTake.getX() - chessMan.getX() == 114
				&& chessMan.getY() - chessManTake.getY() == 57) {
			// 正前方是否有别的棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessman[i].getX() - chessMan.getX() == 57
						&& chessMan.getY() == chessman[i].getY()
						&& chessman[i].isVisible()) {
					Move = 1;
					break;
				}
			}
			Chess = true;
		}
		// 右移、下边
		else if (chessMan.getName().charAt(1) != chessManTake.getName().charAt(
				1)
				&& chessManTake.getX() - chessMan.getX() == 114
				&& chessManTake.getY() - chessMan.getY() == 57) {
			// 正前方是否有别的棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessman[i].getX() - chessMan.getX() == 57
						&& chessMan.getY() == chessman[i].getY()
						&& chessman[i].isVisible()) {
					Move = 1;
					break;
				}
			}
			Chess = true;
		}
		// 上移、左边
		else if (chessMan.getName().charAt(1) != chessManTake.getName().charAt(
				1)
				&& chessMan.getX() - chessManTake.getX() == 57
				&& chessMan.getY() - chessManTake.getY() == 114) {
			// 正前方是否有别的棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessMan.getY() - chessman[i].getY() == 57
						&& chessMan.getX() == chessman[i].getX()
						&& chessman[i].isVisible()) {
					Move = 1;
					break;
				}
			}
			Chess = true;
		}
		// 上移、右边
		else if (chessMan.getName().charAt(1) != chessManTake.getName().charAt(
				1)
				&& chessManTake.getX() - chessMan.getX() == 57
				&& chessMan.getY() - chessManTake.getY() == 114) {
			// 正前方是否有别的棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessMan.getY() - chessman[i].getY() == 57
						&& chessMan.getX() == chessman[i].getX()
						&& chessman[i].isVisible()) {
					Move = 1;
					break;
				}
			}
			Chess = true;
		}
		// 下移、左边
		else if (chessMan.getName().charAt(1) != chessManTake.getName().charAt(
				1)
				&& chessMan.getX() - chessManTake.getX() == 57
				&& chessManTake.getY() - chessMan.getY() == 114) {
			// 正前方是否有别的棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessman[i].getY() - chessMan.getY() == 57
						&& chessMan.getX() == chessman[i].getX()
						&& chessman[i].isVisible()) {
					Move = 1;
					break;
				}
			}
			Chess = true;
		}
		// 下移、右边
		else if (chessMan.getName().charAt(1) != chessManTake.getName().charAt(
				1)
				&& chessManTake.getX() - chessMan.getX() == 57
				&& chessManTake.getY() - chessMan.getY() == 114) {
			// 正前方是否有别的棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessman[i].getY() - chessMan.getY() == 57
						&& chessMan.getX() == chessman[i].getX()
						&& chessman[i].isVisible()) {
					Move = 1;
					break;
				}
			}
			Chess = true;
		}
		// 没有障碍、并可以吃棋
		if (Move == 0 && Chess) {
			ChineseChessMainFrame.list.add(String.valueOf(3));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getName()
					.substring(2)));
			ChineseChessMainFrame.list.add(String.valueOf(2));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake
					.getName().substring(2)));
			chessManTake.setVisible(false);
			chessMan.setBounds(chessManTake.getX(), chessManTake.getY(), 55, 55);
		}
	}// 马吃棋结束
 
	/** 相移动规则 */
	public void elephantRule(int Man, JLabel chessMan, JLabel[] chessman,
			MouseEvent me) {
		// 坐标和障碍
		int boardX = Math.round((float) (me.getX() - 24) / 57) * 57 + 24;
		int boardY = Math.round((float) (me.getY() - 56) / 57) * 57 + 56;
		int Move = 0;
		if (boardY >= 56 && boardY <= 569 && boardX >= 24 && boardX <= 480) {
			// 上左
			if (chessMan.getX() - boardX == 114
					&& chessMan.getY() - boardY == 114) {
				// 左上方是否有棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessman[i].isVisible()
							&& chessMan.getX() - chessman[i].getX() == 57
							&& chessMan.getY() - chessman[i].getY() == 57) {
						Move++;
						break;
					}
				}
				// 红旗不能过楚河
				if (Move == 0 && Man > 9 && boardY > 284) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 黑旗不能过汉界
				else if (Move == 0 && Man <= 9 && boardY <= 284) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 上右
			else if (boardX - chessMan.getX() == 114
					&& chessMan.getY() - boardY == 114) {
				// 右上方是否有棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessman[i].isVisible()
							&& chessman[i].getX() - chessMan.getX() == 57
							&& chessMan.getY() - chessman[i].getY() == 57) {
						Move++;
						break;
					}
				}
				// 红旗不能过楚河
				if (Move == 0 && Man > 9 && boardY > 284) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 黑旗不能过汉界
				else if (Move == 0 && Man <= 9 && boardY <= 284) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 下左
			else if (chessMan.getX() - boardX == 114
					&& boardY - chessMan.getY() == 114) {
				// 左下方是否有棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessman[i].isVisible()
							&& chessMan.getX() - chessman[i].getX() == 57
							&& chessman[i].getY() - chessMan.getY() == 57) {
						Move++;
						break;
					}
				}
				// 红旗不能过楚河
				if (Move == 0 && Man > 9 && boardY > 284) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 黑旗不能过汉界
				else if (Move == 0 && Man <= 9 && boardY <= 284) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 下右
			else if (boardX - chessMan.getX() == 114
					&& boardY - chessMan.getY() == 114) {
				// 右下方是否有棋子
				for (int i = 0; i < chessman.length; i++) {
					if (chessman[i].isVisible()
							&& chessman[i].getX() - chessMan.getX() == 57
							&& chessman[i].getY() - chessMan.getY() == 57) {
						Move++;
						break;
					}
				}
				// 红旗不能过楚河
				if (Move == 0 && Man > 9 && boardY > 284) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 黑旗不能过汉界
				else if (Move == 0 && Man <= 9 && boardY <= 284) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
		}
	}// 相移动规则结束
 
	/** 相、象吃棋规则 */
	public void elephantRule(JLabel chessMan, JLabel chessManTake,
			JLabel[] chessman) {
		// 障碍
		int Move = 0;
		boolean Chess = false;
		// 上左
		if (chessMan.getX() - chessManTake.getX() == 114
				&& chessMan.getY() - chessManTake.getY() == 114) {
			// 左上方是否有棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessman[i].isVisible()
						&& chessMan.getX() - chessman[i].getX() == 57
						&& chessMan.getY() - chessman[i].getY() == 57) {
					Move++;
					break;
				}
			}
			Chess = true;
		}
		// 上右
		else if (chessManTake.getX() - chessMan.getX() == 114
				&& chessMan.getY() - chessManTake.getY() == 114) {
			// 右上方是否有棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessman[i].isVisible()
						&& chessman[i].getX() - chessMan.getX() == 57
						&& chessMan.getY() - chessman[i].getY() == 57) {
					Move++;
					break;
				}
			}
			Chess = true;
		}
		// 下左
		else if (chessMan.getX() - chessManTake.getX() == 114
				&& chessManTake.getY() - chessMan.getY() == 114) {
			// 左下方是否有棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessman[i].isVisible()
						&& chessMan.getX() - chessman[i].getX() == 57
						&& chessman[i].getY() - chessMan.getY() == 57) {
					Move++;
					break;
				}
			}
			Chess = true;
		}
		// 下右
		else if (chessManTake.getX() - chessMan.getX() == 114
				&& chessManTake.getY() - chessMan.getY() == 114) {
			// 右下方是否有棋子
			for (int i = 0; i < chessman.length; i++) {
				if (chessman[i].isVisible()
						&& chessman[i].getX() - chessMan.getX() == 57
						&& chessman[i].getY() - chessMan.getY() == 57) {
					Move++;
					break;
				}
			}
			Chess = true;
		}
		// 没有障碍、并不能吃自己的棋子
		if (Chess
				&& Move == 0
				&& chessMan.getName().charAt(1) != chessManTake.getName()
						.charAt(1)) {
			ChineseChessMainFrame.list.add(String.valueOf(3));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getName()
					.substring(2)));
			ChineseChessMainFrame.list.add(String.valueOf(2));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake
					.getName().substring(2)));
			chessManTake.setVisible(false);
			chessMan.setBounds(chessManTake.getX(), chessManTake.getY(), 55, 55);
		}
	}// 相、象吃棋规则结束
 
	/** 士、仕移动方法 */
	public void chapRule(int Man, JLabel chessMan, JLabel[] chessman,
			MouseEvent me) {
		// 坐标
		int boardX = Math.round((float) (me.getX() - 24) / 57) * 57 + 24;
		int boardY = Math.round((float) (me.getY() - 56) / 57) * 57 + 56;
		if (boardY >= 56 && boardY <= 569 && boardX >= 24 && boardX <= 480) {
			// 上左
			if (chessMan.getX() - boardX == 57
					&& chessMan.getY() - boardY == 57) {
				// 士不能超过自己的界限
				if (Man < 14 && boardX >= 195 && boardX <= 252 && boardY >= 56
						&& boardY <= 113) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 仕不能超过自己的界限
				else if (Man > 13 && boardX >= 195 && boardX <= 252
						&& boardY >= 455 && boardY <= 512) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 上右
			else if (boardX - chessMan.getX() == 57
					&& chessMan.getY() - boardY == 57) {
				// 士不能超过自己的界限
				if (Man < 14 && boardX >= 252 && boardX <= 309 && boardY >= 56
						&& boardY <= 113) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 仕不能超过自己的界限
				else if (Man > 13 && boardX >= 252 && boardX <= 309
						&& boardY >= 455 && boardY <= 512) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 下左
			else if (chessMan.getX() - boardX == 57
					&& boardY - chessMan.getY() == 57) {
				// 士不能超过自己的界限
				if (Man < 14 && boardX >= 195 && boardX <= 252 && boardY >= 113
						&& boardY <= 170) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 仕不能超过自己的界限
				else if (Man > 13 && boardX >= 195 && boardX <= 252
						&& boardY >= 512 && boardY <= 569) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 下右
			else if (boardX - chessMan.getX() == 57
					&& boardY - chessMan.getY() == 57) {
				// 士不能超过自己的界限
				if (Man < 14 && boardX >= 252 && boardX <= 309 && boardY >= 113
						&& boardY <= 170) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 仕不能超过自己的界限
				else if (Man > 13 && boardX >= 252 && boardX <= 309
						&& boardY >= 512 && boardY <= 569) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
		}
	}// 士移动规则结束
 
	/** 士吃棋规则 */
	public void chapRule(int Man, JLabel chessMan, JLabel chessManTake,
			JLabel[] chessman) {
		// 当前状态
		boolean Chap = false;
		// 上左
		if (chessMan.getX() - chessManTake.getX() == 57
				&& chessMan.getY() - chessManTake.getY() == 57) {
			// 士不能超过自己的界限
			if (Man < 14 && chessManTake.getX() >= 195
					&& chessManTake.getX() <= 252 && chessManTake.getY() >= 56
					&& chessManTake.getY() <= 113 && chessManTake.isVisible()) {
				Chap = true;
			}
			// 仕不能超过自己的界限
			else if (Man > 13 && chessManTake.getX() >= 195
					&& chessManTake.getX() <= 252 && chessManTake.getY() >= 455
					&& chessManTake.getY() <= 512 && chessManTake.isVisible()) {
				Chap = true;
			}
		}
		// 上右
		else if (chessManTake.getX() - chessMan.getX() == 57
				&& chessMan.getY() - chessManTake.getY() == 57) {
			// 士不能超过自己的界限
			if (Man < 14 && chessManTake.getX() >= 252
					&& chessManTake.getX() <= 309 && chessManTake.getY() >= 56
					&& chessManTake.getY() <= 113 && chessManTake.isVisible()) {
				Chap = true;
			}
			// 仕不能超过自己的界限
			else if (Man > 13 && chessManTake.getX() >= 252
					&& chessManTake.getX() <= 309 && chessManTake.getY() >= 455
					&& chessManTake.getY() <= 512 && chessManTake.isVisible()) {
				Chap = true;
			}
		}
		// 下左
		else if (chessMan.getX() - chessManTake.getX() == 57
				&& chessManTake.getY() - chessMan.getY() == 57) {
			// 士不能超过自己的界限
			if (Man < 14 && chessManTake.getX() >= 195
					&& chessManTake.getX() <= 252 && chessManTake.getY() >= 113
					&& chessManTake.getY() <= 170 && chessManTake.isVisible()) {
				Chap = true;
			}
			// 仕不能超过自己的界限
			else if (Man > 13 && chessManTake.getX() >= 195
					&& chessManTake.getX() <= 252 && chessManTake.getY() >= 512
					&& chessManTake.getY() <= 569 && chessManTake.isVisible()) {
				Chap = true;
			}
		}
		// 下右
		else if (chessManTake.getX() - chessMan.getX() == 57
				&& chessManTake.getY() - chessMan.getY() == 57) {
			// 士不能超过自己的界限
			if (Man < 14 && chessManTake.getX() >= 252
					&& chessManTake.getX() <= 309 && chessManTake.getY() >= 113
					&& chessManTake.getY() <= 170 && chessManTake.isVisible()) {
				Chap = true;
			}
			// 仕不能超过自己的界限
			else if (Man > 13 && chessManTake.getX() >= 252
					&& chessManTake.getX() <= 309 && chessManTake.getY() >= 512
					&& chessManTake.getY() <= 569 && chessManTake.isVisible()) {
				Chap = true;
			}
		}
		// 可移动、并不能吃自己的棋子
		if (Chap
				&& chessMan.getName().charAt(1) != chessManTake.getName()
						.charAt(1)) {
			ChineseChessMainFrame.list.add(String.valueOf(3));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getName()
					.substring(2)));
			ChineseChessMainFrame.list.add(String.valueOf(2));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake
					.getName().substring(2)));
			chessManTake.setVisible(false);
			chessMan.setBounds(chessManTake.getX(), chessManTake.getY(), 55, 55);
		}
	}// 士、仕吃棋规则结束
 
	/** 将移动规则 */
	public void willRule(int Man, JLabel chessMan, JLabel[] chessman,
			MouseEvent me) {
		// 坐标
		int boardX = Math.round((float) (me.getX() - 24) / 57) * 57 + 24;
		int boardY = Math.round((float) (me.getY() - 56) / 57) * 57 + 56;
		if (boardY >= 56 && boardY <= 569 && boardX >= 24 && boardX <= 480) {
			// 上
			if (chessMan.getX() == boardX && chessMan.getY() - boardY == 57) {
				// 将不能超过自己的界限
				if (Man == 30 && boardY >= 56 && boardY <= 113) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 帅不能超过自己的界限
				else if (Man == 31 && boardY >= 455 && boardY <= 512) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 下
			else if (chessMan.getX() == boardX
					&& boardY - chessMan.getY() == 57) {
				// 将不能超过自己的界限
				if (Man == 30 && boardY >= 113 && boardY <= 170) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 帅不能超过自己的界限
				else if (Man == 31 && boardY >= 512 && boardY <= 569) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 左
			else if (chessMan.getY() == boardY
					&& chessMan.getX() - boardX == 57) {
				// 将不能超过自己的界限
				if (Man == 30 && boardX >= 195 && boardX <= 252) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 帅不能超过自己的界限
				else if (Man == 31 && boardX >= 195 && boardX <= 252) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
			// 右
			else if (chessMan.getY() == boardY
					&& boardX - chessMan.getX() == 57) {
				// 将不能超过自己的界限
				if (Man == 30 && boardX >= 252 && boardX <= 309) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
				// 帅不能超过自己的界限
				else if (Man == 31 && boardX >= 252 && boardX <= 309) {
					ChineseChessMainFrame.list.add(String.valueOf(1));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getX()));
					ChineseChessMainFrame.list.add(String.valueOf(chessMan
							.getY()));
					ChineseChessMainFrame.list.add(String.valueOf(Man));
					chessMan.setBounds(boardX, boardY, 55, 55);
				}
			}
		}
	}// 将、帅移动规则结束
 
	/** 将吃棋规则 */
	public void willRule(int Man, JLabel chessMan, JLabel chessManTake,
			JLabel[] chessman) {
		// 当前状态
		boolean will = false;
		int count = 0;
 
		if (chessMan.getX() == chessManTake.getX()
				&& chessMan.getName().charAt(0) == '将'
				&& chessManTake.getName().charAt(0) == '将') {
			for (int i = 0; i < chessman.length; i++) {
				if (chessman[i].getX() == chessMan.getX()
						&& !chessman[i].getName().equals(chessMan.getName())
						&& !chessman[i].getName()
								.equals(chessManTake.getName())
						&& chessman[i].isVisible()) {
					count++;
				}
			}
			if (count == 0) {
				will = true;
			}
		}
		// 上
		else if (chessMan.getX() == chessManTake.getX()
				&& chessMan.getY() - chessManTake.getY() == 57) {
 
			// 将不能超过自己的界限
			if (Man == 30 && chessManTake.getY() >= 56
					&& chessManTake.getY() <= 113) {
				will = true;
			}
			// 帅不能超过自己的界限
			else if (Man == 31 && chessManTake.getY() >= 455
					&& chessManTake.getY() <= 512) {
				will = true;
			}
		}
		// 下
		else if (chessMan.getX() == chessManTake.getX()
				&& chessManTake.getY() - chessMan.getY() == 57) {
			// 将不能超过自己的界限
			if (Man == 30 && chessManTake.getY() >= 113
					&& chessManTake.getY() <= 170) {
				will = true;
			}
			// 帅不能超过自己的界限
			else if (Man == 31 && chessManTake.getY() >= 512
					&& chessManTake.getY() <= 569) {
				will = true;
			}
		}
		// 左
		else if (chessMan.getY() == chessManTake.getY()
				&& chessMan.getX() - chessManTake.getX() == 57) {
			// 将不能超过自己的界限
			if (Man == 30 && chessManTake.getX() >= 195
					&& chessManTake.getX() <= 252) {
				will = true;
			}
			// 帅不能超过自己的界限
			else if (Man == 31 && chessManTake.getX() >= 195
					&& chessManTake.getX() <= 252) {
				will = true;
			}
		}
		// 右
		else if (chessMan.getY() == chessManTake.getY()
				&& chessManTake.getX() - chessMan.getX() == 57) {
			// 将不能超过自己的界限
			if (Man == 30 && chessManTake.getX() >= 252
					&& chessManTake.getX() <= 309) {
				will = true;
			}
			// 帅不能超过自己的界限
			else if (Man == 31 && chessManTake.getX() >= 252
					&& chessManTake.getX() <= 309) {
				will = true;
			}
		}
		if (will
				&& chessMan.getName().charAt(1) != chessManTake.getName()
						.charAt(1)) {
			ChineseChessMainFrame.list.add(String.valueOf(3));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessMan.getName()
					.substring(2)));
			ChineseChessMainFrame.list.add(String.valueOf(2));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getX()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake.getY()));
			ChineseChessMainFrame.list.add(String.valueOf(chessManTake
					.getName().substring(2)));
			chessManTake.setVisible(false);
			chessMan.setBounds(chessManTake.getX(), chessManTake.getY(), 55, 55);
		}
	}// 将、帅吃棋规则结束
 
}

以上就是Java+Swing实现中国象棋游戏的详细内容,更多关于Java Swing象棋的资料请关注脚本之家其它相关文章!

相关文章

  • java利用easyexcel实现导入与导出功能

    java利用easyexcel实现导入与导出功能

    这篇文章主要介绍了java利用easyexcel实现导入与导出功能,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-09-09
  • Maven项目外部jar包导入的实现示例

    Maven项目外部jar包导入的实现示例

    在Maven项目里,我们经常需要导入jar包依赖,本文主要介绍了Maven项目外部jar包导入的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • 手把手教你如何用JAVA连接MYSQL(mysql-connector-j-8.0.32.jar)

    手把手教你如何用JAVA连接MYSQL(mysql-connector-j-8.0.32.jar)

    这篇文章主要介绍了关于如何用JAVA连接MYSQL(mysql-connector-j-8.0.32.jar)的相关资料,文中通过图文介绍的非常详细,对大家学习或者使用MySQL具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01
  • java编程几行代码实现买菜自由

    java编程几行代码实现买菜自由

    这篇文章主要为大家介绍了java编程几行代码实现买菜自由,需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Java 实现简单Socket 通信的示例

    Java 实现简单Socket 通信的示例

    这篇文章主要介绍了Java 实现简单Socket 通信的示例,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03
  • java文件上传至ftp服务器的方法

    java文件上传至ftp服务器的方法

    这篇文章主要为大家详细介绍了java文件上传至ftp服务器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • java数据结构与算法之快速排序详解

    java数据结构与算法之快速排序详解

    这篇文章主要介绍了java数据结构与算法之快速排序,结合实例形式详细分析了快速排序的原理、实现步骤、相关操作技巧与注意事项,需要的朋友可以参考下
    2017-05-05
  • java枚举转list通用类过程

    java枚举转list通用类过程

    文章介绍了如何将Java枚举类型转换为List<Map<String, Object>>的通用类,该类可以实现枚举到列表的转换,并且示例了使用方法
    2025-03-03
  • Springboot+Hutool自定义注解实现数据脱敏

    Springboot+Hutool自定义注解实现数据脱敏

    我们在项目中会处理敏感数据时,通常需要对这些数据进行脱敏,本文主要使用了Springboot整合Hutool来自定义注解实现数据脱敏,感兴趣的可以理解下
    2023-10-10
  • collection集合体系与并发修改异常的解决方法

    collection集合体系与并发修改异常的解决方法

    今天小编就为大家分享一篇关于collection集合体系与并发修改异常的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论