/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class Binfo{
double v, dv, rad, drad, r;
Binfo(double v, double dv, double rad, double drad,double r){
this.v=v;
this.dv=dv;
this.rad=rad;
this.drad=drad;
this.r=r;
}
}
class Ideone
{
{
ArrayList<Group> GroupList = new ArrayList<Group>();
Binfo Bi = new Binfo((double)2,(double)1,0,(double)0.001,(double)0);
GroupList.add(new GroupTest(Bi,10,10,8));
}
}
ArrayList<Bullet> BulletList= new ArrayList<Bullet>();
Binfo Bi;
}
class GroupTest
extends Group{
GroupTest(Binfo Bi,double bx,double by,int n){
super.Bi = Bi;
Binfo Bitemp;
int i;
for(i=0;i<n;i++){
Bullet btemp;
Bi.rad=((6.283184)/n)*i;
Bitemp = new Binfo(Bi.v,Bi.dv,Bi.rad,Bi.drad,Bi.r);
btemp = new Bullet(Btemp,bx,by);
this.BulletList.add(btemp);
System.
out.
println("recently "+i
+" "+this.
BulletList.
get(i
).
bBi.
rad); }
//여기까지 들어가는건 잘 들어가거든요
System.
out.
println("---------------------"); //근데 여길 지나친다음에
for(i=0;i<n;i++){
System.
out.
println("loaded "+i
+" "+this.
BulletList.
get(i
).
bBi.
rad); }
//출력하면 값이 통일되버림. 왜이러는거죠..
}
}
class Bullet{
Binfo bBi;
Binfo bBi_pure;
double x,y;
int count;
Bullet(Binfo GBi,double bx,double by){
System.
out.
println("called "+GBi.
rad); this.bBi=GBi;
this.bBi_pure=GBi;
this.x=bx;
this.y=by;
System.
out.
println("in "+this.
bBi.
rad); }
/*public void Action(){
this.x = this.x + this.Bi.v*Math.cos((double)this.Bi.rad);
this.y = this.y + this.Bi.v*Math.sin((double)this.Bi.rad);
this.Bi.rad += this.Bi.drad;
if(this.Bi.rad>6.283184) this.Bi.rad-=6.283184;
}
public boolean OutRange(){
if( this.x<0 || this.x>500 || this.y<0 || this.y>800) return true;
else return false;
}
public boolean Crash(double px,double py){
//do something;
return true;
}*/
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBCaW5mb3sKCWRvdWJsZSB2LCBkdiwgcmFkLCBkcmFkLCByOwoJQmluZm8oZG91YmxlIHYsIGRvdWJsZSBkdiwgZG91YmxlIHJhZCwgZG91YmxlIGRyYWQsZG91YmxlIHIpewoJCXRoaXMudj12OwoJCXRoaXMuZHY9ZHY7CgkJdGhpcy5yYWQ9cmFkOwoJCXRoaXMuZHJhZD1kcmFkOwoJCXRoaXMucj1yOwoJfQp9CgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJQXJyYXlMaXN0PEdyb3VwPiBHcm91cExpc3QgPSBuZXcgQXJyYXlMaXN0PEdyb3VwPigpOwoJCUJpbmZvIEJpID0gbmV3IEJpbmZvKChkb3VibGUpMiwoZG91YmxlKTEsMCwoZG91YmxlKTAuMDAxLChkb3VibGUpMCk7CgkJR3JvdXBMaXN0LmFkZChuZXcgR3JvdXBUZXN0KEJpLDEwLDEwLDgpKTsKCX0KfQoKY2xhc3MgR3JvdXB7CglBcnJheUxpc3Q8QnVsbGV0PiBCdWxsZXRMaXN0PSBuZXcgQXJyYXlMaXN0PEJ1bGxldD4oKTsKCUJpbmZvIEJpOwoJCn0KY2xhc3MgR3JvdXBUZXN0IGV4dGVuZHMgR3JvdXB7CgkKCUdyb3VwVGVzdChCaW5mbyBCaSxkb3VibGUgYngsZG91YmxlIGJ5LGludCBuKXsKCQkKCQlzdXBlci5CaSA9IEJpOwoJCUJpbmZvIEJpdGVtcDsKCQlpbnQgaTsKCQoJCWZvcihpPTA7aTxuO2krKyl7CgkJCUJ1bGxldCBidGVtcDsKCQkJQmkucmFkPSgoNi4yODMxODQpL24pKmk7CgkJCQoJCQlCaXRlbXAgPSBuZXcgQmluZm8oQmkudixCaS5kdixCaS5yYWQsQmkuZHJhZCxCaS5yKTsKCQkJYnRlbXAgPSBuZXcgQnVsbGV0KEJ0ZW1wLGJ4LGJ5KTsKCQkJdGhpcy5CdWxsZXRMaXN0LmFkZChidGVtcCk7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigicmVjZW50bHkgIitpKyIgIit0aGlzLkJ1bGxldExpc3QuZ2V0KGkpLmJCaS5yYWQpOwoJCX0KCQkKCQkvL+yXrOq4sOq5jOyngCDrk6TslrTqsIDripTqsbQg7J6YIOuTpOyWtOqwgOqxsOuToOyalAoJCQoJCVN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CgkJLy/qt7zrjbAg7Jes6ri4IOyngOuCmOy5nOuLpOydjOyXkAoJCQoJCWZvcihpPTA7aTxuO2krKyl7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigibG9hZGVkICIraSsiICIrdGhpcy5CdWxsZXRMaXN0LmdldChpKS5iQmkucmFkKTsKCQl9CgkJCgkJLy/stpzroKXtlZjrqbQg6rCS7J20IO2GteydvOuQmOuyhOumvC4g7Jmc7J2065+s64qU6rGw7KOgLi4KCQkKCQkKCX0KfQoKY2xhc3MgQnVsbGV0ewoJQmluZm8gYkJpOwoJQmluZm8gYkJpX3B1cmU7Cglkb3VibGUgeCx5OwoJaW50IGNvdW50OwoJCglCdWxsZXQoQmluZm8gR0JpLGRvdWJsZSBieCxkb3VibGUgYnkpewoJCVN5c3RlbS5vdXQucHJpbnRsbigiY2FsbGVkICIrR0JpLnJhZCk7CgkJdGhpcy5iQmk9R0JpOwoJCXRoaXMuYkJpX3B1cmU9R0JpOwoJCXRoaXMueD1ieDsKCQl0aGlzLnk9Ynk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJpbiAiK3RoaXMuYkJpLnJhZCk7Cgl9CgkKCS8qcHVibGljIHZvaWQgQWN0aW9uKCl7CgkJdGhpcy54ID0gdGhpcy54ICsgdGhpcy5CaS52Kk1hdGguY29zKChkb3VibGUpdGhpcy5CaS5yYWQpOwoJCXRoaXMueSA9IHRoaXMueSArIHRoaXMuQmkudipNYXRoLnNpbigoZG91YmxlKXRoaXMuQmkucmFkKTsKCQl0aGlzLkJpLnJhZCArPSB0aGlzLkJpLmRyYWQ7CgkJaWYodGhpcy5CaS5yYWQ+Ni4yODMxODQpIHRoaXMuQmkucmFkLT02LjI4MzE4NDsKCX0KCQoJcHVibGljIGJvb2xlYW4gT3V0UmFuZ2UoKXsKCQlpZiggdGhpcy54PDAgfHwgdGhpcy54PjUwMCB8fCB0aGlzLnk8MCB8fCB0aGlzLnk+ODAwKSByZXR1cm4gdHJ1ZTsKCQllbHNlIHJldHVybiBmYWxzZTsKCX0KCQoJcHVibGljIGJvb2xlYW4gQ3Jhc2goZG91YmxlIHB4LGRvdWJsZSBweSl7CgkJLy9kbyBzb21ldGhpbmc7CgkJcmV0dXJuIHRydWU7Cgl9Ki8KCn0=