Python 愤怒的小鸟代码实现:物理引擎pymunk使用

本文介绍了使用Python和pymunk物理引擎实现愤怒的小鸟游戏的详细过程。游戏支持不同种类的小鸟和障碍物,并通过json文件保存关卡信息。pymunk是一个基于Chipmunk的2D物理引擎,文章讲解了如何初始化空间、设置重力、创建物体、处理碰撞以及更新物体状态。代码已上传至GitHub。
摘要由CSDN通过智能技术生成

游戏介绍

最近比较忙,周末正好有时间写了python版本的愤怒的小鸟,使用了物理引擎pymunk,图片资源是从github上下载的,实现了一个可玩的简单版本。

功能实现如下:

  • 支持小鸟类型:红色小鸟,蓝色小鸟,黄色小鸟。
  • 支持障碍物的类型:玻璃,木头,石头。
  • 支持障碍物的形状:各种长度的长方形,正方形和圆形。
  • 使用json文件保存关卡信息,设置小猪和障碍物的位置。

游戏截图如下:

图2

图3

完整代码

游戏实现代码的github链接 愤怒的小鸟

Pymunk介绍

pymunk是一个2D的物理引擎, 它实际是封装了 c语言写的2D物理引擎Chipmunk,可以实现碰撞,旋转等物理运动。

安装pymunk,可以直接使用pip工具,安装最新的pymunk 5.5.0:

1     pip install pymunk

介绍下在pymunk中会使用到的四个基本的类:

  • 刚体 (pymunk.Body):一个刚体具有物体的物理属性(质量、坐标、旋转角度、速度等),它自己是没有形状的。
  • 碰撞形状 (pymunk.Circle, pymunk.Segment and pymunk.Poly):通过将形状附加到实体,你可以定义一个实体的形状。你可以将多个形状附加到单个实体上来定义一个复杂的形状,如果不需要形状,则可以不附加任何形状。
  • 约束/关节 (pymunk.constraint.PinJoint, pymunk.constraint.SimpleMotor):你可以在两个实体之间附加关节以约束它们的行为。比如在两个实体间保持一个固定的距离。
  • 空间 (pymunk.Space): 空间是pymunk中基本的模拟单元。你可以添加实体,形状和关节到空间,然后整体更新空间。pymunk会控制空间中所有的实体,形状和关节如何相互作用。

代码实现

将物理引擎相关的代码单独放在了一个文件 (source\component\physics.py)中,减少代码的耦合。
定义了一个Physics类,向外提供所有物理引擎相关的函数。
这篇文章只介绍physics.py 中pymunk相关的代码。

pymunk相关初始化

reset 函数初始化了 空间类(pm.Space), 设置了两个参数

  • gravity : 重力
  • dt (Time step length) : 表示pymunk中每次更新的时间段值,比如dt值是0.002,表示时间段是0.002秒。

setup_lines函数设置了一条直线,作为地面。
Segment类创建了一条从点a 到 点b的直线。

1 class pymunk.Segment(body, a, b, radius) 2 Bases: pymunk.shapes.Shape 3 A line segment shape between two point. Meant
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值