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);
}
}// 将、帅吃棋规则结束
}
四、其他
1.更多系统
JavaSwing系统系列实现
Java+JSP系统系列实现
Java+Servlet系统系列实现
Java+SSM系统系列实现
Java+SSH系统系列实现
Java+Springboot系统系列实现
Java+Springboot+H-ui+Maven实现营销管理系统
Java+Springboot+Bootstrap+Maven实现网上商城系统
Java+Springboot+Bootstrap+Maven实现景区旅游管理系统
1.更多JavaWeb系统请关注专栏。
2.更多JavaSwing系统请关注专栏。
2.源码下载
3.运行项目
请点击以下链接,部署你的项目。
4.备注
如有侵权请联系我删除。
5.支持博主
如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!
标签:中国象棋,Java,valueOf,list,getX,add,&&,Swing,ChineseChessMainFrame 来源: https://blog.csdn.net/helongqiang/article/details/122831725