Проект ДООИ, команда 008. Проект на "ПОЛЕ ЧУДЕС.
e-mail - sch640@nw.mail
Автор - Ступаков Михаил, работает в Logo 1-ый год, самостоятельно освоил многие понятия - работу с переменной, параметрами. Узнав просписки, активно стал их использовать. Это можно увидеть в проекте "Шифровка" - файл POLE2_08.mw2.

Предлагаем 2 маленьких проекта, выполненных в среде LogoWriter3.2.
Оба содержатся в текстовом файле pole1_08.txt в формате DOS.
Этот файл можно загрузить в окно программ (LogoWriter) командой
loadtext "pole1_08.txt

1 проект - часы. Запуск - time :hour :minute :second
2 проект - гусеница. Запуск - gusen :zw :angl, где
:zw - число звеньев, :angl - угол поворота.
Последнюю задачу не усмпели послать на конкурс из-за болезни автора.


Михаил Ступаков, 7в класс. Часы.

Необходимые команды:

time ( базовая )

tttt ( вывод на текст )

sec ( подсчет и вывод граф. информации в виде стрелок )

proverka ( проверка правильности вводимых данных )

rrrr ( рисование циферблата )

el_2 , el_3 ( для стрелки )

to tttt
ct insert :second pr "_seconds insert :minute pr "_minutes insert :hour pr "_hours pr :txt
end

to tower :a :b :c
rg pu sety -190
setc 1 kv :a
fd :a rt 90 fd (:a - :b) / 2 lt 90
setc 2 kv :bfd :b rt 90 fd (:b - :c) / 2 lt 90
setc 3 kv :c
end

to time :hour :minute :second
proverka clean pu home rrrr pd repeat 9999 [sec tttt]
end

to sec
seth :second * 6 el_2 100 1 seth :minute * 6 el_2 80 1
seth :hour * 30 el_2 60 1
wait 10
seth :second * 6 el_3 100 seth :minute * 6 el_3 80 seth :hour * 30 el_3 60
make "second :second + 1 if :second = 60 [make "second 0
make "minute :minute + 1 if :minute = 60 [make "minute 0 make "hour :hour + 1 if :hour > 12 [make "hour 0 ifelse :txt = [ AM. ] [ make "txt [ PM. ]] [ make "txt [ AM. ]]]]]
end

to el_3 :g
el_2 :g 0
end

to proverka
ifelse :hour > 12 [ make "hour :hour - 12 if :hour > 12 [ make "hour 12 ] make "txt [ PM. ] ] [ make "txt [ AM. ] ]
if :hour < 0 [ make "hour 0 ]
if :minute > 59 [ make "minute 59 ]
if :minute < 0 [ make "minute 0 ]
if :second > 59 [ make "second 59 ]
if :second < 0 [ make "second 0 ]
end

to rrrr
setsh 31
setc 1 repeat 12 [ pu fd 105 pd repeat 10 [stamp fd 1 ] bk 10 pu bk 105 rt 6 repeat 4 [ fd 110 pd repeat 5 [ stamp fd 1 ] bk 5 pu bk 110 rt 6]]
end

to hhhh
rg pu lt 90 repeat 9999 [setsh 16 wait 5 setsh 17 wait 5 fd 10 ]
end

Задача Гусеница Идет По Кругу(с произвольным числом звеньев и углом поворота)

Михаил Ступаков, 7в 640 школа

Необходимые Программы:
el_5 (звено гусеницы)
gusen <кол-во звеньев> <угол поворота> (базовая программа)

to el_5
быстро repeat 360 / 5 [fd .75 rt 5 ]
end

to gusen :zw :angl
rg setc 9 make "a :angl repeat :zw [ pd el_5 pu rt 90 fd 17 lt 90 - :a]
repeat 1000 [ gus2 :a lt 90 + :a fd 13 setsh 12 setc 0 pd stamp pu setc 9 fd 4 rt 90 setsh 90 ]
end

to gus2 :b

repeat ( :zw + 1 ) [ lt 90 + :b fd 17 rt 90 ] pd el_5 pu repeat ( :zw + 1 ) [ lt 90 bk 17 rt 90 + :b ]
end

to gusen2 :woln
rg setc 9 make "a :woln make "b 0 - :woln
repeat 6 [pd el_5 pu rt 90 fd 17 lt 90 - :a ]
repeat 6 [pd el_5 pu rt 90 fd 17 lt 90 - :b ]
make "aa :a make "bb 0

repeat 9999 [repeat 6 [ ] repeat :zw [ gus3 :aa ] if :bb > :zw [ make "aa 0 - :aa make "bb 0 ] rt 90 fd 17 pd el_5 pu lt 90 fd 17 rt 90 repeat :zw [ gus4 :aa ] repeat :zw [ gus4 ( 0 - :aa ) ] setsh 12 setc 0 pd stamp pu setc 9 setsh 90 make "bb :bb + 1 ]

end

to gus3 :an
purt 90 - :an
fd 17
lt 90
end

to gus4 :an
pu
rt 90
bk 17
lt 90 - :an
end