我的代码和图形无法正常工作为什么?

问题描述

我正在尝试与2位玩家进行LUDO游戏。我有4种方法-绘画,类构造函数,customPainting和main方法。问题在于这些棋子出现在棋盘上,但没有在其他地方被吸引。另外,如果可能的话,请给我一个思路,从上一点中删除典当图像。在绘画方法中,我为LUDO制作了一块木板。以下是课程字段。注意-这只是一个试用代码,不是我真正的代码。我已经复制粘贴并对其进行了一些编辑,因此请不要介意我的代码语法或那里的小错误。另外,我没有显示导入语句,所以请不要以为是问题。

public class Trial extends JPanel implements ActionListener{

    public JButton jButton1;
    public JButton jButton2;
    public JButton jButton3;
    int result;
    public JRadioButton rb1,rb2,rb3,rb4;
    BufferedImage imageblue1 = null;
    BufferedImage imageblue2 = null;
    BufferedImage imageblue3 = null;
    BufferedImage imageblue4 = null;
    BufferedImage imagegreen1 = null;
    BufferedImage imagegreen2 = null;
    BufferedImage imagegreen3 = null;
    BufferedImage imagegreen4 = null;
    Point[] bluePath;
    Point[] greenPath;
    int counter;
    
    public void paint(java.awt.Graphics g) {...}

类的构造函数在下面。

Trial(){
        setLayout(null);
        
        bluePath = new Point[57];
        bluePath[0] = new Point(286,600);
        bluePath[1] = new Point(286,555);
        bluePath[2] = new Point(286,510);
        bluePath[3] = new Point(286,465);
        bluePath[4] = new Point(286,420);
        bluePath[5] = new Point(241,375);

        // Green pawns' Path
        greenPath = new Point[57];
        greenPath[0] = new Point(371,61);
        greenPath[1] = new Point(371,106);
        greenPath[2] = new Point(371,151);
        greenPath[3] = new Point(371,196);
        greenPath[4] = new Point(371,241);
        greenPath[5] = new Point(416,286);

        try {
            setLayout(null);

            jButton1 = new JButton("Dice");
            jButton1.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (counter == 0 || counter == 2){
                        counter = 1;
                    } else {
                        counter = 2;
                    }
                    result = ((int) Math.round(Math.random() * 5)) + 1;
                    AttributedString atString = new AttributedString(String.valueOf(result));
                    getGraphics().drawString(atString.getIterator(),925,175);
                }
            });
            add(jButton1);

            jButton2 = new JButton("Clear Dice");
            jButton2.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    java.awt.Graphics gc = getGraphics();
                    gc.setColor(Color.white);
                    gc.fillRect(895,127,70,70);
                }
            });
            add(jButton2);

            // Blue Pawns
            imageblue1 = ImageIO.read(new File("C:\\Ludo Program\\src\\com\\company\\Blue1.PNG"));
            imageblue2 = ImageIO.read(new File("C:\\Ludo Program\\src\\com\\company\\Blue2.PNG"));
            imageblue3 = ImageIO.read(new File("C:\\Ludo Program\\src\\com\\company\\Blue3.PNG"));
            imageblue4 = ImageIO.read(new File("C:\\Ludo Program\\src\\com\\company\\Blue4.PNG"));

            // Green Pawns
            imagegreen1 = ImageIO.read(new File("C:\\Ludo Program\\src\\com\\company\\Green1.PNG"));
            imagegreen2 = ImageIO.read(new File("C:\\Ludo Program\\src\\com\\company\\Green2.PNG"));
            imagegreen3 = ImageIO.read(new File("C:\\Ludo Program\\src\\com\\company\\Green3.PNG"));
            imagegreen4 = ImageIO.read(new File("C:\\Ludo Program\\src\\com\\company\\Green4.PNG"));

            rb1 = new JRadioButton("ONE");
            rb2 = new JRadioButton("TWO");
            rb3 = new JRadioButton("THREE");
            rb4 = new JRadioButton("FOUR");

            ButtonGroup bgroup = new ButtonGroup();
            bgroup.add(rb1);
            bgroup.add(rb2);
            bgroup.add(rb3);
            bgroup.add(rb4);
            jButton3 = new JButton("Move");
            jButton3.setBounds(875,525,125,50);
            add(rb1);
            add(rb2);
            add(rb3);
            add(rb4);
            add(jButton3);

            jButton3.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (rb1.isSelected()){
                        if (counter == 1){
                            customPainting("blue",getGraphics());
                        } else {
                            customPainting("green",getGraphics());
                        }
                    } else if (rb2.isSelected()){

                    }else if (rb3.isSelected()){

                    }else if (rb4.isSelected()){

                    }
                }
            });

        } catch (Exception e){
            e.printStackTrace();
        }
    }

customPainting方法在下面。

public void customPainting(String colorname,java.awt.Graphics g){
        super.paintComponent(g);
        if (colorname == "blue"){
            g.drawImage(imageblue1,bluePath[result - 1].x,bluePath[result - 1].y,this);
        } else if (colorname == "green"){
            g.drawImage(imagegreen1,greenPath[result - 1].x,greenPath[result - 1].y,this);
        }
        paint(g);
        Trial();
    }

下面是主要方法的最后一种方法。

public static void main(String[] args) {
        JFrame frame = new JFrame("LUDO");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final Trial trialObject = new Trial();
        frame.add(trialObject);
        frame.setSize(1186,750);
        frame.setResizable(false);
        frame.setVisible(true);
    }

我是初学者。因此,任何帮助都会对我有很大帮助。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)