伽尔顿板(可视)
Galton Plate
本项目100%python,只另加装pygame包,走的依然新手(有基础)向(主要是我菜,哈哈)。
main()
def main():
global balls, balls_num #balls是包含每一个小球(ball)属性(如位置)的列表,balls_num是小球个数
ball = [packages.pic.Balls("balls.png", screen, (2*balls_r, 2*balls_r)),
[0, 0], [WIDTH/2 - balls_r, 50]]
balls.append(ball)
balls[0][0].create(balls[0][2])#显示出第一个小球
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()
if event.type == pygame.MOUSEBUTTONDOWN:#鼠标点击则添加一个新的小球
balls_num += 1
ball = [packages.pic.Balls("balls.png", screen, (balls_r * 2, balls_r * 2)),
[0, 0], [WIDTH/2 - balls_r, 50]]
#packages.pic是自己写的包,功能是加载一张按比例缩放后的图片,注:Balls类还有一个用于显示图片的方法create(pos)
balls.append(ball)
draw() #我将画面显示全部置于此函数
pygame.display.update()
fps_clock.tick(FPS)
main()
其实main函数都是框架,水分挺大。。。
draw()
def draw():
global balls_start_num, balls, bars_num
wood_background.create((0, 0)) #背景
# the ball on falling
#判断小球撞击
for i in range(balls_start_num, balls_num-1): #判断是否撞击并改变球水平方向的速度
balls[i][0].create(balls[i][2])
delta_y = BAR_TOP + BAR_WIDTH * (MAX_LEN - 1/2) - balls[i][