网页游戏-泡泡龙
*{padding:0px;margin:0px}
hr{width:2px;height:2px;}
#a{width:502px;height:602px;border:1px solid #000;position:absolute;left:50px;top:50px;}
#a div,hr,span{position:absolute;}
function aa(id){
this.time=null;
this.id=document.getElementById(id);
this.r=25;
this.w=500;
this.h=600;
this.idd=null;
this.ar=new Array();
this.v=270;
this.color=new Array("#00ff00","#0000ff","#ff0000","#854521");
this.x=this.w/2;
this.y=this.h-this.r;
var txt="";
this.c=null;
this.n=0;
this.jo=0;
for(i=0;i<50;i++){
txt+="
";
}
this.id.innerHTML+=""+txt+"";
}
aa.prototype.add=function(){
var txt="";
this.c=Math.ceil(Math.random()*4)-1;
for(i=0;i<360;i++){
txt+="
";
}
this.id.innerHTML+="
"+txt+"";
this.idd=this.id.getElementsByTagName("div")[this.ar.length];
}
aa.prototype.go=function(){
var tt=true;
var objthis=this;
var u=(Math.cos(Math.PI*this.v/180)*4)/(Math.sin(Math.PI*this.v/180)*4);
this.x=this.x+Math.cos(Math.PI*this.v/180)*3;
this.y=this.y+Math.sin(Math.PI*this.v/180)*3;
if(this.x
if(this.x>this.w-this.r){this.y=this.y+(this.w-this.r-this.x)/u;this.x=this.w-this.r;this.v=360-this.v+180}
if(this.y
this.y=this.r;
var tt=false;
}
this.idd.style.left=this.x+"px";
this.idd.style.top=this.y+"px";
if(tt){
if(this.tf()){
setTimeout(function(){objthis.go()},1);
}else{
this.ti();
}
}else{
this.ggg();
}
}
aa.prototype.ggg=function(){
this.v=270;
this.ar.push(new Array(this.x,this.y,this.c));
this.x=this.w/2;
this.y=this.h-this.r;
this.c=Math.ceil(Math.random()*4)-1;
this.sz();
this.hh();
this.add();
}
aa.prototype.sz=function(){
var j=new Array();
for(i=0;i
for(var a=i+1;a
if(this.ar[i][2]==this.ar[a][2]){
var xv=this.ar[a][0]-this.ar[i][0];
var yv=this.ar[a][1]-this.ar[i][1];
if(Math.sqrt(xv*xv+yv*yv)<=this.r*2+1){j.push(new Array(i,a));}
}
}
}
if(j.length>1){this.uo(j)};
}
aa.prototype.hi=function(a){
if(this.x==this.w/2 && this.y==this.h-this.r){
if(a==37){
this.v-=1;
if(this.v==190){this.v++}
this.hh();
}else if(a==39){
this.v+=1;
this.hh();
if(this.v==350){this.v--}
}else if(a==38){this.go()}
}
}
aa.prototype.hh=function(){
var o=this.id.getElementsByTagName("span")[0].getElementsByTagName("hr");
for(i=0;i<50;i++){
o[i].style.left=Math.cos(Math.PI*this.v/180)*i+"px";
o[i].style.top=Math.sin(Math.PI*this.v/180)*i+"px";
}
}
aa.prototype.tf=function(a){
for(i=0;i
if(arguments.length==1){if(arguments[0]==i){continue;}}
var xv=this.ar[i][0]-this.x;
var yv=this.ar[i][1]-this.y;
if(Math.sqrt(xv*xv+yv*yv)<=this.r*2+1){
this.n=i;
return false;
}
}
return true;
}
aa.prototype.ti=function(){
var xv=this.ar[this.n][0]-this.x;
var yv=this.ar[this.n][1]-this.y;
var d=Math.acos(xv/Math.sqrt(xv*xv+yv*yv))*180/Math.PI*-1;
var c=this.v-d;
this.jo=Math.sin(Math.PI*c/180)*80;
var c=180+this.v-c;
this.oo(c);
}
aa.prototype.oo=function(a){
var objthis=this;
var c=a-this.jo*0.1;
this.jo=this.jo-this.jo*0.1;
this.x=Math.cos(c*Math.PI/180)*this.r*2+this.ar[this.n][0];
this.y=Math.sin(c*Math.PI/180)*this.r*2+this.ar[this.n][1];
this.idd.style.left=this.x+"px";
this.idd.style.top=this.y+"px";
if(this.tf(this.n)){
if(Math.abs(this.jo)<0.1){
this.jo=0;
this.hd(c);
}else{
setTimeout(function(){objthis.oo(c)},10);
}
}else{this.ggg();}
}
aa.prototype.hd=function(a){
var objthis=this;
var v=(90-a)*0.05;
this.jo+=v;
this.jo*=0.95;
var c=a+this.jo;
this.x=Math.cos(c*Math.PI/180)*this.r*2+this.ar[this.n][0];
this.y=Math.sin(c*Math.PI/180)*this.r*2+this.ar[this.n][1];
this.idd.style.left=this.x+"px";
this.idd.style.top=this.y+"px";
if(this.tf(this.n)){
if(Math.abs(this.jo)>0.01){
setTimeout(function(){objthis.hd(c)},10);
}else{this.ggg()}
}else{this.ggg();}
}
aa.prototype.uo=function(a){
var av=new Array(a.shift());
while(a.length!=0){
var tt=true;
for(ii=0;ii
if(this.ino(av[ii],a[0][0])){
if(this.ino(av[ii],a[0][1])){}else{av[ii].push(a[0][1]);}
a.shift();
tt=false;
}else if(this.ino(av[ii],a[0][1])){
av[ii].push(a[0][0]);
a.shift();
tt=false;
}
}
if(tt){av.push(a.shift())};
}
var obj=new Array();
var va=new Array();
for(i=0;i
if(av[i].length>=3){
for(ii=0;ii
obj.push(this.id.getElementsByTagName("div")[av[i][ii]]);
va.push(av[i][ii]);
}
}
}
var ooo=new Array();
for(i=0;i
obj[i].parentNode.removeChild(obj[i]);
}
for(i=0;i
var jjja=true;
for(ii=0;ii
if(va[ii]==i){jjja=false;}
}
if(jjja){ooo.push(this.ar[i])}
}
this.ar=ooo;
}
aa.prototype.ino=function(a,c){
for(i=0;i
if(a[i]==c){return true;}
}
return false;
}
var xa=new aa("a");
xa.add();