emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks
          Letters 是個很有意思的聯機小游戲,其實非常簡單,就是大家可以搶字母來拼自己喜歡的單詞,每天上去都會看到一群類此不疲的玩家。

          一時心血來潮仿寫了一個單機版的:

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
          <HEAD>
          <TITLE> 字母漂移 </TITLE>
          <META NAME="Author" CONTENT="emu">
          <META NAME="Keywords" CONTENT="game">
          <SCRIPT LANGUAGE="JavaScript" defer>
          <!--
          var isIE=!!document.all;
          function checkMouseMove(event){
              
          if (window.activeElement){
                  
          var elm = window.activeElement;
                          elm.style.left 
          = event.clientX-elm.innerX;
                  elm.style.top 
          = event.clientY-elm.innerY;
              }

          }

          function releaseMouse(event){
              
          if (window.activeElement){
                  activeElement.newX 
          = event.clientX-activeElement.innerX;
                  activeElement.newY 
          = event.clientY-activeElement.innerY;
                  window.activeElement 
          = null;
              }

          }

          function drag(event){
              
          if (event.button>1return;
              
          var elm = isIE?event.srcElement:event.target;
              window.activeElement 
          = elm;
              elm.oldX 
          = elm.offsetLeft;
              elm.oldY 
          = elm.offsetTop;
              elm.innerX 
          = event.clientX - elm.oldX;
              elm.innerY 
          = event.clientY - elm.oldY;
          }


          function slideTo(id,x,y){
              
          var d=5    
              
          var e = document.getElementById(id);
              
          var l = e.style.left?parseInt(e.style.left):0;
              
          var t = e.style.top?parseInt(e.style.top):0;
              
          if(Math.abs(l-x)<=&& Math.abs(t-y)<=d) return;
              
          if(l!=x) e.style.left=l+(l<x?d:-d)
              
          if(t!=y) e.style.top=t+(t<y?d:-d)
              
          if(e.timer) clearTimeout(e.timer)
              e.timer
          =setTimeout("slideTo("+id+","+x+","+y+")",3)
          }

          setInterval(
          "slide()",300);
          function slide(){
              slideTo(Math.floor(Math.random()
          *26),Math.floor(Math.random()*670+15),Math.floor(Math.random()*470+15))
          }

          //-->
          </SCRIPT>
          </HEAD>
          <style>b{position:absolute;cursor:pointer;font-size:20}</style>
          <BODY onmousemove="checkMouseMove(event)" onmouseup="releaseMouse(event)" oncontextmenu="return false" onselect="return false" ondblclick="return false">
          <div style="background-color:yellow;width:700;height:500;overflow:hidden">
          <SCRIPT>
          var n=104;
          for(var i=0;i<n;i++)
              document.write('
          <b onmousedown="drag(event)" id="'+i+'" style="left:'+Math.floor(Math.random()*670+15)+';top:'+Math.floor(Math.random()*470+15)+';color:#'+(Math.floor(Math.random()*(1<<24))|(1<<23)).toString(16)
              +'
          " onbeforselect="return false">'+String.fromCharCode(i%26+65)+'</b>');
          </SCRIPT>
          </div>
          </BODY>
          </HTML>


          看起來也似模似樣了呵呵。至少比Letters 單機版要有可玩性,更不要說體積只有它的幾十分只一了。

          直接拷貝下來保存為html文件,或者點擊這里下載。在IE6和Firefox1.5下面同過。

          運行效果如下:
          posted on 2006-01-18 00:30 emu 閱讀(2516) 評論(6)  編輯  收藏

          評論

          # re: 仿寫了一個游戲 2006-01-18 08:49 Robin's Java World
          玩了一下,發現用JS寫的跟FLASH做的還是有一定的差別,一是效果沒有那么好,二是在拖動字母的時候會出現選中很多字母的問題。  回復  更多評論
            

          # re: 仿寫了一個游戲 2006-01-18 09:18 豹豹
          選中很多字母,可以屏蔽 onselectstart 事件來解決  回復  更多評論
            

          # re: 仿寫了一個游戲 2006-01-18 09:24 emu
          MFF屏蔽不了。
          其實按照原游戲的效果,這些字母都應該是gif圖片做的,本來就不存在選中問題。
          不過寫程序純粹為了好玩,沒花那么多時間來做這些細節,只是隨便放些字母上去。  回復  更多評論
            

          # re: 仿寫了一個游戲 2006-01-18 09:31 emu
          直接拷貝代碼下來不能運行,是因為這一行:
          <style>b{position:absolute;cursor:hand;font-size:20}</style>
          從上面拷貝下來的時候居然變成:
          <style>b{}{position:absolute;cursor:hand;font-size:20}</style>
          這是代碼展示器的一個bug了,自己改回來就好了。
            回復  更多評論
            

          # re: 仿寫了一個游戲 2006-05-17 00:22 夢游客
          好樣的, 小子, 我關注你哈  回復  更多評論
            

          # re: 仿寫了一個游戲 2008-09-02 12:32 Relucent
          很有意思  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 南充市| 威信县| 阿城市| 栾城县| 永靖县| 武冈市| 新昌县| 广丰县| 天水市| 罗城| 内丘县| 海晏县| 基隆市| 巴南区| 罗源县| 卫辉市| 香河县| 师宗县| 海城市| 永德县| 武义县| 武安市| 商丘市| 轮台县| 石楼县| 花垣县| 玉树县| 苏尼特右旗| 昔阳县| 乾安县| 安乡县| 桃源县| 那坡县| 青神县| 钟祥市| 内黄县| 杭锦后旗| 上栗县| 慈溪市| 磴口县| 文化|