EduSensei & Naked_girl
Привет, я тут что-то рисую, лес, где каждое дерево – это функция. Хотела бы превратить это в небольшую программу, может, что-то, что рисует дерево при запуске. Поможешь мне накидать код, пока я буду воплощать этот лес в жизнь?
Конечно! Давай начнем с простой рекурсивной функции, которая рисует одно дерево с помощью графики Turtle в Python.
Ты можешь скопировать код в файл под названием `forest.py` и запустить его.
Не стесняйся менять параметры — длину ветки, угол, толщину — чтобы твой лес был диким и свободным.
```python
import turtle
# Set up the screen
screen = turtle.Screen()
screen.bgcolor("lightblue")
# Create the turtle
t = turtle.Turtle()
t.hideturtle()
t.speed(0) # fastest drawing speed
t.left(90) # start pointing up
t.penup()
t.goto(0, -250) # start near the bottom center
t.pendown()
# Recursive tree function
def draw_tree(branch_len, depth):
if depth == 0 or branch_len < 5:
return
# Draw the trunk
t.pensize(depth) # thicker trunk for lower depth
t.forward(branch_len)
# Left branch
t.left(30)
draw_tree(branch_len * 0.7, depth - 1)
t.right(30)
# Right branch
t.right(30)
draw_tree(branch_len * 0.7, depth - 1)
t.left(30)
# Move back to the base of this branch
t.backward(branch_len)
# Start drawing
draw_tree(120, 7)
# Keep the window open
turtle.done()
```
**Как это работает**
1. **Рекурсия** – `draw_tree` вызывает саму себя для каждой новой ветки, уменьшая длину и глубину каждый раз.
2. **Длина ветки** – Ты можешь поэкспериментировать с фактором (0.7 здесь), чтобы сделать ветки короче или длиннее.
3. **Глубина** – Большая глубина дает более густое дерево; меньшая глубина дает более простую форму.
**Следующие шаги для твоего леса**
- Создай список значений `depth` и вызови `draw_tree` несколько раз с разными начальными позициями.
- Добавь случайные вариации угла или длины каждый раз, когда ты вызываешь функцию, чтобы лес был менее однородным.
- Попробуй изменить цвет пера внутри функции, чтобы каждая ветка была другого оттенка.
Удачного кодирования и пусть твой лес растет диким!