Команда "Повтори"

Начнем с "классики" Лого:

Цветки

TO Square :a
  Repeat 4 [ Forward :a Right 90 ]
END

TO Flower :x :y :a
  PU SetPos (List :x :y) PD SetH 0
  Repeat 36 [ PU Forward :a / 36 PD Square :a Left 10 ]
END

TO Flowers
  Clean Ht SetC 65
  SetPenSize 5 SetC  15 Flower -130  25 70
  SetPenSize 2 SetC  25 Flower   35 -60 45
  SetPenSize 3 SetC 125 Flower  180  30 55
  SetC 9 SetPenSize 1 PU Home PD 
END

Орнамент

TO Parket
  Clean PD
  Repeat 8 [ Repeat 8 [ FD 50 RT 45 ] RT 45 ]
END

Спирали

TO Spiral :d :s :a
  Cg HT PD
  Make "x :d
  Repeat INT 130 / :s [FD :x RT :a Make "x :x + :s]
  Wait 20
END

TO Spirals
  SetPenSize 3
  SetC 15 Spiral 0 1.2 53
  SetC 55 Spiral 0 4 90
  SetPenSize 2
  SetC 105 Spiral 0 3 178
  SetC 9 SetPenSize 1 PU Home PD 
END
А теперь -- несколько программ с "маленькими хитростями".

Стена

Все ряды кирпичей рисуются одной и той же процедурой -- но с разных сторон: то слева, то справа.

; (c)1991,1996 V. Batagelj

TO Line
  Repeat  8 [ PU BK 24 PD Stone PU BK 40 PD Brick ]
END

TO Build
  LT 90 
  Repeat  5 [ Line RT 90 PU FD 40 RT 90 FD 8 
    Line LT 90 PU FD 8 LT 90 FD 8 ]
END

TO Stone
  SetC 5 
  Repeat  4 [ FD 16 RT 90 ]
END

TO Brick
  SetC 85
  Repeat  2 [ FD 32 RT 90 FD 16 RT 90 ]
END

TO Wall
  SetPenSize 3 Clean PU HT BK 135 LT 90 FD 260 RT 90 PD Build
  SetC 9 SetPenSize 1 PU Home PD 
END

Олимпийские кольца

Обратите внимание на необычное решение процедуры "Circle". Благодаря этому очень легко можно изменять ширину кольца (вплоть до полного отсутствия отверстия).
; Olympic circles (idea Urska Lesjak).
; 1991,1996 V. Batagelj
; 1999 McKryak -- MicroWorld adaptation

TO Circle
  Repeat 360 [ FD 70 PD FD 7 PU BK 77 LT 1]
END

TO Olymp
  SetPenSize 3
  Clean HT PU FD 50 RT 90
  FD 165 LT 90 SetC 15 Circle
  LT 90 SetC 5 FD 165 Circle
  SetC 95 FD 165 Circle
  SetC 45 RT 40 BK 110 RT 140 Circle
  FD 165 SetC 55 Circle
  SetC 9 SetPenSize 1 PU Home PD 
END
А вот эта роща каждый раз вырастает по-разному. Не зря же в ней использован датчик случайных чисел.


TO Tree :t :a
  SetH 0  PU  SetPos :t  PD 
  SetC 35 SetPenSize 10  FD 10 * :a 
  LT 85  SetC 55 SetPenSize 5 
  Repeat 36 [ FD :a RT 10 ]
END





TO Wood
  Clean HT
  Repeat 30 
  [
    Tree ( List ( -250 + Random 500 ) ( -180 + Random 300 ) ) ( 3 + Random 4 )
  ]
  Setc 9 SetPenSize 1 PU Home PD 
END

PrevTOCNext
[Титульная страница][Макинтош][Информатика и ИТ][Лого]
Hosted by uCoz