这个程序采用turtle和pymunk相结合。这一点就有所创新性,程序运行后,单击海龟画图屏幕会有一个弹球往下掉。碰到拦板会反弹,当然碰到其它弹球也会有互碰效果。为了固定FPS,借用了pygame模块的Clock时钟类。下面是部分源码预览:
""" 纯画笔turtle与pymunk弹球1。 本程序结合pygame,turtle和pymunk模块。 单击屏幕会有小球落下,小球们和挡板都是 用一个海龟画出来的。在本程序的while循环中 还限制了fps,这是通过导入pygame的Clock类实现的。 请注意这个物理弹球与第86个例子中《3D物理互碰弹球》 中的区别。在那个例子中,弹球们都是一个个的海龟对象, 而这个例子即终只有两个海龟对象,海龟本身是不显示的。 一只负责渲染所所有画面,另一只用来显示fps,即帧率的。 本程序中函数有使用全局变量,还可以再度进行优化调整。 """ __author__ = "李兴球" __date__ = "2019/10/7" __blog__ = "www.lixingqiu.com" import math # 导入数学模块 import pymunk # 导入pymunk模块 import turtle # 导入海龟模块 from pygame.time import Clock # 导入Clock类 def draw_circle(radius): """ 画圆形,本程序是在turtle中心点画一个填充圆形。 为了突出弹球的旋转显示效果,多画了一根线。 """ turtle.begin_fill() turtle.fd(radius) turtle.left(90) turtle.circle(radius) turtle.right(90) turtle.color('black') # 画线突出旋转 turtle.down() turtle.bk(radius) turtle.up() turtle.color('dodger blue') turtle.end_fill() ........................................ 抬头 = "纯画笔turtle与pymunk弹球by lixingqiu" width,height = 800,600 screen = turtle.getscreen() # 小球所在屏幕 screen.setup(width,height) screen.bgcolor('cyan') screen.tracer(0,0) screen.title(抬头) screen.update() space = pymunk.Space() # 创建物理空间 space.gravity = 0,-100 # 设置重力参数 balls = [] # 存储每个小球形状的列表 # 下面是建立拦板 a,b ,c= (-100,-100),(100,-100),(100,100) make_board() # 显示fps的海龟对象 ft = ("",22,'normal') fps_turtle = turtle.Turtle(visible=False) turtle.up() fps_turtle.goto(300,240) ........................
如需要查看完整源代码,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)