annstasi

drawbot_Задание1

Nov 26th, 2023 (edited)
1,077
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.44 KB | None | 0 0
  1. from drawbot_skia.drawbot import *
  2. import random
  3.  
  4. # Задание 1 - круги по вертикали
  5. def draw_ovals():
  6.     newDrawing()
  7.     # Размер полотна
  8.     size(500, 500)
  9.  
  10.     radius = 50
  11.     step = 110
  12.  
  13.     # Начальная позиция по горизонтали - середина полотна
  14.     x = width()/2 - radius
  15.     # Начальный отступ по вертикали
  16.     y = 35
  17.  
  18.     for i in range(4):
  19.         gradient = radialGradient(
  20.         (x + radius, y + radius),  # startPoint
  21.         (x + radius, y + radius), # endPoint (почему-то жаловался и игнорировал любые значения)
  22.         [(255, 0, 255, 1), (0, 0, 255, 1)]) # цвета градиента
  23.    
  24.         # Рисуем круг
  25.         oval(x, y, radius*2, radius*2)
  26.         # Делаем отступ по вертикали
  27.         y += step
  28.  
  29.     saveImage('ovals.pdf')
  30.  
  31.  
  32. # Задание 2 - квадраты по вертикали и горизонтали
  33. def draw_rectangles():
  34.     newDrawing()
  35.     size(500, 500)
  36.  
  37.     # Размер квадрата
  38.     side = 100
  39.     # Шаг
  40.     step = 20
  41.  
  42.     for col in range(5):
  43.         for row in range(5):
  44.             x = step + col * (side + step)
  45.             y = step + row * (side + step)
  46.        
  47.             shadow((5, 5), 15, (0, 0, 0.5))
  48.             fill(0.7, 0.65, 1)
  49.             rect(x, y, side, side)
  50.  
  51.     saveImage('rectangles.pdf')
  52.  
  53. # Задание 3 - творческое
  54. def draw_winter():
  55.     newDrawing()
  56.     size(500, 500)
  57.  
  58.     # Заполнение фона
  59.     fill(0.7, 0.65, 1)
  60.     rect(0, 0, 500, 500)
  61.    
  62.     # Снег внизу
  63.     fill(1, 1, 1)
  64.     rect(0, 0, 500, 150)
  65.  
  66.     step = 50
  67.     y = 300
  68.     width = 10
  69.     # Ель
  70.     for i in range(3):
  71.         fill(0.1, 0.7, 0.2)
  72.         polygon((100 - width, y), (200 + width, y), (150, y + step), close=True)
  73.         y -= step
  74.         width += width
  75.  
  76.     # Ствол дерева
  77.     fill(0.5, 0.4, 0.2)
  78.     rect(145, 150, 10, 50)
  79.  
  80.     # Снежинки
  81.     for i in range(70):
  82.         x = random.randint(0, 500)
  83.         y = random.randint(0, 500)
  84.         radius = random.randint(2, 15)
  85.         fill(1,1,1)
  86.         oval(x, y, radius, radius)
  87.  
  88.     # Солнце
  89.     shadow((0, 0), 30, (1, 1, 0))
  90.     fill(1, 0.9, 0.3)
  91.     oval(350, 350, 100, 100)
  92.  
  93.     saveImage('winter.pdf')
  94.  
  95.  
  96. draw_ovals()
  97. draw_rectangles()
  98. draw_winter()
Advertisement
Add Comment
Please, Sign In to add comment