Как заставить объекты сталкиваться с tkinter - PullRequest
1 голос
/ 02 июля 2019

Я очень новичок в программировании, и я пытаюсь сделать простую анимацию, где я добавляю 10 холстов случайного размера, случайного цвета и случайной скорости к холсту.Вот код:

from tkinter import *
import random
import time

WIDTH = 900
HEIGHT = 700

tk = Tk()
canvas = Canvas(tk, width = WIDTH, height = HEIGHT)
tk.title("Drawing")
canvas.pack()

COLORS = ["white", "black", "red", "blue", "green", "yellow", "purple", "orange", "gray"]
balls = []

class Ball:

    def __init__(self, color, size):
        self.shape = canvas.create_oval(10, 10, size, size, fill = color)
        self.xspeed = random.randrange(-11, 11)
        self.yspeed = random.randrange(-11, 11)

    def move(self):
        canvas.move(self.shape, self.xspeed, self.yspeed)
        pos = canvas.coords(self.shape)
        if pos[3] >= HEIGHT or pos[1] <= 0:
            self.yspeed = -self.yspeed
        if pos[2] >= WIDTH or pos[0] <= 0:
            self.xspeed = -self.xspeed

for i in range(10):
    size = random.randrange(20, 150)
    color = random.choice(COLORS)
    balls.append(Ball(color, size))

while True:
    for ball in balls:
        ball.move()
    tk.update()
    time.sleep(0.01)

tk.mainloop()

Проблема в том, что шары могут перекрывать друг друга, т.е. когда шары касаются друг друга, ничего не происходит.Я хочу, чтобы шары отскакивали друг от друга, когда они касаются.Я провел несколько часов в поисках ответа и пробовал разные вещи, но, похоже, ничто не помогло.Не могли бы вы, ребята, помочь мне?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...