您的位置:首页 > 其它

线程小球

2016-01-28 17:38 162 查看
线程小球也是这几天写的,就是让小球运动然后碰撞,通过这个程序来学习线程。

核心代码是运用线程判断小球碰撞和让小球碰撞

package BallThread;

public class BallThread extends Thread{
public int LocationX = 100,LocationY = 100;
public int r = 50 ;
public MyBall myball;
public int directX = 2,directY = 2;

public BallThread(MyBall myball){
this.myball = myball;
MyBall.list.add(this);
}
public BallThread(MyBall myball,int reLocationX,int reLocationY){
this.myball = myball;
this.LocationX = reLocationX;
this.LocationY = reLocationY;
}

public void run (){
while(true){
if(LocationX<=0||LocationX+r>=500){
directX = -(directX);
}
if(LocationY<=0||LocationY+r>=500){
directY = -(directY);
}
LocationX += directX;
LocationY += directY;
try {
this.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
//判断小球碰撞
for(int i=0;i<MyBall.list.size();i++){
BallThread bt = MyBall.list.get(i);//获取容器中的小球
if((this.LocationX-bt.LocationX)*(this.LocationX-bt.LocationX)+(this.LocationY-bt.LocationY)*(this.LocationY-bt.LocationY)<=(this.r+bt.r)){
this.directX = -(this.directX);
this.directY = -(this.directY);
bt.directX = -(bt.directX);
bt.directY = -(bt.directY);
}
}
myball.repaint();
}
}
public void setLocationX(int reLocationX){
LocationX = reLocationX;
}
public void setLocationY(int reLocationY){
LocationY = reLocationY;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: