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 { /** 卒子的移動規(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) { // 向下移動 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); } } }// 卒移動結(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é)束 /** 炮、車移動規(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; // 上、下移動 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); } } }// 炮、車移動方法結(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é)束 /** 馬移動規(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; } } // 可以移動該棋子 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); } } } }// 馬移動結(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é)束 /** 相移動規(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); } } } }// 相移動規(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é)束 /** 士、仕移動方法 */ 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); } } } }// 士移動規(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; } } // 可移動、并不能吃自己的棋子 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é)束 /** 將移動規(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); } } } }// 將、帥移動規(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象棋的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JAVA中通過Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證
這篇文章主要介紹了JAVA中通過Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04MyBatis Map結(jié)果的Key轉(zhuǎn)為駝峰式
今天小編就為大家分享一篇關(guān)于MyBatis Map結(jié)果的Key轉(zhuǎn)為駝峰式,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12SpringBoot配置數(shù)據(jù)庫密碼加密的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot配置數(shù)據(jù)庫密碼加密的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Sharding JDBC讀寫分離實(shí)現(xiàn)原理及實(shí)例
這篇文章主要介紹了Sharding JDBC讀寫分離實(shí)現(xiàn)原理及實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12