как я могу заставить мяч двигаться при помощи палки? - PullRequest
2 голосов
/ 31 мая 2019

Это моя домашняя работа: Python, используя tkinter / Spyder.В Python я хочу сделать симуляцию: на холсте есть неподвижный шар, и я использую палку, чтобы ударить по мячу (столкновение) и заставить его двигаться.

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

def get_position(self):
    return self.canvas.coords(self.item)

# ...

def check_collisions(self):
    Ball_coords = self.Ball.get_position()
    items = [Stick, Ball]
    items = self.canvas.find_overlapping(Ball_coords)
    items = [self.items[x] for x in items if x in self.items]
    self.Ball.collide(items)  

def move(self, velocity):
    coords = self.get_position()
    width = self.canvas.winfo_width()
    if coords[0] + velocity >= 0 and coords[2] + velocity <= width: 
#coords == [x1, y1, x2, y2]
        super(Stick, self).move(velocity, 0)
vx = -3
vy = 0
dt = .1
for it in range(100000):   
    dx = vx * dt
    dy = vy * dt
    x += dx
    if x-r < xmin : vx = -vx
    if y-r < ymin : vy = -vy
    if x+r > xmax : vx = -vx
    if y+r > ymax : vy = -vy

canvas.move(Ball,dx,dy)
window.update()
time.sleep(0.000001)

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

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