Bit`s Quest, движение робота по спирали.
Добрый день. У меня получился относительно короткий код. Я этому очень рада, но он не работает и постоянно уведомляет о нехватке ";".
Я понятия не имею, куда тут еще прилепить ";". Даже, если на каждой строке разместить по одной ";", он не работает (правда сообщение изчезает). http://bitsquest.bitbucket.org/index.html#5
this.on("start", function(contact){
if (this.on("sensor:bottom")){
this.thrusters.left(true);
this.thrusters.top(false);
}else if (this.on("sensor:right")){
this.thrusters.bottom(true);
this.thrusters.left(false);
}else if (this.on("sensor:top")){
this.thrusters.right(true);
this.thrusters.bottom(false);
}else if (this.on("sensor:left")){
this.thrusters.top(true);
this.thrusters.right(false);
}});
Хотелось бы узнать, где я допустила ошибку и почему от него так тормозит компьютер. |
Так там же синтаксис не такой...
Вот так примерно должен был выглядеть твой код:
this.on("start", function(){
this.thrusters.top(true);
});
this.on('sensor:top', function(contact) {
this.thrusters.right(true);
this.thrusters.bottom(false);
});
this.on('sensor:right', function(contact) {
this.thrusters.bottom(true);
this.thrusters.left(false);
});
this.on('sensor:bottom', function(contact) {
this.thrusters.left(true);
this.thrusters.top(false);
});
this.on('sensor:left', function(contact) {
this.thrusters.top(true);
this.thrusters.right(false);
});
Хотя там всё равно ошибка в логике работы. И там же написано: "The value of contact will be true when contact has been made and false when it has been lost." Т.е. можно детекстиль отрыв от поверхности через проверку contact на false. |
Спасибо. Но это не совсем то, что я хотела: я так и не поняла, что не так с синтаксисом и почему "if ... else" не работает.
Ваш код не проходит весь путь. Можно, конечно, скопипастить первую часть, но это будет неоптимальное решение. |
Цитата:
|
Так ваши if..else не рабочие потому что непонятно что проверяют. Или я чего-то не понимаю т.к. вижу эту игрушку первый раз в жизни.
Насколько я понял this.on - вешает обработчик на "событие" соприкосновения со стеной т.е. функция которая передана вторым параметром выполнится когда робот соприкасается с соответствующими стенами. При этому первый аргумент функции получает значени true если произошло событие соприкосновения по стеной и false если произошел отрыв от стены. Соответственно по этим событиям и надо ориентироваться. Цитата:
this.on("start", function(){
this.thrusters.top(true);
});
this.on('sensor:top', function(contact) {
if (contact) {
this.thrusters.right(true);
this.thrusters.bottom(false);
}
});
this.on('sensor:right', function(contact) {
if (contact) {
this.thrusters.bottom(true);
this.thrusters.left(false);
}
});
this.on('sensor:bottom', function(contact) {
if (contact) {
this.thrusters.left(true);
this.thrusters.top(false);
}
});
this.on('sensor:left', function(contact) {
if (contact) {
this.thrusters.top(true);
this.thrusters.right(false);
}
});
|
| Часовой пояс GMT +3, время: 14:05. |