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, время: 22:16. |