Java+Swing實(shí)現(xiàn)中國象棋游戲
一、系統(tǒng)介紹
1.開發(fā)環(huán)境
開發(fā)工具:Eclipse2021
JDK版本:jdk1.8
Mysql版本:8.0.13
2.技術(shù)選型
Java+Swing
3.系統(tǒng)功能
實(shí)現(xiàn)中國象棋游戲,開始游戲,悔棋,退出功能。
二、系統(tǒng)展示
1.首頁

2.紅旗走

3.黑棋走

三、部分代碼
ChineseCheseRule.java
package com.sjsq;
import java.awt.event.MouseEvent;
import javax.swing.JLabel;
/* 定義中國象棋規(guī)則的類 */
public class ChineseCheseRule {
/** 卒子的移動(dòng)規(guī)則 */
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) {
// 向下移動(dòng)
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);
}
// 向右移動(dòng),必須過河
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);
}
// 向左移動(dòng),必須過河
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 {
// 向上移動(dòng)
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);
}
// 向右移動(dòng),必須過河
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);
}
// 向左移動(dòng),必須過河
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);
}
}
}// 卒移動(dòng)結(jié)束
/** 卒吃棋規(guī)則 */
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);
}
}
}// 卒吃結(jié)束
/** 炮、車移動(dòng)規(guī)則 */
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;
// 起點(diǎn)和終點(diǎn)之間是否有棋子
int count = 0;
// 上、下移動(dòng)
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);
}
}
// 左、右移動(dòng)
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);
}
}
}// 炮、車移動(dòng)方法結(jié)束
/** 炮、車吃棋規(guī)則 */
public void cannonRule(int chess, JLabel chessMan, JLabel chessManTake,
JLabel[] chessman) {
// 起點(diǎn)和終點(diǎn)之間是否有棋子
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++;
}
}
}
}
// 起點(diǎn)和終點(diǎn)之間只有一個(gè)棋子是炮的規(guī)則、并不能吃自己的棋子
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);
}
// 起點(diǎn)和終點(diǎn)之間沒有棋子是車的規(guī)則、并不能吃自己的棋子
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);
}
}// 炮、車吃棋方法結(jié)束
/** 馬移動(dòng)規(guī)則 */
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;
}
}
// 可以移動(dòng)該棋子
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;
}
}
// 可以移動(dòng)該棋子
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;
}
}
// 可以移動(dòng)該棋子
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;
}
}
// 可以移動(dòng)該棋子
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;
}
}
// 可以移動(dòng)該棋子
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;
}
}
// 可以移動(dòng)該棋子
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;
}
}
// 可以移動(dòng)該棋子
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;
}
}
// 可以移動(dòng)該棋子
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);
}
}
}
}// 馬移動(dòng)結(jié)束
/** 馬吃棋規(guī)則 */
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);
}
}// 馬吃棋結(jié)束
/** 相移動(dòng)規(guī)則 */
public void elephantRule(int Man, JLabel chessMan, JLabel[] chessman,
MouseEvent me) {
// 坐標(biāo)和障礙
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);
}
}
}
}// 相移動(dòng)規(guī)則結(jié)束
/** 相、象吃棋規(guī)則 */
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);
}
}// 相、象吃棋規(guī)則結(jié)束
/** 士、仕移動(dòng)方法 */
public void chapRule(int Man, JLabel chessMan, JLabel[] chessman,
MouseEvent me) {
// 坐標(biāo)
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);
}
}
}
}// 士移動(dòng)規(guī)則結(jié)束
/** 士吃棋規(guī)則 */
public void chapRule(int Man, JLabel chessMan, JLabel chessManTake,
JLabel[] chessman) {
// 當(dāng)前狀態(tài)
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;
}
}
// 可移動(dòng)、并不能吃自己的棋子
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);
}
}// 士、仕吃棋規(guī)則結(jié)束
/** 將移動(dòng)規(guī)則 */
public void willRule(int Man, JLabel chessMan, JLabel[] chessman,
MouseEvent me) {
// 坐標(biāo)
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);
}
}
}
}// 將、帥移動(dòng)規(guī)則結(jié)束
/** 將吃棋規(guī)則 */
public void willRule(int Man, JLabel chessMan, JLabel chessManTake,
JLabel[] chessman) {
// 當(dāng)前狀態(tài)
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);
}
}// 將、帥吃棋規(guī)則結(jié)束
}以上就是Java+Swing實(shí)現(xiàn)中國象棋游戲的詳細(xì)內(nèi)容,更多關(guān)于Java Swing象棋的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java利用easyexcel實(shí)現(xiàn)導(dǎo)入與導(dǎo)出功能
這篇文章主要介紹了java利用easyexcel實(shí)現(xiàn)導(dǎo)入與導(dǎo)出功能,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-09-09
Maven項(xiàng)目外部jar包導(dǎo)入的實(shí)現(xiàn)示例
在Maven項(xiàng)目里,我們經(jīng)常需要導(dǎo)入jar包依賴,本文主要介紹了Maven項(xiàng)目外部jar包導(dǎo)入的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
手把手教你如何用JAVA連接MYSQL(mysql-connector-j-8.0.32.jar)
這篇文章主要介紹了關(guān)于如何用JAVA連接MYSQL(mysql-connector-j-8.0.32.jar)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01
Java 實(shí)現(xiàn)簡(jiǎn)單Socket 通信的示例
這篇文章主要介紹了Java 實(shí)現(xiàn)簡(jiǎn)單Socket 通信的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03
java數(shù)據(jù)結(jié)構(gòu)與算法之快速排序詳解
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之快速排序,結(jié)合實(shí)例形式詳細(xì)分析了快速排序的原理、實(shí)現(xiàn)步驟、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2017-05-05
Springboot+Hutool自定義注解實(shí)現(xiàn)數(shù)據(jù)脫敏
我們?cè)陧?xiàng)目中會(huì)處理敏感數(shù)據(jù)時(shí),通常需要對(duì)這些數(shù)據(jù)進(jìn)行脫敏,本文主要使用了Springboot整合Hutool來自定義注解實(shí)現(xiàn)數(shù)據(jù)脫敏,感興趣的可以理解下2023-10-10
collection集合體系與并發(fā)修改異常的解決方法
今天小編就為大家分享一篇關(guān)于collection集合體系與并發(fā)修改異常的解決方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03

