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

码完,哭着碎觉。