网站首页 手机版
 注册 登录
您现在的位置: 畅无忧设计 >> 网页特效 >> 网页游戏 >> 正文
最新文章
· JS重现儿时经典美女拼图游戏
· 在线俄罗斯方块网页游戏程序
· JavaScript编写的打砖块网页游戏
· JavaScript实现碰壁反弹效果
· JavaScript 过河游戏
· 网页中的赛车游戏
· 蚁群算法js版
· 劲舞团练习工具
热门文章
 JavaScript编写的打砖块网页游戏
 JavaScript实现碰壁反弹效果
 蚁群算法js版
 JS重现儿时经典美女拼图游戏
 劲舞团练习工具
 JavaScript 过河游戏
 网页中的赛车游戏
 在线俄罗斯方块网页游戏程序
相关文章
没有相关文章
蚁群算法js版
来源:轩魂国度 更新时间:2009/5/13 9:58:01 阅读次数: 我要投稿
△运行 ☉预览 #复制 +收藏
特效代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>蚁群算法js版</title>
<style>
.ant{
position:absolute;
background-color:#000000;
overflow:hidden;
width:2px;
height:2px;
}
.food{
position:absolute;
background-color:#0000ff;
overflow:hidden;
width:2px;
height:2px;
}
.nest{
position:absolute;
background-color:#ff0000;
overflow:hidden;
width:2px;
height:2px;
}
</style>
<script type="text/JavaScript">
//============================
//系统参数初始化
//----------------------------
//生命体数量与轨迹长度
Unit=10;Path=30;
//生命体速度上下限
v0=2;vM=10;
//生命体加速度变化范围
Kr=0.1;Kv=0.1*(vM-v0);
//生命体运动范围
x0=0;xM=document.documentElement.clientWidth;
y0=0;yM=document.documentElement.clientHeight;
//生命体出生地(巢穴)
xi0=x0+(xM-x0)*Math.random();
yi0=y0+(yM-y0)*Math.random();
str0='<div class="ant" style="left:'+xi0+';top:'+yi0+';"></div>';
//食物所在地
xf=x0+(xM-x0)*Math.random();
yf=y0+(yM-y0)*Math.random();
//气味感知范围
R_2=5*5;
//============================
var r=new Array();
var v=new Array();
var dr=new Array();
var dv=new Array();
var x=new Array();
var y=new Array();
var life=new Array();

//单击暂停
var xi0,yi0,xf,yf;
var Time0,str0;
window.status='pause';
function document.onclick(){
 if(window.status=='pause'){
  window.status=0;
  nest.style.left=xi0;
  nest.style.top=yi0;
  food.style.left=xf;
  food.style.top=yf;
  //测试初始化时间用
  Time0=(new Date()).getTime();
  init(0);
 }else{
  window.status='pause';
 }
}
//窗口大小调整后刷新页面以调整系统参数
function window.onresize(){
// window.location.href=document.location;
}
//初始化函数
function init(i){
 if(window.status!='pause'&&i<Unit){
  if(!life[i]){
   document.body.appendChild(life[i]=document.createElement(str0));
   x[i]=xi0;
   y[i]=yi0;
   r[i]=Math.random();
   v[i]=1/Math.random();
   dr[i]=Kr*Math.random();
   dv[i]=Kv*Math.random();
  }
  Move(i);
  window.status=i+1;
  setTimeout('init('+(i+1)+')',i);
// }else{
//  alert('生成耗时:'+((new Date()).getTime()-Time0)+'ms');
 }
}
//运动函数
Total=Unit*Path;
P2=2*Math.PI;
function Move(i){
 if(window.status!='pause'){
  k=i%Unit;
  X=x[k];
  Y=y[k];
  R=r[k];
  V=v[k];  
  if(!life[i]){
   str='<div class="ant" style="left:'+X+';top:'+Y+';"></div>';
   document.body.appendChild(life[i]=document.createElement(str));
  }
  obj=life[i];
  R+=dr[k]*(2*Math.random()-1);
  V+=dv[k]*(2*Math.random()-1);
  X+=Math.sin(P2*R)*V;
  Y+=Math.cos(P2*R)*V;
  //遇到食物原路返回并减小角度变化
  distance=(X-xf)*(X-xf)+(Y-yf)*(Y-yf);
  if(distance<R_2){
   R+=0.5;
   r[i]/=2;
   v[i]*=2;
  }
  distance=(X-xi0)*(X-xi0)+(Y-yi0)*(Y-yi0);
  if(distance<R_2){
   R+=0.5;
   r[i]/=2;
   v[i]*=2;
  }
  /*----------------------------------
  /*================================*/
  //碰撞边界反弹
  R=(X<x0||X>xM)?-R:R;
  R=(Y<y0||Y>yM)?0.5-R:R;
  X=x[k]+Math.sin(P2*R)*V;
  Y=y[k]+Math.cos(P2*R)*V;
  /*================================*/
  //溢出边界重生(类似流星效果)
  if(X<x0||X>xM||Y<y0||Y>yM){
   X=xi0;
   Y=yi0;
  }
  /*----------------------------------
  /*================================*/
  //边界限制
  x[k]=X=(X<x0)?x0:(X>xM)?xM-2:X;
  y[k]=Y=(Y<y0)?y0:(Y>yM)?yM-2:Y;
  r[k]=R>1?R-1:R<0?R+1:R;
  v[k]=V=(V<v0)?v0:((V<vM)?V:vM);
  /*================================*/
   obj.style.left=x[k]=X;
  obj.style.top=y[k]=Y;
  setTimeout('Move('+(i+Unit)%Total+')',Unit);
 }
}

//根据浏览器自动加载动画
switch(navigator.appName.toLowerCase()){
 case "netscape":
  window.addEventListener("load",document.onclick,false);
 break;
 case "microsoft internet explorer":
 default:
  window.attachEvent("onload",document.onclick);
 break;
}
</script>
</head>
<body scroll="no">
<div id="food" class="food"></div>
<div id="nest" class="nest"></div>
</body>
</html>

△运行 ☉预览 #复制 +收藏
特效说明:
蚁群算法js版
  • 上一篇文章:
  • 下一篇文章:
  • 关于我们 - 联系我们 - 广告服务 - 在线投稿 - 友情链接 - 网站地图 - 版权声明
    CopyRight 2008-2010, CWYDESIGN.COM - 畅无忧设计, Inc. All Rights Reserved
    滇ICP备09005765号