JSRobot闯关小攻略

无意间打开了 JSRobot.

闯关,我喜欢,于是开始了jsrobot的闯关之旅。其实就13关。

关卡都是以setInterval()定时器来执行操作,所以主要模式就是给定时器具体执行内容.

第0关

入门篇,在一个漆黑的夜晚,哦,不,是界面,走到f处就算结束。
那就 R.right();运行,走好不送了。

第1关

神马?不走直线了? 行呗。斜着走。
R.right()&&R.down();

第2关

哦,换了个方法,R.move(directionString)
direction赋值, var direction = 'right';
慢走啊亲。

第3关

开始感觉不简单了,ok,我们模拟着走一遍。
总共八步,1、2步右上角方向,3、4步右下角方向,5步右,6、7步还是右上角。
因此我们,不对,这里没提供定时器。。。没关系,自己造一个。

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);

这里要注意一点,就是斜着走时,要注意是先左右还是先上下。

第4关

还是第三关的题目,只是给了我们定时器,还说移动不了的时候方法会返回false
当时没想到啥idea,第三关的代码拿过来换个变量名就行了。可以参考公子的idea

第5关

介绍R.destroy的用法,还有正则。别忘了向右走哦。

key = 'A';
R.right();

突然,代码好多萌表情。

第6关

介绍R.standingOn(char)的用法,地图里只要遇到^就向上走就可以了。

if(R.standingOn('^')){
 R.up();
}

—–伤心分割线,写完13关后保存不能,草稿只保存到第6关,累爱—–

第7关

题目说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);

第8关

正则表达式
var key = '<don>key</don>';

第9关

别看那么复杂,其实从终点往回走,会发现,其实就是在5的左边那里会陷入死循环,那么,我只要判断站着”<“且准备向右的时候,忽略这次方向修改。

if(R.standingOn('<')&&direction=='right'){
R.right();
return;
}

第10关

假设只是加一个R.right(),那么当steps=4时,counter大于2,所以我们要组织steps自增时的一次counter自增。题目要求不能使用steps和counter,所以做法是先右移,一旦不能右移就左移。另外还有正则。

if(!R.right()){
    R.left();
}
key = '<a>\\1<b>\\2<c>\\3';

第11关

私有变量,我们没法改写,但是对象方法,我们可以重写。

guineaPig.getKeyFromStomach = function(){return true;};
R.right();

第12关

坑!题目说的是不能用到guineaPig的变量,然后提示不能使用destroy,还以问句形式意在询问能否实现改变私有变量。
结果公子以一个间接destroy过关了。囧。

R['des'+'troy']('right');
R.right();

第13关

终于最后一关了,想想还有点小激动呢?//毛线,多花时间重新写一份,已经不激动了。
我发现可以用12关的招数cheat哦,那就继续吧。
呃,不过切合题意的做法应该是公子的那个解法。这里就不重复了。

key = function(){};
R['des'+'troy']('right');
R.right();

码完,哭着碎觉。

    原文作者:Dont
    原文地址: https://segmentfault.com/a/1190000000610519
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