深圳升蓝软件
数据库开发 .Net技术  |  ASP技术 PHP技术 JSP技术 应用技术类   
Hiblue Software

一个使用多选框的小智力题,传教士与野人


March 25,2004
这是我学javascript的第一个小例子。
尽管现在技术依旧很差,不过觉得写些小例子
真的可以很快进入角色。

<HTML>
<HEAD>
<title>传教士与野人</title>
</HEAD>

<script language= "Javascript">

var whereboat="left" //船的位置
function crossRiver()
  {
  var boat=0;           //载人数目
  //操作右河岸。
   if(whereboat=="left")
   {
   for (var i=0;i<form1.leftbank.options.length;i++)
    {   
      if(document.form1.leftbank.options.selected==true)
     {     
      var Node =document.createElement("option");      //产生新的
      Node.text=form1.leftbank.options.text;       //给新的老名字
      document.form1.rightbank.add(Node);             //加入新的
      form1.leftbank.options.text=""               //标记为空(若直接删除会丢失selected==true)
      boat++;
      whereboat="right";
     }   
    }
   
   for (var i=0;i<form1.leftbank.options.length;i++)
    {
    if(form1.leftbank.options.text=="")
     {form1.leftbank.options.remove(i);i--;}   //集体铲除老的,注意由于remove产生缩进,所以i--
    }
   }
   
//操作左河岸。
  if(whereboat=="right")
  {        
   for (var i=0;i<form1.rightbank.options.length;i++)
    {
    if(form1.rightbank.options.selected==true)
     {
     var Node =document.createElement("option");      //产生新的
     Node.text=form1.rightbank.options.text;       //给新的老名字
     document.all.leftbank.add(Node);
     form1.rightbank.options.text=""               //标记为空(若直接删除会丢失selected==true)
     boat++;
     whereboat="left";
     }
    }
   for (var i=0;i<form1.rightbank.options.length;i++)
    {
    if(form1.rightbank.options.text=="")
     {form1.rightbank.options.remove(i);      //集体铲除老的
      i--;      
     }
    }
   
   }  
  if(boat>2) {alert("超载!");window.location="javas.html";}  //载人失败
  boat=0;  
//判断胜利与失败
  var people=0;
  var savage=0;
                     
              //左岸失败
   for (var i=0;i<form1.leftbank.options.length;i++)
    {if(form1.leftbank.options.text=="传教士") people++;
     if(form1.leftbank.options.text=="野人") savage++;
    }  
    if(savage>people & people>0) {alert("左河岸的传教士被野人吃掉了!");
                                  window.location="javas.html";  }
             //右河岸失败
     people=0; savage=0;        
   for (var i=0;i<form1.rightbank.options.length;i++)
    {if(form1.rightbank.options.text=="传教士") people++;
     if(form1.rightbank.options.text=="野人") savage++;
    }  
    if(savage>people & people>0)
    {
    alert("右河岸的传教士牺牲了!");
    window.location="javas.html"; }
    if(savage+people==6)
    alert("传教士:终于过河了,与野人在一起好可怕!野人:呜瓦!这些人的肉太老了,咱们吃小孩去!");
   
            
      
   
  }

</script>

    <BODY bgcolor=navy text=aqua>
<br>
<center><h3>与野人一起过河</h3></center>

<CENTER><!--//定义左河岸-->

<table width=470 height=200 align=center>
<tr><td>
<h5>
有一天三个传教士来到一个野蛮人居住的地方进行传教,传说这个部落是吃人的氏族,在一条小河前,他们遇到了三个野人同时也要过河,六个人虎目眈眈,而河中只有一只仅容纳两人的小船。如果在度过小河的过程中,野人数目多于传教士,那么势单力孤的传教士就要被吃掉。而传教士又不能伤害野人。请你想个办法让六个人都安全的过河。
</h5></td></TD>
</tr>
</table></CENTER>

<form name=form1>
<center>
<SELECT name="leftbank" multiple size=6 style="WIDTH: 100px">
<OPTION >传教士</OPTION>
<OPTION>传教士</OPTION>
<OPTION>传教士</OPTION>
<OPTION>野人</OPTION>
<OPTION>野人</OPTION>
<OPTION>野人</OPTION>
</SELECT>


<INPUT onclick=crossRiver() type=button value=过河>


<!--定义右河岸-->
<SELECT multiple name="rightbank" size=6 style="WIDTH: 100px">
</SELECT>

</center>
</form>
<center>
<h5>(用Ctrl键多选)</h5>
</center>
</BODY>
</html>
       
Copyright © 2001-2008 Shenzhen Hiblue Software Team All rights reserved