用python中的pygame zero库实现小球碰撞
import pgzrun
WIDTH = 800
HEIGHT = 600
ball = []
x = WIDTH / 2 - 200
y = HEIGHT / 2
speed = 10
r = 30
class Ball:
def __init__(self, speedx, speedy, x, y, r, color):
self.speedx = speedx
self.speedy = speedy
self.x = x
self.y = y
self.r = r
self.color = color
def draw():
screen.fill((128, 200, 120))
for i in ball:
screen.draw.filled_circle((i.x, i.y), i.r, i.color)
def ballL(a, b):
return ((a.x - b.x)**2 + (a.y - b.y)**2)**0.5
def moving(i):
i.x = i.x + i.speedx
if i.x >= WIDTH - i.r or i.x <= i.r:
i.speedx = -i.speedx
i.y = i.y + i.speedy
if i.y >= HEIGHT - i.r or i.y <= i.r:
i.speedy = -i.speedy
def update():
for i in ball:
moving(i)
for i in range(3):
if i == 2:
break;
for j in range(i+1, 3):
if ballL(ball[i], ball[j]) <= ball[i].r + ball[j].r:
ball[i].speedx = -ball[i].speedx
ball[i].speedy = -ball[i].speedy
ball[j].speedx = -ball[j].speedx
ball[j].speedy = -ball[j].speedy
color = [(128, 80, 180), (250, 100, 180), (20, 80, 250)]
for i in range(3):
ball.append(Ball(speed, speed, x, y, r, color[i]))
x += 200
pgzrun.go()