m0_59818811 2021-09-24 10:35 采纳率: 90%
浏览 77
已结题

吃豆人无法同时绘制多个图案

//运行程序的类
public class GUI {
    public static void main(String[] args) {
        new Initialize();

    }
}
//gui窗体类
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Initialize implements Awt_Define{
    public Initialize() {
        jframe.setTitle("控件自动移动测试程序");
        jframe.setBounds(0, 0, 600, 600);
        jframe.setVisible(true);

        jframe.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        jframe.add(peason);
        thread_p.start();

        jframe.add(beans);
        thread_b.start();

    }
}
//吃豆人的人

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class Peason extends Canvas implements Runnable, Awt_Define{
        int x=0,y=0;
        int a=0,b=0;
        Graphics g ;

        @Override
        public void run() {
            g = getGraphics();
            while(true) {
                try {
                    Thread.sleep(1000);//通过控制休眠速度以临时解决闪烁问题
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                this.update(g);
                peason.requestFocus();
                peason.addKeyListener(new KeyAdapter() {
                    @Override
                    public void keyPressed(KeyEvent e) {
                        if (e.getKeyCode() == KeyEvent.VK_DOWN ||
                                e.getKeyCode() == KeyEvent.VK_UP ) {
                            a = 0;
                            if ((e.getKeyCode() == KeyEvent.VK_DOWN) )
                                b = 10;

                            else if((e.getKeyCode() == KeyEvent.VK_UP))
                                b = -10;
                        }

                        if (e.getKeyCode() == KeyEvent.VK_LEFT ||
                                e.getKeyCode() == KeyEvent.VK_RIGHT) {
                            b = 0;
                            if (e.getKeyCode() == KeyEvent.VK_LEFT)
                                a = -10;

                            else
                                a = 10;
                        }
//                        peason.paint(g);

                    }

                });

                g.setColor(Color.GREEN);
                g.fillRect(x+=a,y+=b, 20, 20);
                System.out.println("X = " + x +"y = " + y);

            }
        }

}
//豆子
import java.awt.*;

public class Beans extends Canvas implements Awt_Define,Runnable{

    @Override
    public void run() {
        int x,y;
        while (true){
            x = random.nextInt(550);
            y = random.nextInt(550);
            Graphics g = getGraphics();

            g.setColor(Color.CYAN);
            g.fillOval(x, y, 10, 10);

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            beans.update(g);
        }
    }
}

//继承接口
import javax.swing.*;
import java.awt.*;
import java.util.Random;

interface Awt_Define{

    JFrame jframe = new JFrame();
    Panel panel = new Panel();
    Peason peason = new Peason();
    Beans beans = new Beans();
    Random random = new Random();
    Thread thread_p = new Thread(peason);
    Thread thread_b = new Thread(beans);

}

问题:单独运行两个类(豆子和人)正常运行,但是现在无法实现两个类同时运行,使用多线程,只会画出一个类(豆子或人),请问应该如何解决

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-09-24 10:39
    关注

    你得两个一起画啊。画布只有一张,你现在两个完全独立,在画布上只能画一个,另一个就会被覆盖掉。你得在一张画布上同时画两个

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月15日
  • 已采纳回答 11月15日
  • 创建了问题 9月24日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)