Hasli4

Untitled

Mar 6th, 2026 (edited)
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.75 KB | None | 0 0
  1. import turtle
  2. import time
  3.  
  4. # --- Настройка окна и параметры ---
  5. wn = turtle.Screen()
  6. wn.setup(800, 400)
  7. wn.title("День → Ночь (без sin/cos, через goto)")
  8. wn.tracer(0)
  9.  
  10. W, H = 800, 400
  11. ground_y = -140   # уровень земли (нижняя полоса)
  12.  
  13. # --- Рисуем простую землю один раз ---
  14. def draw_ground():
  15.     turtle.clear()
  16.     turtle.penup()
  17.     turtle.goto(-W//2, ground_y)
  18.     turtle.color("#228B22")
  19.     turtle.begin_fill()
  20.     turtle.pendown()
  21.     turtle.forward(W)
  22.     turtle.right(90)
  23.     turtle.forward(H//2)
  24.     turtle.right(90)
  25.     turtle.forward(W)
  26.     turtle.right(90)
  27.     turtle.forward(H//2)
  28.     turtle.right(90)
  29.     turtle.end_fill()
  30.     turtle.penup()
  31.  
  32. # объект, рисующий солнце/луну
  33. t = turtle.Turtle()
  34. t.hideturtle()
  35. t.penup()
  36. t.speed(0)
  37.  
  38. def draw_sun(x, y):
  39.     t.clear()
  40.     t.goto(x, y)
  41.     t.dot(44, "#FFD700")
  42.  
  43. def draw_moon(x, y):
  44.     t.clear()
  45.     t.goto(x, y)
  46.     t.dot(40, "#F8F8FF")
  47.     # серп: перекрывающий кружок цвета неба справа от центра
  48.     t.goto(x + 12, y + 3)
  49.     t.dot(36, wn.bgcolor())
  50.  
  51. # --- Параметры «ручной» траектории ---
  52. center_x = 0
  53. radius = 340            # условный «половинный размах» по X
  54. base_y = ground_y + 20  # уровень откуда поднимается солнце
  55. max_height = 160        # максимальное приподнятие над base_y
  56. step = 16               # шаг по X в пикселях (меньше — плавнее)
  57.  
  58. # готовим список координат слева→направо
  59. coords = []
  60. for x in range(-radius, radius + 1, step):
  61.     # нормализуем x в [-1..1]
  62.     nx = x / radius
  63.     tval = 1 - nx*nx          # параболическая аппроксимация полуокружности
  64.     if tval < 0:
  65.         y = base_y            # за краями держим near-horizon
  66.     else:
  67.         y = base_y + int(tval * max_height)
  68.     coords.append((center_x + x, y))
  69. for i in range(5):
  70. # --- День: двигаем солнце слева → направо ---
  71.     wn.bgcolor("#87CEEB")
  72.     draw_ground()
  73.     wn.update()
  74.     for (x,y) in coords:
  75.         draw_sun(x, y)
  76.         wn.update()
  77.         time.sleep(0.03)
  78.  
  79. # переключаемся на ночь (фон чёрный), перерисовываем землю
  80.     wn.bgcolor("black")
  81.     draw_ground()
  82.     wn.update()
  83.     time.sleep(0.2)
  84.  
  85. # --- Ночь: двигаем луну слева → направо по той же траектории ---
  86.     for (x,y) in coords:
  87.         draw_moon(x, y)
  88.         wn.update()
  89.         time.sleep(0.03)
  90.  
  91. turtle.done()
Advertisement
Add Comment
Please, Sign In to add comment