js模拟电梯运行的例子

原创 2006年05月19日 15:14:00

=========dianti.htm=================

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>电梯模拟运行</title>
<script langue="javascript" src="Floor.js"></script>

</head>

<body>
<div align="center">
  <script>
var now_value=1;//电梯当前楼层
var plan_value=now_value;//电梯初始计划停靠楼层
var Floor_status=0;//电梯当前状态,停
var Floor_num=20;
var Floor_plan=new Array();
</script>
</div>
<form name="form1" method="post" action="">
  <p align="center">电梯现在位置<span id="now_position"></span>层</p>
  <p align="center">
  <input name="Submit10" type="button" id="Submit10" value="10" onclick="goto(this);">
     
<input name="Submit20" type="button" id="Submit20" value="20" onclick="goto(this);">
  </p>
  <p align="center">
    <input name="Submit9" type="button" id="Submit9" value=" 9" onclick="goto(this);">
    <input name="Submit19" type="button" id="Submit19" value="19" onclick="goto(this);">
</p>
  <p align="center">    <input name="Submit8" type="button" id="Submit8" value=" 8" onclick="goto(this);">
    <input name="Submit18" type="button" id="Submit18" value="18" onclick="goto(this);">
</p>
  <p align="center">    <input name="Submit7" type="button" id="Submit7" value=" 7" onclick="goto(this);">
    <input name="Submit17" type="button" id="Submit17" value="17" onclick="goto(this);">
</p>
  <p align="center">    <input name="Submit6" type="button" id="Submit6" value=" 6" onclick="goto(this);">
    <input name="Submit16" type="button" id="Submit16" value="16" onclick="goto(this);">
  </p>
  <p align="center">    <input name="Submit5" type="button" id="Submit5" value=" 5" onclick="goto(this);">
    <input name="Submit15" type="button" id="Submit15" value="15" onclick="goto(this);">
</p>
  <p align="center">    <input name="Submit4" type="button" id="Submit4" value=" 4" onclick="goto(this);">
    <input name="Submit14" type="button" id="Submit14" value="14" onclick="goto(this);">
</p>
  <p align="center">    <input name="Submit3" type="button" id="Submit3" value=" 3" onclick="goto(this);">
    <input name="Submit13" type="button" id="Submit13" value="13" onclick="goto(this);">
  </p>
  <p align="center">    <input name="Submit2" type="button" id="Submit2" value=" 2" onclick="goto(this);">
    <input name="Submit12" type="button" id="Submit12" value="12" onclick="goto(this);">
</p>
  <p align="center">    <input name="Submit1" type="button" id="Submit1" value=" 1" onclick="goto(this);">
    <input name="Submit11" type="button" id="Submit11" value="11" onclick="goto(this);">
</p>
</form>
<div align="center">
  <script>SetLight(now_value);</script>
</div>
</body>
</html>

=========floor.js=======================

