private boolean isPaused = false;//添加一个标志位记录游戏是否暂停

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());//设置颜色
        // g.fillOval(xPos-Point.DIAMETER/2, yPos-Point.DIAMETER/2,
        //Point.DIAMETER, Point.DIAMETER);
        //g.drawImage(shadows, xPos-Point.DIAMETER/2, yPos-Point.DIAMETER/2, Point.DIAMETER, Point.DIAMETER, null);
        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);
        //标记最后一个棋子的红矩形框
        if(i==chessCount-1){//如果是最后一个棋子
            g.setColor(Color.red);
            g.drawRect(xPos-Point.DIAMETER/2, yPos-Point.DIAMETER/2,
                    34, 35);
        }
    }
}else{//如果游戏已暂停,绘制提示语
    Font font=new Font("黑体",Font.BOLD,20);
    g.setFont(font);
    g.setColor(Color.red);
    g.drawString("当前游戏处于暂停模式,请点击继续按钮继续游戏", 100, 300);
}

}

//添加暂停和继续按钮的事件监听 public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if (command.equals("暂停")) { isPaused = true;//将游戏状态标志置为暂停 } else if (command.equals("继续")) { isPaused = false;//将游戏状态标志置为继续 }

public void paintComponentGraphics g superpaintComponentg;画棋盘 int imgWidth= imggetWidththis; int imgHeight=imggetHeightthis;获得图片的宽度与高度 int FWidth=getWidth; int FHeig

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

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