public void paintComponent(Graphics g) {
    super.paintComponent(g);//画棋盘
    int imgWidth = img.getWidth(this);
    int imgHeight = img.getHeight(this);//获得图片的宽度与高度
    int FWidth = getWidth();
    int FHeight = getHeight();//获得窗口的宽度与高度
    int x = (FWidth - imgWidth) / 2;
    int y = (FHeight - imgHeight) / 2;
    g.drawImage(img, x, y, null);
    for (int i = 0; i <= ROWS; i++) {//画横线
        for (int j = 0; j < COLS; j++) {
            g.drawLine(MARGIN, MARGIN + i * GRID_SPAN, MARGIN + COLS * GRID_SPAN, MARGIN + i * GRID_SPAN);
        }
    }
    //判断游戏是否暂停,如果暂停则不进行绘制
    if (!isPaused) {//如果游戏未暂停,进行绘制
        for (int i = 0; i <= COLS; i++) {//画竖线
            g.drawLine(MARGIN + i * GRID_SPAN, MARGIN, MARGIN + i * GRID_SPAN, MARGIN + ROWS * GRID_SPAN);
        }
        //画棋子
        for (int i = 0; i < chessCount; i++) {
            //网格交叉点x,y坐标
            int xPos = chessList[i].getX() * GRID_SPAN + MARGIN;
            int yPos = chessList[i].getY() * GRID_SPAN + MARGIN;
            g.setColor(chessList[i].getColor());//设置颜色
            colortemp = chessList[i].getColor();
            if (colortemp == Color.black) {
                RadialGradientPaint paint = new RadialGradientPaint(xPos - Point.DIAMETER / 2 + 25, yPos - Point.DIAMETER / 2 + 10, 20, new float[]{0f, 1f},
                        new Color[]{Color.WHITE, Color.BLACK});
                ((Graphics2D) g).setPaint(paint);
                ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT);
            } else if (colortemp == Color.white) {
                RadialGradientPaint paint = new RadialGradientPaint(xPos - Point.DIAMETER / 2 + 25, yPos - Point.DIAMETER / 2 + 10, 70, new float[]{0f, 1f},
                        new Color[]{Color.WHITE, Color.BLACK});
                ((Graphics2D) g).setPaint(paint);
                ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT);
            }
            Ellipse2D e = new Ellipse2D.Float(xPos - Point.DIAMETER / 2, yPos - Point.DIAMETER / 2, 34, 35);
            ((Graphics2D) g).fill(e);
            //标记最后一个棋子的红矩形框
        }
    }
}

public void actionPerformed(ActionEvent e) {
    if (e.getSource() == pauseBtn) {//点击了暂停按钮
        isPaused = true;//设置游戏状态为暂停
        JOptionPane.showMessageDialog(this, "游戏已暂停,请点击继续按钮继续游戏", "提示", JOptionPane.INFORMATION_MESSAGE);
    } else if (e.getSource() == resumeBtn) {//点击了继续按钮
        isPaused = false;//设置游戏状态为继续
        JOptionPane.showMessageDialog(this, "请继续下棋", "提示", JOptionPane.INFORMATION_MESSAGE);
    }
}

public void mouseClicked(MouseEvent e) {
    //判断游戏是否暂停,如果暂停则不进行下棋
    if (isPaused) {
        JOptionPane.showMessageDialog(this, "游戏已暂停,请点击继续按钮继续游戏", "提示", JOptionPane.INFORMATION_MESSAGE);
        return;
    }
    //下棋代码
    ...
}
Java Swing 棋盘游戏:绘制棋盘、棋子及暂停功能实现

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

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