Advertisement
Chl_Snt

Zap

Nov 20th, 2022
822
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.53 KB | None | 0 0
  1. import time
  2. from tkinter import *
  3.  
  4. root = Tk()
  5. root.title("Second Exercise")
  6. root.geometry("1500x400")
  7. root.resizable(False, False)
  8.  
  9. canvas = Canvas(root, bg="green")
  10. canvas.pack(fill=BOTH, expand=True)
  11.  
  12. canvas.create_rectangle(0, 40, 1500, 360, fill='black')
  13. speed = 0.005
  14.  
  15. # Габариты - power = 10
  16. # Ближний - power = 500
  17. # Дальний - power = 1000
  18. power = 10
  19.  
  20.  
  21. def roundRect(type: str, x, y, x2=None, y2=None, sharpness=5, **kwargs):
  22.     if sharpness < 2:
  23.         sharpness = 2
  24.  
  25.     if type == "rect":
  26.         x = [x, x2, x2, x]
  27.         y = [y, y, y2, y2]
  28.  
  29.     ratioMultiplier = sharpness - 1
  30.     ratioDividend = sharpness
  31.  
  32.     points = []
  33.  
  34.     for i in range(len(x)):
  35.         # Set vertex
  36.         points.append(x[i])
  37.         points.append(y[i])
  38.  
  39.         if i != (len(x) - 1):
  40.             points.append((ratioMultiplier * x[i] + x[i + 1]) / ratioDividend)
  41.             points.append((ratioMultiplier * y[i] + y[i + 1]) / ratioDividend)
  42.             points.append((ratioMultiplier * x[i + 1] + x[i]) / ratioDividend)
  43.             points.append((ratioMultiplier * y[i + 1] + y[i]) / ratioDividend)
  44.         else:
  45.             points.append((ratioMultiplier * x[i] + x[0]) / ratioDividend)
  46.             points.append((ratioMultiplier * y[i] + y[0]) / ratioDividend)
  47.             points.append((ratioMultiplier * x[0] + x[i]) / ratioDividend)
  48.             points.append((ratioMultiplier * y[0] + y[i]) / ratioDividend)
  49.             points.append(x[0])
  50.             points.append(y[0])
  51.  
  52.     return canvas.create_polygon(points, **kwargs, smooth=TRUE)
  53.  
  54.  
  55. car = roundRect('rect', 40, 60, 210, 170, 5, fill='blue')
  56. light_1 = roundRect('poly', [230, 230 + power, 230 + power], [85, 60, 110], sharpness=4, fill='yellow')
  57. light_2 = roundRect('poly', [230, 230 + power, 230 + power], [145, 120, 170], sharpness=4, fill='yellow')
  58.  
  59. while True:
  60.  
  61.     for x in range(0, 1500, 50):
  62.         canvas.create_rectangle(x, 190, x + 20, 200, fill='white')
  63.     canvas.move(car, 0, -4)
  64.     canvas.move(light_1, 0, -4)
  65.     canvas.move(light_2, 0, -4)
  66.     canvas.update()
  67.     time.sleep(speed)
  68.     for x in range(0, 1500, 50):
  69.         canvas.create_rectangle(x, 190, x + 20, 200, fill='black')
  70.  
  71.     for x in range(25, 1500, 50):
  72.         canvas.create_rectangle(x, 190, x + 20, 200, fill='white')
  73.     canvas.move(car, 0, 4)
  74.     canvas.move(light_1, 0, 4)
  75.     canvas.move(light_2, 0, 4)
  76.     canvas.update()
  77.     time.sleep(speed)
  78.     for x in range(25, 1500, 50):
  79.         canvas.create_rectangle(x, 190, x + 20, 200, fill='black')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement