Javaボール衝突

3324 ワード

小球衝突の鍵は小球が衝突したかどうかを判断することである:1.2つの小球の間隔が小球の直径より小さい場合に衝突が発生する.2.ボールがエッジに当たったときに衝突する.
import static org.junit.Assert.*;
import javax.swing.*
import org.junit.Test;
import java.awt.*;
import java.util.ArrayList;
import java.util.Scanner;
public class Draw {
    static int length;   //    
    static int[][] BallList;   //       0,1 x,y     3,4 X,Y    
    public static void main(String[] args){
        Draw draw=new Draw();
        System.out.println("      ");
        Scanner sc=new Scanner(System.in);
        length=sc.nextInt();
        BallList=new int[length][5];
        draw.addBall(length);
        JFrame frame=new JFrame();
        frame.setSize(1024, 768);
        frame.getContentPane().setBackground(Color.white);
        Draw.Ball w=new Draw.Ball();
        frame.add(w);
        Thread t=new Thread(w);
        t.start();
                frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    }
    public void addBall(int length1){   //        
        for(int i=0;i colo=new ArrayList(length);  //       
        int[][] juge=new int[length][2];   //          
        public Ball(){                //             
            for(int i=0;i1000) BallList[i][3]=0;  //           
                    if(BallList[i][1]>720) BallList[i][4]=0;
                    try{
                        Thread.sleep(1);
                    }catch(Exception ex){}
                    repaint();  
                }
                else if(BallList[i][3]!=1&&BallList[i][4]==1)
                {
                    BallList[i][0]--;BallList[i][1]++;
                    if(BallList[i][0]<10) BallList[i][3]=1;
                    if(BallList[i][1]>720) BallList[i][4]=0;
                    try{
                        Thread.sleep(1);
                    }catch(Exception ex){}
                    repaint();
                }
                else if(BallList[i][3]==1&&BallList[i][4]!=1){
                    BallList[i][0]++;
                    BallList[i][1]--;
                    if(BallList[i][0]>1000) BallList[i][3]=0;
                    if(BallList[i][1]<10) BallList[i][4]=1;
                    try{
                        Thread.sleep(1);
                    }catch(Exception ex){}
                    repaint();
                }
                else{
                    BallList[i][0]--;
                    BallList[i][1]--;
                    if(BallList[i][0]<10) BallList[i][3]=1;
                    if(BallList[i][1]<10) BallList[i][4]=1;
                    try{
                        Thread.sleep(1);
                    }catch(Exception ex){}
                    repaint();
                }
                for(int p=0;p