var ax=new Array();
var ay=new Array();
var bx=new Array();
var by=new Array();
var a=new Array();
var b=new Array();
function sample() {
var timer;
var delay = 1000;
var sub=new ex();
sub.faststep();
a=sub.a;
b=sub.b;
ax=sub.ax;
bx=sub.bx;
ay=sub.ay;
by=sub.by;
var loop = function () {
var sub2=new ex();
sub2.a=a;
sub2.b=b;
sub2.ax=ax;
sub2.bx=bx;
sub2.ay=ay;
sub2.by=by;
sub2.move_a();
a=sub2.a;
ax=sub2.ax;
ay=sub2.ay;
var sub3=new ex();
sub3.a=a;
sub3.b=b;
sub3.ax=ax;
sub3.bx=bx;
sub3.ay=ay;
sub3.by=by;
sub3.move_b();
b=sub3.b;
bx=sub3.bx;
by=sub3.by;
paint();
clearTimeout(timer);
timer = setTimeout(loop, delay);
}
loop();
}
function paint(){
var sub3=new svgpaint();
str="<svg width=\"500\" height=\"500\">";
for(s=1;s<11;s++){
x1=ax[s];
y1=ay[s];
if(a[s]>50)str=str+sub3.rect(50*x1-50,500-50*y1,50,50,"red");
}
for(s=1;s<11;s++){
x1=bx[s];
y1=by[s];
if(b[s]>50)str=str+sub3.rect(50*x1-50,500-50*y1,50,50,"blue");
}
str=str+"</svg>";
$("#memo").html(str);
}
class ex{
ax:number[]=new Array();
ay:number[]=new Array();
bx:number[]=new Array();
by:number[]=new Array();
b:number[]=new Array();
a:number[]=new Array();
dx:number;
dy:number;
faststep():void{
var s:number;
for(s=1;s<11;s++){
this.a[s]=100;
this.b[s]=100;
this.ay[s]=1;
this.ax[s]=s;
this.by[s]=10;
this.bx[s]=s;
}
}
move_a():void{
var s,x1,y1,ch:number;
for(s=1;s<11;s++){
this.dir();
x1=this.ax[s]+this.dx;
y1=this.ay[s]+this.dy;
ch=this.check_a(x1,y1);
if(ch<50)this.ay[s]=y1;
if(ch<50)this.ax[s]=x1;
alert(ch+","+x1+","+y1);
}
}
move_b():void{
var s,r,h,sxs:number;
var rank:number[]=new Array();
var beta:number[]=new Array();
var ch:number[]=new Array();
var maxa,maxb:number;
for(r=1;r<11;r++){
ch[r]=0;
}
for(r=1;r<11;r++){
maxa=0;
sxs=0;
for(s=1;s<11;s++){
h=0;
if(this.ay[s]>maxa)h=h+1;
if(ch[s]<50)h=h+1;
if(h==2)maxa=this.ay[s];
if(h==2)sxs=s;
}
ch[sxs]=0;
rank[r]=sxs;
}
for(r=1;r<11;r++){
ch[r]=0;
}
var e1,s1,x1,y1,sx:number;
for(r=1;r<11;r++){
maxb=10000;
sxs=0;
s1=rank[r];
x1=this.ax[s1];
y1=this.ay[s1];
for(s=1;s<11;s++){
h=0;
e1=(x1-this.bx[s])*(x1-this.bx[s])+(y1-this.by[s])*(y1-this.by[s])
if(e1<maxb)h=h+1;
if(ch[s]<50)h=h+1;
if(h==2)maxb=e1;
if(h==2)sxs=s;
}
ch[sxs]=0;
beta[s1]=sxs;
}
var xs,ys,x2,y2,x3,x4,y3,y4,maxd:number;
maxd=5000;
for(s=1;s<11;s++){
sx=beta[s];
x1=this.bx[sx]+1;
y1=this.by[sx];
e1=(x1-this.ax[s])*(x1-this.ax[s])+(y1-this.ay[s])*(y1-this.ay[s]);
if(e1<maxd)xs=x1;
if(e1<maxd)ys=y1;
if(e1<maxd)maxd=e1;
x1=this.bx[sx]-1;
y1=this.by[sx];
e1=(x1-this.ax[s])*(x1-this.ax[s])+(y1-this.ay[s])*(y1-this.ay[s]);
if(e1<maxd)xs=x1;
if(e1<maxd)ys=y1;
if(e1<maxd)maxd=e1;
x1=this.bx[sx];
y1=this.by[sx]+1;
e1=(x1-this.ax[s])*(x1-this.ax[s])+(y1-this.ay[s])*(y1-this.ay[s]);
if(e1<maxd)xs=x1;
if(e1<maxd)ys=y1;
if(e1<maxd)maxd=e1;
x1=this.bx[sx];
y1=this.by[sx]-1;
e1=(x1-this.ax[s])*(x1-this.ax[s])+(y1-this.ay[s])*(y1-this.ay[s])
if(e1<maxd)xs=x1;
if(e1<maxd)ys=y1;
if(e1<maxd)maxd=e1;
if(this.check_a(xs,ys)<50)this.bx[sx]=xs;
if(this.check_a(xs,ys)<50)this.by[sx]=ys;
}
}
dir():void{
var n1,n2:number;
n1=4*Math.random();
n2=Math.floor(n1)+1;
this.dx=0;
this.dy=0;
if(n2==1)this.dx=1;
if(n2==1)this.dy=0;
if(n2==2)this.dx=-1;
if(n2==2)this.dy=0;
if(n2==3)this.dx=0;
if(n2==3)this.dy=1;
if(n2==4)this.dx=0;
if(n2==4)this.dy=-1;
}
check_a(px:number,py:number):number{
var sx,y1,ch,h:number;
ch=0;
for(sx=1;sx<11;sx++){
h=0;
if(this.bx[sx]==px)h=h+1;
if(this.by[sx]==py)h=h+1;
if(this.b[sx]>50)h=h+1;
if(h==3)ch=100;
}
for(sx=1;sx<11;sx++){
h=0;
if(this.ax[sx]==px)h=h+1;
if(this.ay[sx]==py)h=h+1;
if(this.a[sx]>50)h=h+1;
if(h==3)ch=100;
}
if(px<1)ch=100;
if(py<1)ch=100;
if(px>10)ch=100;
if(py>10)ch=100;
return ch;
}
}
最終更新:2016年11月18日 04:34