Java 棋盘游戏:棋子绘制和点击事件处理

本文将介绍如何在Java中使用图形界面绘制棋盘并实现棋子点击事件处理。我们将使用一个二维数组来存储棋盘上的所有棋子,并使用Graphics对象来绘制棋子。

1. 棋盘初始化和棋子绘制

首先,我们需要创建一个二维数组来存储棋盘上的棋子:

Chess[][] allChess = new Chess[10][9];
Chess selectedChess = null; // 当前选中的棋子,默认为null
boolean isSide = true; // 默认红方开始

然后,在paint方法中绘制棋盘和棋子:

@Override
public void paint(Graphics g) {
    // 设置背景图片
    g.drawImage(Images.getImage(Constant.Bg), 0, 0, null);
    // 绘制棋子
    for (int i = 0; i < allChess.length; i++) {
        for (int j = 0; j < allChess[i].length; j++) {
            if (allChess[i][j] != null) {
                allChess[i][j].draw(g);
            }
        }
    }
    // 选中时的背景
    if (selectedChess != null) {
        selectedChess.drawChess(g);
    }
}

initChess方法中初始化所有棋子,并将其添加到二维数组allChess中:

private void initChess() {
    // 上方黑棋
    Chess blackCar1 = new Car(new Point(Constant.X, Constant.Y), Camp.黑方, Type.車);
    // ... 初始化其他棋子 ...
    // 添加黑棋
    allChess[0][0] = blackCar1;
    // ... 添加其他棋子 ...
    // 下方红棋
    Chess redCar1 = new Car(new Point(Constant.X, Constant.Y + Constant.shiftingX * 9), Camp.红方, Type.車);
    // ... 初始化其他棋子 ...
    // 添加红棋
    allChess[9][0] = redCar1;
    // ... 添加其他棋子 ...
}

2. 点击事件处理

start方法中添加鼠标点击事件监听器,处理棋子点击事件:

public void start() {
    addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            // 获取坐标位置
            int x = e.getX();
            int y = e.getY();
            // 获取下标位置
            int x1 = (y - Constant.Y) / Constant.shiftingX;
            int y1 = (x - Constant.X) / Constant.shiftingX;
            System.out.println("(" + x + "," + y + "),[" + x1 + "," + y1 + "]");
            // 创建数组,来判断点的是哪个棋子
            Chess clickChess = allChess[x1][y1];
            System.out.println(clickChess);
            // 下棋的逻辑
            if (clickChess != null) {
                // 判断是选子、吃子
                if (selectedChess == null) {
                    if (isSide == true && clickChess.getCamp() == Camp.红方 || isSide == false && clickChess.getCamp() == Camp.黑方) {
                        selectedChess = clickChess;
                    }
                }
            } else {
                // ...
            }
        }
    });
}

3. 边框绘制问题

如果棋子边框无法显示,可能是因为Chess类的draw方法没有包含绘制边框的代码。可以修改Chess类的draw方法,添加绘制边框的代码:

public void draw(Graphics g) {
    g.drawImage(image, point.x, point.y, null);
    g.setColor(Color.red); // 更改为所需的边框颜色
    g.drawRect(point.x, point.y, Constant.shiftingX, Constant.shiftingX); // 绘制边框
}

同样,也要确保selectedChess对象的drawChess方法也包含绘制边框的代码,以便在棋子被选中时也能显示边框。

总结

本文介绍了如何在Java中绘制棋盘和棋子,并处理棋子点击事件。通过使用二维数组和Graphics对象,我们可以轻松实现棋盘游戏的基本功能。此外,我们还针对边框绘制问题提供了解决方案,帮助读者解决常见的问题。

Java 棋盘游戏:棋子绘制和点击事件处理

原文地址: https://www.cveoy.top/t/topic/p9ve 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录