如何用一根棍子击打来使球移动?

时间:2019-05-31 02:55:22

标签: python tkinter

这是我的作业: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)

我希望与球和木棒的碰撞会使球运动,但是,实际输出是球根本不运动或者只是在没有碰撞的情况下自身运动。

0 个答案:

没有答案