В этом уроке:
- Создаём универсальный блок подъезда к перекрёстку;
- Поворот налево при встрече знака "направление движения".
Направление движения
Ещё один знак, с которым мы познакомимся, разрешает движение только в направлении, указанном стрелкой. Существуют также двунаправленные знаки, которые указывают две стороны поворота. В таком случае движение может быть продолжено в любую из указанных сторон.
Если знак "Направление движения" разрешает движение налево, то он разрешает и разворот.
Создание блока подъезда к перекрёстку
Итак, если машинка встречает данный знак, значит впереди её ждёт перекрёсток, на котором она должна повернуть налево. У нас уже есть похожий алгоритм: мы использовали его для поворота на перекрёстке, перед которым установлен светофор.
Сейчас нам необходимо скопировать алгоритм из того урока и немного изменить его. В частности, нам не нужен генератор случайных чисел для выбора направления поворота, поскольку направление указывает знак.
Когда мы говорим о программировании, хорошей практикой считается создание блоков, если эти блоки будут использоваться несколько раз. Мы это уже делали, создавая блок движения по линии и поворотов налево и направо. Сейчас же нам нужно подъехать к перекрёстку, как мы делали это при проезде перекрёстка на светофоре, поэтому давайте вернёмся к алгоритму проезда светофора и создадим из него блок, который будем использовать и в этом уроке.
(картинка кликабельна)
Аналогично тому, как мы делали в уроке Движение по линии, создайте блок.
Инструменты -> Конструктор Мой блок. Задайте имя блока (мы назвали его move_to) и выберите подходящий значок. Нажмите завершить.
Алгоритм движения на светофоре стал гораздо компактнее, а у нас появился новый блок, который отвечает за подъезд к перекрёстку. Теперь мы можем использовать данный блок и в других местах программы.
Поворот налево
Переходим непосредственно к алгоритму данного урока. Добавляем блок ИК-приёмника и выбираем знак "Поворот налево". Он находится в группе "Дорожные знаки 2".
Добавляем переключатель. Если знак обнаружен, то движемся прямо до момента, пока не обнаружим перекрёсток (созданный нами только что блок move_to), далее — поворачиваем налево (блок turn_felt, который мы также создали в уроке поворота на перекрёстке). На этом алгоритм готов.
Загрузите программу, поставьте машинку на трассу и проверьте, что она работает корректно.
Обсуждение