Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import turtle
- import time
- # --- Настройка окна и параметры ---
- wn = turtle.Screen()
- wn.setup(800, 400)
- wn.title("День → Ночь (без sin/cos, через goto)")
- wn.tracer(0)
- W, H = 800, 400
- ground_y = -140 # уровень земли (нижняя полоса)
- # --- Рисуем простую землю один раз ---
- def draw_ground():
- turtle.clear()
- turtle.penup()
- turtle.goto(-W//2, ground_y)
- turtle.color("#228B22")
- turtle.begin_fill()
- turtle.pendown()
- turtle.forward(W)
- turtle.right(90)
- turtle.forward(H//2)
- turtle.right(90)
- turtle.forward(W)
- turtle.right(90)
- turtle.forward(H//2)
- turtle.right(90)
- turtle.end_fill()
- turtle.penup()
- # объект, рисующий солнце/луну
- t = turtle.Turtle()
- t.hideturtle()
- t.penup()
- t.speed(0)
- def draw_sun(x, y):
- t.clear()
- t.goto(x, y)
- t.dot(44, "#FFD700")
- def draw_moon(x, y):
- t.clear()
- t.goto(x, y)
- t.dot(40, "#F8F8FF")
- # серп: перекрывающий кружок цвета неба справа от центра
- t.goto(x + 12, y + 3)
- t.dot(36, wn.bgcolor())
- # --- Параметры «ручной» траектории ---
- center_x = 0
- radius = 340 # условный «половинный размах» по X
- base_y = ground_y + 20 # уровень откуда поднимается солнце
- max_height = 160 # максимальное приподнятие над base_y
- step = 16 # шаг по X в пикселях (меньше — плавнее)
- # готовим список координат слева→направо
- coords = []
- for x in range(-radius, radius + 1, step):
- # нормализуем x в [-1..1]
- nx = x / radius
- tval = 1 - nx*nx # параболическая аппроксимация полуокружности
- if tval < 0:
- y = base_y # за краями держим near-horizon
- else:
- y = base_y + int(tval * max_height)
- coords.append((center_x + x, y))
- for i in range(5):
- # --- День: двигаем солнце слева → направо ---
- wn.bgcolor("#87CEEB")
- draw_ground()
- wn.update()
- for (x,y) in coords:
- draw_sun(x, y)
- wn.update()
- time.sleep(0.03)
- # переключаемся на ночь (фон чёрный), перерисовываем землю
- wn.bgcolor("black")
- draw_ground()
- wn.update()
- time.sleep(0.2)
- # --- Ночь: двигаем луну слева → направо по той же траектории ---
- for (x,y) in coords:
- draw_moon(x, y)
- wn.update()
- time.sleep(0.03)
- turtle.done()
Advertisement
Add Comment
Please, Sign In to add comment