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)) {

// 黑棋只能向下吃棋<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值