// 电梯模拟运行,Write by Showlin (fzsalx@163.com)-->
 function SetLight(num){ //点亮某层的灯
  var obj;
  var tmpstring;
   tmpstring="Submit" + num.toString();
   obj=document.getElementById(tmpstring);
    document.getElementById("now_position").innerText=now_value;
    obj.style.background="#ffff00";
 }

 function SetUnLight(num){ //熄灭某层的灯
  var obj;
  var tmpstring;
   tmpstring="Submit" + num.toString();
   obj=document.getElementById(tmpstring);
   obj.style.background="#d4d0c8";
 }
 
 function SetRed(num){//到达提示
  var obj;
  var tmpstring;
   tmpstring="Submit" + num.toString();
   obj=document.getElementById(tmpstring);
   obj.style.background="#ff0000";
 }
 
 function goto(obj){//按按钮之后
  var i;
  var tmpobj;
  var tmpstring;
  var tmpvalue;
  tmpvalue=parseInt(obj.value);
  SetIsPlan(tmpvalue);  //点亮按下的楼层灯
  if (tmpvalue==now_value) return; //终点和起点一致不控制
  if (Floor_status==0){
   plan_value=tmpvalue;//设置电梯初始运行终点
   if (plan_value>now_value){//上行
    Floor_status=1;
    up();
   }else{
    Floor_status=-1;
    down();
   }
  }else{
   AddPlan(obj.value);//添加到计划停靠表中等待
  }
  
 }
 
 function up(){//上行
  SetUnLight(now_value);//设置离开的楼层显示状态
  now_value++;//上行
  SetLight(now_value);//顶端显示状态
  if (Floor_plan.length==0) {//计划停靠表为空
   if (plan_value!=now_value) {//若未抵达延时继续上行
    setTimeout("up()",1000);
   }else{
    DelAll();//所有灯灭;
    SetLight(now_value);
    Floor_status=0;//设置电梯为停
   }
  }else{
   if (Floor_plan[Floor_plan.length-1]==now_value){ //判断是否到了下一个停靠点
    SetRed(now_value);//设置停靠点状态
    DelPlan();//删除最后一个停靠点的信息
    if (Floor_plan.length==0){//判断停靠计划表是否为空
     DelAll();//所有灯灭;
     SetLight(now_value);
     Floor_status=0;//停
    }else{
     setTimeout("up()",2000);//继续
    }
   }else{//没到下一个停靠点
     setTimeout("up()",1000);   
   }
  }
 }
 
 function down(){//下行
  SetUnLight(now_value);//设置离开的楼层显示状态
  now_value--;//下行
  SetLight(now_value);//顶端显示状态
  if (Floor_plan.length==0) {//计划停靠表为空
   if (plan_value!=now_value) {//若未抵达延时继续上行
    setTimeout("down()",1000);
   }else{
    DelAll();//所有灯灭;
    SetLight(now_value);
    Floor_status=0;//设置电梯为停
   }
  }else{
   if (Floor_plan[Floor_plan.length-1]==now_value){ //判断是否到了下一个停靠点
    SetRed(now_value);//设置停靠点状态
    DelPlan();//删除最后一个停靠点的信息
    if (Floor_plan.length==0){//判断停靠计划表是否为空
     DelAll();//所有灯灭;
     SetLight(now_value);
     Floor_status=0;//停
    }else{
     setTimeout("down()",2000);//继续
    }
   }else{//没到下一个停靠点
     setTimeout("down()",1000);   
   }
  }
 }
 function AddPlan(num){//添加计划停靠表
  if (Floor_status*num<now_value*Floor_status) return;//按钮与电梯方向相反则不予理会
  if (Floor_plan.length==0){//计划表为空
   if (Floor_status*num>plan_value*Floor_status){
    Floor_plan[0]=num;
    Floor_plan[1]=plan_value;
   }
   if (Floor_status*num<plan_value*Floor_status){
    Floor_plan[1]=num;
    Floor_plan[0]=plan_value;
   }
  }else{
   var i;
   var j;
   for (i=0;i<Floor_plan.length;i++){
    if (num==Floor_plan[i]) return;
    if (Floor_status*num>Floor_plan[i]*Floor_status){//找出插入的位置
     for (j=Floor_plan.length;j>i;j--) {Floor_plan[j]=Floor_plan[j-1];}
     Floor_plan[i]=num;
     break;
    }
   }
   if (i==Floor_plan.length) Floor_plan[i]=num; //插入到数组尾部
  }

 }
 
 function DelPlan(){//去除计划表最后一项,停靠点
  Floor_plan.length--;
 }
 
 
 function SetIsPlan(num){//设置按下按钮的灯
  var obj;
  var tmpstring;
   tmpstring="Submit" + num.toString();
   obj=document.getElementById(tmpstring);
   obj.style.background="#66ffff";
 }

 function DelAll(){//熄灭所有灯
  var i=1
  for (i=1;i<=Floor_num;i++)  SetUnLight(i);
 }

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

一个电梯运行的模拟实现

一个电梯运行的模拟实现 用Java写了一个类似电梯模拟器的一段代码,运行了下,还没有发现大问题,记录如下: 基本思路: 模拟电梯运行(为单一电梯,未考虑达到承载上限,最短等待时间等问题) ...
  • dotedy
  • dotedy
  • 2015-10-23 14:04
  • 1026

利用IP,用C#来获得远程主机的MAC地址

以前在一个网站看到一篇这样的文章,感觉还不错。这几天因为我和朋友写的一个程序可能需要这样的功能,就用了那篇文章的方法,可是却发现有很多不如意的地方,也就是说他的思路对了,可是程序的编写却很有问题。我就...

动画模拟实现电梯的载客运行过程

动画模拟实现电梯的载客运行过程 今天有个搞电子设计竞赛的来问我电梯的运行逻辑的C代码实现,我想到学数据结构那会用C/C++写过一个,不过好久自己现在也记不清了,直接就把源代码给他,让他自己看了。 想想...

Java-模拟电梯运行

结果: (数字代表要去的楼层,-1表示关门) 代码:package dianti;import java.util.ArrayList; import java.util.Collections;...

电梯运行C++自动模拟

  • 2009-01-20 10:30
  • 1.13MB
  • 下载

几个例子弄懂JS 的setTimeout的运行方式

在做阿里的机试题,碰到setTimeout这题,就稍微做了下小实验。

模拟电梯运行代码框架c

  • 2014-05-15 11:20
  • 34KB
  • 下载

C# ,webBrowser,登录,数据填充,模拟点击链接,运行JS函数

http://www.outdosoft.com/winfrom/57372116J.html判断是否网络正常  private   bool IsConnectedToInternet(){    ...
  • sgzwiz
  • sgzwiz
  • 2011-03-23 01:42
  • 1714
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)