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