这是我的作业: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)
我希望与球和木棒的碰撞会使球运动,但是,实际输出是球根本不运动或者只是在没有碰撞的情况下自身运动。