Решения, приведенные здесь, безусловно, не являются единственно правильными. Для некоторых задач решения не приводятся, и даны лишь указания, которые должны помочь в поисках правильного пути.
1. Раскручивающаяся спираль
Здесь необходимо учесть два момента. Во-первых, в отличие от закручивающейся спирали, в этой процедуре Черепашка с каждым витком спирали увеличивает его длину. Во-вторых, так как с каждым повторным вызовом процедуры параметр ее (длина звена) увеличивается, то следует соответственно изменить и условие остановки.
3. Пятиугольная и шестиугольная спирали
Вспомните, как определяется угол поворота Черепашки при рисовании 5- и 6-угольников.
4. Спираль с изменяющимися звеном и углом поворота
Здесь меняющийся угол поворота следует ввести в качестве второго входного параметра процедуры, которая, по-видимому, может выглядеть следующим образом.
to spiral :size :angle if :size<2 [stop] fd :size rt :angle spiral :size-2 :angle-0.1 endВызовите процедуру с параметрами 150 120 или 100 90.
5. Самостирающаяся спираль
Проследите внимательно, в каком положении Черепашка завершает рисование закручивающейся спирали. Как следует ее развернуть, чтобы направить вдоль последнего звена спирали? В каком направлении должна поворачиваться Черепашка, чтобы пройти весь путь по спирали обратно?
По-видимому, наша программа будет состоять из трех процедур.
Одна процедура расскажет Черепашке как рисовать уже знакомую нам закручивающуюся спираль.
Другая процедура объяснит ей, как со стирательной резинкой в "руке" пройти этот путь в обратном направлении.
Третья же процедура - главная - сначала вызовет первую процедуру, затем развернет Черепашку в нужном напрвлении, даст ей в "руку" стирательную резинку и вызовет вторую процедуру.
Наша программа будет интересней, если процесс стирания/рисования мы повторим несколько раз. Тогда прогрмма может выглядеть, например, следующим образом.
to spiral.right :size ;Закручивающаяся "правая" спираль if :size<2 [stop] fd :size rt 90 spiral.right :size-2 end to spiral.left :size ;Раскручивающаяся "левая" спираль if :size>150 [stop] fd :size lt 90 spiral.left :size+2 end to spirals.main ;Главная процедура ;Использует команду ppt - перо рисуй cs repeat 10[spiral.right 150 pe rt 90 spiral.left 2 ppt lt 90] end
6. Самостирающиеся треугольные, пяти- и шестиугольные спирали
Отличие этой задачи от предыдущей только в углах поворота. Вспомните, как определяется угол поворота Черепашки при рисовании треугольников, 5- и 6-угольников.