Sugo

          Goof off ? no way: never
          posts - 20, comments - 8, trackbacks - 73, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          字符串下落

          Posted on 2007-07-30 16:48 sugo 閱讀(375) 評(píng)論(0)  編輯  收藏

               實(shí)現(xiàn)了控制隨機(jī)生成的一個(gè)六位字符串下落,可以向左、向右、向下加速。實(shí)現(xiàn)的功能仿照俄羅斯方塊來(lái)做,本來(lái)想實(shí)現(xiàn)上下兩行相同字母消除功能,但想起一個(gè)方法(代碼中的erase()方法),感覺(jué)沒(méi)問(wèn)題,但一直沒(méi)有實(shí)現(xiàn),后來(lái)也懶得想了。現(xiàn)將代碼貼在這里,希望讀到這篇文章的朋友如果感興趣的話(huà)提出寶貴意見(jiàn),并可以隨意拷貝代碼完善功能:)
           <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
          <HEAD>
          <TITLE> New Document </TITLE>
          <META NAME="Generator" CONTENT="EditPlus">
          <META NAME="Author" CONTENT="Sugo">
          <META NAME="Keywords" CONTENT="">
          <META NAME="Description" CONTENT="">
          </HEAD>
          <SCRIPT LANGUAGE="JavaScript">
          <!--
          var incx=10;//每次下落的高度
          var sty=20; //開(kāi)始時(shí)候的縱坐標(biāo)
          var stx=500; //開(kāi)始時(shí)候的橫坐標(biāo)
          var num=0; //每個(gè)div標(biāo)號(hào),同時(shí)也起到確定下一個(gè)div元素停止的位置
          var len=10;
          var timer;//定時(shí)器
          //var arr0,arr1,arr2,arr3,arr4,arr5,arr6,arr7,arr8,arr9,arr10,arr11,arr12,arr13,arr14,arr15; //用于字母消除作用的數(shù)組,此功能沒(méi)實(shí)現(xiàn),這些變量可以不用
          //初始字符串初始位置
          function firstshow(){ 
           //temp=document.getElementById("sg");
           sg0.style.pixelTop=sty;
           sg0.style.pixelLeft=stx;
           
          }
          //增加字符串
          function addDiv(){
           tt=document.createElement("div");
           divcontent=randomString(6);
           cont=document.createTextNode(divcontent);
           tt.appendChild(cont);
           tt.id="sg"+num;
           tt.style.position="absolute";
          // var obj=eval("sg"+num);
           tt.style.pixelTop=10;
           tt.style.pixelLeft=500;
           document.body.appendChild(tt);
           
          }

          //字符串下落方法
           function fall(id){
             var obj=eval("sg"+id);
            
            obj.style.pixelTop+=incx;
            obj.style.pixelLeft=stx;
            if(obj.style.pixelTop==(610-len*num)){   //到達(dá)目的地址時(shí)(下落到610處,此處可隨意改動(dòng))
             obj.style.pixelTop=610-len*num;
             //erase(); 功能沒(méi)有實(shí)現(xiàn)
             num++;
             addDiv();
             fall(num);
            }
            else if(obj.style.pixelTop<(610-len*num)) //沒(méi)有到達(dá)目的地址時(shí)
            timer = setTimeout('fall(num)',1000); //1000可以換成任意數(shù)字,越小下落速度越快
            else if(obj.style.pixelTop>(610-len*num)) //處理出現(xiàn)地址大于目的地址時(shí)
            {
            }
           }
           //當(dāng)使用方向鍵操作時(shí)使用的下落方法
           function fall1(id,sx,sy){
             var obj=eval("sg"+id);
            
            obj.style.pixelTop=sy+incx;
            obj.style.pixelLeft=sx;
            y=obj.style.pixelTop;
            x=obj.style.pixelLeft;
            if(obj.style.pixelTop==(610-len*num)){   //到達(dá)目的地址時(shí)
             obj.style.pixelTop=610-len*num;
             //erase(); 功能沒(méi)有實(shí)現(xiàn)
             num++;
             addDiv();
             fall(num);
            }
            else if(obj.style.pixelTop<(610-len*num)) //沒(méi)有到達(dá)目的地址時(shí)
            timer = setTimeout('fall1(num,x,y)',1000); //1000可以換成任意數(shù)字,越小下落速度越快
            else if(obj.style.pixelTop>(610-len*num)) //處理出現(xiàn)地址大于目的地址時(shí)
            {
            }
           }
          //產(chǎn)生隨機(jī)六位字符串
           function randomString(leng){
             var source="abcdefghijklmnopqrstuvwxyz";
             var result="";
             for(var i=0;i<leng;i++){
            
              result+=source.charAt(Math.random()*source.length)
             }
             return result;
           }
           //鍵盤(pán)控制
           function document.onkeydown()

            if (window.event.keyCode==37)   // 方向鍵 <-
            { 
              var temp=document.getElementById("sg"+num);
           temp.style.pixelLeft-=8;
           x=temp.style.pixelLeft;
           y=temp.style.pixelTop;
           clearTimeout(timer);
              fall1(num,x,y-10);
             }
            else if (window.event.keyCode==39)   // 方向鍵 ->
            { 
              var temp=document.getElementById("sg"+num);
           temp.style.pixelLeft+=8;
           x=temp.style.pixelLeft;
           y=temp.style.pixelTop;
           clearTimeout(timer);
              fall1(num,x,y-10);
             }
             else if (window.event.keyCode==40){ //方向鍵 |
               var temp=document.getElementById("sg"+num);
            temp.style.pixelTop+=10;
               x=temp.style.pixelLeft;
            y=temp.style.pixelTop;
            clearTimeout(timer);
               fall1(num,x,y-10);
             }
          }
          //字母消除程序,暫時(shí)不能實(shí)現(xiàn)功能
           function erase(){
            var pos=new Array();
            for(var i=0;i<=num;i++){ //得到所有存在的div每個(gè)字符的位置值
              dpos=document.getElementById("sg"+i);
           x=dpos.style.pixelLeft;
           //content=dpos.value;
              obj=eval("arr"+i);
           obj=new Array();
           for(var j=0;j<6;j++){
             obj[j]=x+j;
           }
           pos[i]=obj;
            }
           //alert(num);
            if(num>=1){
             
              for(t=num-1;t<num;t++){
             for(tt=0;tt<6;tt++){
               for(ttt=0;ttt<6;ttt++){
            // alert(pos[t][ttt]);
              if(pos[t][tt]==pos[t+1][ttt]){
              // alert("here"+tt+"  "+ttt);
                mod1=document.getElementById("sg"+t);
             mod2=document.getElementById("sg"+(t+1));
                var rep1="",rep2="";
             for(var l=0;l<mod1.innerHTML.length;l++){
               if(l!=tt){
               rep1+=mod1.innerHTML.charAt(l);
               }
               else{
               rep1+="-";
               }
             }
             mod1.innerHTML=rep1;
             //rep1='';
             //alert(mod1.innerHTML);
             for(var ll=0;ll<mod2.innerHTML.length;ll++){
               if(ll!=ttt){
                rep2+=mod2.innerHTML.charAt(ll);
               }
               else{
                rep2+="-";
                        }
             }
             mod2.innerHTML=rep2;
             //rep2='';
              }
            }
                }
              }
            }
           }
          //-->
          </SCRIPT>
          <BODY onload="firstshow();" >

          <div id="sg0" style="position:absolute"><SCRIPT LANGUAGE="JavaScript">
          <!--
          document.write(randomString(6));  //6可以改為任意數(shù)字,數(shù)字即是字符串的長(zhǎng)度
          //-->
          </SCRIPT></div>
          <SCRIPT LANGUAGE="JavaScript">
          <!--
            fall(0);
          //-->
          </SCRIPT>
          </BODY>
          </HTML>


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 宜章县| 屏东县| 香河县| 汉沽区| 灵山县| 贵定县| 永川市| 滕州市| 界首市| 池州市| 晴隆县| 乳山市| 井陉县| 阳春市| 海林市| 大埔区| 微山县| 河曲县| 新邵县| 定西市| 临安市| 河池市| 怀安县| 连云港市| 兴义市| 蛟河市| 虹口区| 江安县| 年辖:市辖区| 平原县| 波密县| 沐川县| 扶沟县| 高安市| 文登市| 托克逊县| 陇西县| 名山县| 余江县| 安国市| 昆明市|