無心間打開了 JSRobot.javascript
闖關,我喜歡,因而開始了jsrobot的闖關之旅。其實就13關。java
關卡都是以setInterval()
定時器來執行操做,因此主要模式就是給定時器具體執行內容.正則表達式
入門篇,在一個漆黑的夜晚,哦,不,是界面,走到f
處就算結束。
那就 R.right();
運行,走好不送了。segmentfault
神馬?不走直線了? 行唄。斜着走。R.right()&&R.down();
ide
哦,換了個方法,R.move(directionString)
給 direction
賦值, var direction = 'right';
慢走啊親。ui
開始感受不簡單了,ok,咱們模擬着走一遍。
總共八步,一、2步右上角方向,三、4步右下角方向,5步右,六、7步仍是右上角。
所以咱們,不對,這裏沒提供定時器。。。不要緊,本身造一個。idea
var step = 0; setInterval(function(){ switch(step){ case 1: case 2: case 7: R.up(); R.right(); break; case 3: case 4: R.right(); R.down(); break; case 5: R.right(); break; case 6: R.right(); R.up(); break; } step++; },500);
這裏要注意一點,就是斜着走時,要注意是先左右仍是先上下。code
仍是第三關的題目,只是給了咱們定時器,還說移動不了的時候方法會返回false
當時沒想到啥idea,第三關的代碼拿過來換個變量名就好了。能夠參考公子的idea對象
介紹R.destroy
的用法,還有正則。別忘了向右走哦。blog
key = 'A'; R.right();
忽然,代碼好多萌表情。
介紹R.standingOn(char)
的用法,地圖裏只要遇到^就向上走就能夠了。
if(R.standingOn('^')){ R.up(); }
-----傷心分割線,寫完13關後保存不能,草稿只保存到第6關,累愛-----
題目說R.standingOn()
不帶參數的時候返回的是所在的字符;
並且基本的字符都有個固定指向。所以能夠這麼作:
switch(R.standingOn()){ case '_': case '>': temp = 'up'; break; case '-': temp = 'right'; break; case '+': temp = 'left'; break; case '2': temp = 'down'; break; default: break; } R.move(temp);
正則表達式var key = '<don>key</don>';
別看那麼複雜,其實從終點往回走,會發現,其實就是在5的左邊那裏會陷入死循環,那麼,我只要判斷站着"<"且準備向右的時候,忽略此次方向修改。
if(R.standingOn('<')&&direction=='right'){ R.right(); return; }
假設只是加一個R.right()
,那麼當steps=4
時,counter
大於2,因此咱們要組織steps自增時的一次counter自增。題目要求不能使用steps和counter,因此作法是先右移,一旦不能右移就左移。另外還有正則。
if(!R.right()){ R.left(); } key = '<a>\\1<b>\\2<c>\\3';
私有變量,咱們無法改寫,可是對象方法,咱們能夠重寫。
guineaPig.getKeyFromStomach = function(){return true;}; R.right();
坑!題目說的是不能用到guineaPig
的變量,而後提示不能使用destroy
,還以問句形式意在詢問可否實現改變私有變量。
結果公子以一個間接destroy過關了。囧。
R['des'+'troy']('right'); R.right();
終於最後一關了,想一想還有點小激動呢?//毛線,多花時間從新寫一份,已經不激動了。
我發現能夠用12關的招數cheat哦,那就繼續吧。
呃,不過切合題意的作法應該是公子的那個解法。這裏就不重複了。
key = function(){}; R['des'+'troy']('right'); R.right();
碼完,哭着碎覺。