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

本文介绍了使用Python和pymunk物理引擎实现的愤怒的小鸟游戏。游戏支持不同种类的小鸟和障碍物,具备关卡保存功能,并展示了游戏截图。通过pymunk实现碰撞检测和物理效果,包括重力、旋转等。文章还详细讲解了pymunk的基本类和初始化设置,以及如何处理物体碰撞的回调函数。
摘要由CSDN通过智能技术生成

游戏介绍

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

功能实现如下:

支持小鸟类型:红色小鸟,蓝色小鸟,黄色小鸟。

支持障碍物的类型:玻璃,木头,石头。

支持障碍物的形状:各种长度的长方形,正方形和圆形。

使用json文件保存关卡信息,设置小猪和障碍物的位置。

游戏截图如下:

图2

图3

完整代码

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

这边是csdn的下载链接 愤怒的小鸟

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 mainly as a static shape.

交流群:632408235

1 import pymunk as pm

2

3 class Physics():

4 def __init__(self):

5 self.reset()

6

7 def reset(self, level=None):

8 self.level &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值