多个多彩球碰边反弹
import pgzrun
import random
WIDTH=800
HEIGHT=400
balls = []
#定义100个小球的所有信息
for i in range (10):
x = random.randint(100, WIDTH-100) # 小球X方向坐标
y = random.randint(100, HEIGHT-100) # 小球Y方向坐标
speed_x = random.randint(1, 5) # 小球X方向速度
speed_y = random.randint(1, 5) # 小球y方向速度
r=random.randint(10,50)#小球半径
colorR = random.randint(10, 255)#小球颜色
colorG = random.randint(10, 255)#小球颜色
colorB = random.randint(10, 255)#小球颜色
#将100个小球存入列表
ball = [x, y, speed_x,speed_y, r, colorR, colorG, colorB]
balls.append(ball)
def draw():#画所有的同心圆
screen.fill('white')
for ball in balls:#绘制所有的圆
screen.draw.filled_circle((ball[0],ball[1]),ball[4],(ball[5],ball[6],ball[7]))
for x in range(1,ball[4],3):#以原来的圆心,画几个同心圆
screen.draw.filled_circle((ball[0], ball[1]), ball[4]-x, (random.randint(ball[5], 255), random.randint(ball[6], 255), random.randint(ball[7],255)))
def on_mouse_move(pos,rel,buttons):#当鼠标移动时 ,鼠标互动
if mouse.LEFT in buttons:#当按下鼠标左键时
x=pos[0]#鼠标的x坐标
y=pos[1]#鼠标的y坐标
speed_x = random.randint(1, 5) # 小球X方向速度
speed_y = random.randint(1, 5) # 小球y方向速度
r = random.randint(10, 50) # 小球半径
colorR = random.randint(10, 255) # 小球颜色
colorG = random.randint(10, 255) # 小球颜色
colorB = random.randint(10, 255) # 小球颜色
ball = [x, y, speed_x, speed_y, r, colorR, colorG, colorB]
balls.append(ball)
def update(): # 更新模块
for ball in balls:
ball[0] = ball[0]+ball[2] # 更新X方向坐标
ball[1] = ball[1]+ball[3] # 更新Y方向坐标
#碰壁时返弹
if ball[0] > WIDTH-ball[4] or ball[0] < ball[4]: # x方向上碰壁反弹
ball[2] = -ball[2]
if ball[1] > HEIGHT-ball[4] or ball[1] < ball[4]: # y方向上碰壁反弹
ball[3] = -ball[3]
pgzrun.go()