Java开了两个线程,用来控制2个小球,一个不起作用。大佬可以看看哪出问题了吗?


import java.awt.*;

public class Rebound{

public static void main(String args[]) {

Frame w=new Frame();

w.setSize(800, 800);

MyRebound p=new MyRebound();

w.add(p);

 

My b=new My();

    w.add(b);

 

             Thread t1=new Thread(p);

             Thread t2=new Thread(b);

               t1.start();

      t2.start();

      

     w.show();                

}

}

class MyRebound extends Panel implements Runnable{

     int x=(int)(Math.random()*800); 

     int y=(int)(Math.random()*800);

             int att=0;

public void paint(Graphics g) {

g.fillOval(x, y, 50, 50); 

}

public void run(){

      while(true) {

      //定义飞行姿态

      if(att==0) {

      x++;   

      y++;

     

      }

      if(att==1) {

      x--;

      y++;

   

      }

      if(att==2) {

      x--;

      y--;

   

      }

      if(att==3) {

      x++;

      y--;

     

      }

                       //改变飞行姿态

           if(x>730) {

           if (att==0) {

            att=1;

           }else {                                

            att=2;

       }

 }            

         if(y>700) {

         if(att==1) {

         att=2;

         }else {

         att=3;

         }

         }

         if(x<0) {

         if(att==2) {

         att=3;

         }else {

         att=0;

         }

         }

         if(y<0) {

         if(att==3) {

         att=0;

         }else {

         att=1;

         }

         }

   

         try {                                                

      Thread.sleep(5);                                 //线程休眠5毫秒

      }catch(Exception e) {}                              //异常处理

        repaint();  

      }   

}

}

//.........................................................................................

class My extends Panel implements Runnable{

int i=(int)(Math.random()*800); 

     int j=(int)(Math.random()*800);  

     int att=0;

public void paint(Graphics g) {

                    g.setColor(Color.yellow);

                g.drawOval(i ,j, 50, 50);

                }

public void run(){

      while(true) {

      //定义飞行姿态

    if(att==0) {

    i++;   

    j++;

   

    }

    if(att==1) {

  i--;

    j++;

 

    }

    if(att==2) {

    i--;

    j--;

 

    }

    if(att==3) {

    i++;

    j--;

   

    }

                     //改变飞行姿态

         if(i>730) {

         if (att


==0) {

          att=1;

         }else {                                

          att=2;

     }

}            

       if(j>700) {

       if(att==1) {

       att=2;

       }else {

       att=3;

       }

       }

       if(i<0) {

       if(att==2) {

       att=3;

       }else {

       att=0;

       }

       }

       if(j<0) {

       if(att==3) {

       att=0;

       }else {

       att=1;

       }

       }

 

       try {                                                

      Thread.sleep(5);                                 //线程休眠5毫秒

      }catch(Exception e) {}                              //异常处理

        repaint();  

      }       

}

}


瑾色羊
浏览 1163回答 3
3回答

牙牙学语1

感觉你像是没有对界面进行重绘吧~~,好久没看Swing了

qq_快乐

现在已经不用java写这种图形界面了,所以我不太了解,你其实可以不用学这种图形界面的

qq_快乐

现在已经不用java写这种图形界面了,所以我不太了解,你其实可以不用学这种图形界面的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java