Java+Swing实现中国象棋游戏

网友投稿 251 2022-08-29


Java+Swing实现中国象棋游戏

目录一、系统介绍1.开发环境2.技术选型3.系统功能二、系统展示三、部分代码

一、系统介绍

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 = MathPiWfW.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 &lhttp://t; 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象棋的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python判断字符串中包含某个字符的判断函数脚本(判断字符串是否包含某个字符串python)
下一篇:python生成ios固定代码模块脚本(仅供参考)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~