无心间打开了 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();
码完,哭着碎觉。