纯画笔turtle与pymunk物理引擎弹球1带fps帧率源码

纯画笔turtle与pymunk弹球by lixingqiu

纯画笔turtle与pymunk弹球by lixingqiu


这个程序采用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资源。)

关于李兴球

李兴球的博客是Python创意编程原创博客
此条目发表在pygame, pymunk, python, turtle分类目录。将固定链接加入收藏夹。