Мы хотим, чтоб Интернет был Вам другом много лет! Будешь знать Семь правил этих- смело плавай в интернете.
RSS

среда, 11 февраля 2015 г.

Задачи, связанные с использованием условного оператора. Проект "Аквариум"

Условный оператор реализует разветвляющийся тип алгоритма (см. п. 5.2 Виды алгоритмов). Напомним, как производится проверка условий в среде «Логомиры»:
а) если условие [команды]
б) если_иначе условие [команды1][команды2]

Рассмотрим простейшие задачи, с использованием условия.

 «Аквариум с рыбками»
Нарисуйте незакрашенный прямоугольник с толщиной границ равной 2 точки аквариум. Создайте две черепашки-рыбки. Напишите программу, при выполнении которой рыбки плавали бы в аквариуме по горизонтали на разных уровнях, отталкивались от стенок аквариума и меняли направление и форму. Добавьте в аквариум водоросли, ракушки, камни и раковины.
Решение

 
Проблем с рисованием незакрашенного прямоугольника быть не должно. Создаём черепаху и перетаскиваем на неё любую форму рыбки из имеющегося набора. Но по условию нам потребуются две зеркальные формы. Для этого в рюкзаке у черепашки на закладке «Формы» копируем добавленную нами форму и вставляем её на вторую позицию. Открываем скопированную форму в редакторе форм, дважды щёлкнув по ней. При помощи инструмента   

зеркально отображаем форму. Нажимаем ОК. Теперь можно перейти к написанию процедуры.

Мы уже знаем, как проверить, какой цвет находится под черепашкой. Задумаемся, какого результата мы хотим достичь. Во-первых, черепашка должна двигаться, во-вторых, встретив стенку, изменить форму и направление движения. Осталось перевести всё это на алгоритмический язык.
это рыба
нов_курс 270
повтори 43
[нов_форма 1 вп 2 жди 2
нов_форма 2 вп 2 жди 2
нов_форма 3 вп 2 жди 2] 
нов_курс 90
повтори 43
[нов_форма 4 вп 2 жди 2
нов_форма 5 вп 2 жди 2
нов_форма 6 вп 2 жди 2]
конец
Команда вп 1 внутри условия нужна для того, чтобы после проверки условия и изменения направления движения при следующем повторении черепашка сместилась бы с границы.
Помещаем имя процедуры в правила и ставим «Много раз». В поле ввода команд зададим рыбке начальный курс нк 90. Теперь оживим черепашку, чтобы проверить, что всё работает правильно.
Вторую рыбку совершенно не обязательно создавать с самого начала, так как процедура у неё будет в точности такая же. Поэтому просто копируем первую. В её копии удаляем формы и на их место из готовых форм перетаскиваем любую другую рыбку. Как и у первой черепашки делаем зеркально отражённую форму. Изменим имя процедуры с «рыба1» на «рыба2» как на закладке «Процедуры» так и на закладке «Правила».
Добавим кнопки «Пуск» и «Стоп» как это рассказано в проекте «Автомобили на дороге». Дополним наш аквариум различными подходящими к теме объектами. Например, можно добавить анимированную раскрывающуюся раковину, растения и т.п.
В принципе, проект готов. Смущает только, что рыбы перед тем как изменить направление движения выходят на половину за границу аквариума. Это связано с тем, что черепашка отслеживает цвет поля под ней точкой находящейся в точности на середине формы. Чтобы обойти подобный эффект, надо применить совершенно иной подход к решению данной задачи – координатный. То есть наша черепашка-рыба должна будет следить за изменением координат, а не цвета под ней.
Скопируем ещё раз любую из двух наших рыб и сместим её к правой или левой стенке аквариума (в зависимости от того куда она развёрнута) так, чтобы форма рыбки не вылезала за край. В рюкзаке черепашки на закладке «Состояние» смотрим её текущие координаты.

Рис. 37


Процедура котика
это котик
нм [-133 -45]
повтори 30 [ нов_форма 1 вп 0 жди 2 нов_форма 2 вп 0 жди 2 нов_форма 3 вп 0 жди 2 нов_форма 3 вп 0 жди 2 нов_форма 4 вп 0 жди 2 нов_форма 5 вп 0 жди 2 нов_форма 6 вп 0 жди 2 нов_форма 7 вп 0 жди 2 нов_форма 8 вп 0 жди 2 нов_форма 9 вп 0 жди 2 нов_форма 10 вп 0 жди 2 ]
повтори 2
конец


Проект готов, что бы посмотреть скачать.

0 коммент.:

Отправить комментарий