隔离太无聊!不如用Python实现愤怒的小鸟,看看能否通关!

【Pygame小游戏】超好玩的——Python版“愤怒的小鸟”,我能玩上一整天(附源码) 导语 哈喽!大家好!今天给大家更新一款经典小游戏吖! 十几年过去了,这款游戏渐渐被人遗忘。这是多少人的童年呢? 过气游戏?小鸟不angry,你还真以为我是“hello bird”? ​ 现在的冷天气,除了穿多点儿衣服,可能就要靠这只火爆的小鸟给大家升温了! ​正文 首先环境安装部分: 准备—Python3.6、Pycharm2021、最主要的游戏模块Pygame、以及一些自带的模块直接可用的。 游戏源码可版本不一致也能运行,相应的模块安装好就可,自行安排! pip install -i 阅读详情

大家好,我是菜鸟哥!

最近上海的疫情还是很猛,每天新增1万多,很多同事,同学都是居家办公,居家隔离。这波疫情时间已经有一段时间了,大家都窝在家里也不好受。房子就那么大,不能出去,蔬菜也不多,亲戚在上海,每天凌晨5点多抢菜,真心不易。为了打发时间,只能煲煲剧,或者打打游戏。

3e5d989e6b6db3641a408981a28aed54.png

说到打游戏,菜鸟哥以前写过好几个Python玩游戏的文章:

牛逼,两百行Python代码带你打造一款《天天酷跑》游戏!

太好玩了!用Python写个弹球游戏2.0

太好玩了,我用Python写了个火影忍者版的连连看

手把手教你!100行代码,用Python做一个“消灭病毒”的小游戏

既然是学Python,今天我们来玩一个好玩的东西。发现一款用python来打造的《愤怒的小鸟》游戏,下载来玩,非常的有趣好玩,不知不觉就玩了好久。

220a7b0be71b5dc8575e531fd38d1241.png

今天就和大家一起来分享这个游戏源码,力争让大家看的开心,玩的舒心。

由于程序代码量过于庞大,对于程序的细节内容,菜鸟哥会着重点来同大家进行分析。菜鸟哥希望能从游戏本身的角度出发,来让大家更好的体验游戏,首先,我们来看一下游戏的效果。

视频来袭

接下来,我们首先来展示各个py文件下都包含哪些内容。

1d721e450fcca4a481004536eb062d9e.png

由上面的程序组织架构图可以看出,游戏包含了四个py文件内容,分别对应着不同的功能。接下来我们针对四个py文件进行简要的分析。

在程序中,我们使用到以前菜鸟哥未曾提到的库——pymunk。

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

pymunk下具有四个常用的类:

  • pymunk.Body:Body具有物体的物理属性(质量、坐标、旋转角度、速度等),但是它没有的形状。

  • 碰撞形状 (pymunk.Circle, pymunk.Segment and pymunk.Poly):通过将形状附加到实体,可以定义一个实体的形状。

  • 约束/关节 (pymunk.constraint.PinJoint, pymunk.constraint.SimpleMotor):在两个实体之间,可以用关节以约束它们的行为。比如在两个实体间保持一个固定的距离。

  • 空间 (pymunk.Space): 空间是pymunk中基本的模拟单元。用来添加实体,形状和关节。在Space下,pymunk可以控制所有的实体,形状和关节,以及他们直接的相互作用。

polygon.py

在polygon.py文件中,包含Polygon类,主要是用来画出界面当中的柱子以及横梁。

2ccc42cbf6cc53aebd3edb8321080d38.png

上图中的draw_poly函数,35-36行利用to_pygame函数将pymunk下的坐标转换为pygame下的坐标;

39-48行程序中,如果element是“横梁”,那么就根据poly对象的坐标,在界面上画出横梁,同理,如果element是“柱子”的话,则在界面上对应的画出柱子。实现效果如下图所示。

77c729ebc32d2b0d2481198677bcab17.png

characters.py

characters.py文件下,主要包含了小猪和小鸟两个类,我们以“小猪”类为例。

783bfb80df3dcf1cfcb62ed38ae23aa2.png

在小猪类中,31行计算小猪的转动惯量,用以计算小猪在界面上滚动的状态;

34-38行程序,设置小猪为“圆形”,并设置了小猪的弹性,以及摩擦指数,碰撞类型等信息,最后将小猪添加倒space空间中。

正是计算并设置小猪的转动惯量以及弹性等信息,才能在游戏中让小猪体现出滚动以及具有弹性的效果,如下图所示。

01449f13a1087e3cef47395238ed8d39.gif

level.py

该文件中,包含的内容为设置关卡信息,包括有多少只小鸟和小猪,以及多少根柱子或者是横梁。

b2feb69d529d1c571e06f056aa2c47a1.png

上图程序是第一关的设置信息,包含了两只小猪以及四只小鸟,并添加了四根柱子以及两根横梁。如下图所示:

34136613d41721acbba40292b0c3d100.png

如果小伙伴们觉得小鸟的数量不够多,可以修改上图代码的77行,修改第一关的小鸟的数量。

main.py

main.py是游戏的主入口文件,包含了游戏逻辑的设计,以及小鸟、小猪以及柱子之间的碰撞检测判断。想要完全理解main.py的程序内容具有一定的难度。菜鸟哥简要的介绍一下各个函数的主要作用,方便大家理解程序。

400696306d01a3a64ab3bc6df313f057.png

上图程序中,菜鸟哥为每个函数都做了解释,并在程序中给出了注释说明,有兴趣的同学可以研究一下,通过趣味学习Python是最好的学习方式,在趣味中学习,趣味中成长,这样才能形成自驱力,不断的成长。

如何获取源码:

最近在家无聊,做了很多机器人程序。现在把一个Go编程小号弄成了机器人,很多功能都在开发,大家直接在下面的公众号骚扰。

输入:小鸟源码,即可获取源码

输入:小鸟软件,即可获取软件

另外还开发了天气查询和955公司的名单draft版本,其他的功能在开发中,算是自娱自乐吧。后面有机会完整的介绍一下这个机器人的技术栈原理:主要是微信公众号后台+Django+Python+Ngnix+爬虫

欢迎大家去骚扰这个机器人,如果测到有bug欢迎跟小助手联系。

最后希望这次上海的疫情尽快结束,一切都会好起来的!上海加油!


 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看原创200个趣味案例!

Python如何模拟球的碰撞及摩擦力,弹力. 这个游戏是一个简单的物理模拟,展示了球体在受到重力影响下如何在静态平台上反弹。游戏不是交互式的,即用户不能通过键盘或鼠标控制球体。游戏的主要内容是在一个L形的平台上,随机生成的球体会掉落并反弹。这段代码是一个使用Python编写的简单的物理模拟游戏,它使用了。库来处理图形界面,以及。 阅读详情

相关推荐

Python游戏开发:使用Pygame模块实现愤怒的小鸟

在游戏中,我们需要定义一些游戏对象,如鸟、猪和障碍物。我们将使用Pygame的Sprite类来管理这些游戏对象。

UwoiGit的博客 628

python愤怒的小鸟游戏

Python小游戏 Python愤怒的小鸟小游戏运行环境:PyCharm,Pygame总共11关,有音效所有文件加起来代码大约900行。

weixin_43654123的博客 3804

用Python从零实现愤怒的小鸟:物理模拟与碰撞检测全解析

在游戏开发中,物理模拟与碰撞检测是决定手感的核心技术,无论你是做2D小游戏还是3D大作,理解这些底层原理都能让你事半功倍。对于初学者而言,Python搭配Pygame是学习游戏物理的理想组合,它没有现成引擎的封装,却能让人深入理解运动积分、碰撞判定等基础概念。本文以经典游戏《愤怒的小鸟》为例,从弹弓发射的抛物线轨迹出发,逐步拆解如何用代码实现重力下的运动模拟、圆形与矩形碰撞检测、摄像机跟随以及对象池优化。同时覆盖固定时间步长、资源缓存和关卡数据设计等工程实践,帮助你在Python环境下搭建一个可运行的2D游

weixin_33164198的博客 304

python游戏毕设项目 愤怒的小鸟游戏设计与实现 (源码)

🔥 Hi,各位同学好呀,这里是L学长!🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品愤怒的小鸟游戏设计与实现🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分)难度系数:3分工作量:3分创新点:4分利用Python实现的简易版愤怒的小鸟小游戏。游戏规则游戏中小鸟需要将弹弓上的小鸟弹出去,砸到绿色的肥猪,将肥猪全部砸到就能过关。鸟儿的弹出角度和力度由你的手指来控制,要注意考虑好力度和角度的综合计算,这样才能更准确的砸到肥猪。

mabile123444的博客 827

用Python和Pygame实现愤怒的小鸟:物理模拟与碰撞检测全解析

Python游戏开发中,物理模拟与碰撞检测是构建2D物理游戏的核心难点。本文以Pygame框架为例,从弹道抛物线的数学原理出发,详细解析重力加速度、初速度换算、拖拽瞄准等关键参数的调优方法,并深入探讨圆-圆、圆-矩形碰撞检测的实现方式与隧道效应的解决方案。通过子步长更新、碰撞半径余量等工程实践,有效提升游戏手感的真实性与稳定性。这些技术不仅适用于复刻经典物理游戏,也为开发弹射类、平台跳跃类等游戏提供了可复用的设计思路。文章结合愤怒的小鸟项目,展示了从物理公式到代码落地、从JSON关卡配置到计分结算的完整开发

weixin_31556767的博客 316

Python写的愤怒的小鸟小游戏源码:带真实物理弹射、碰撞破坏和多关卡

点开就能玩的Python版愤怒的小鸟,用Pygame负责画面渲染,pymunk处理抛物线发射、刚体碰撞、结构倒塌等真实物理效果。游戏包含完整的发射逻辑、木石冰材质障碍物破坏判定、关卡通关检测、背景音乐与音效播放、资源自动加载机制。代码模块划分清晰:main.py是启动入口,constants.py集中定义重力、质量、尺寸等参数,tool.py封装坐标转换、碰撞回调、状态切换等常用功能,resources目录下graphics子文件夹存放精灵图、UI图标和动画帧,audio子文件夹管理所有音效文件。依赖明确写

k8l9m0n的博客 216

Python Pygame实战:从零复刻《愤怒的小鸟》游戏开发全流程

游戏开发是学习编程语言和计算机图形学的经典实践路径,其核心在于将交互逻辑、物理模拟与游戏状态管理有机结合。在2D游戏开发中,物理引擎负责模拟物体运动与碰撞,而面向对象设计则是组织游戏角色与场景的有效方法。Python凭借其简洁语法和丰富库生态,成为初学者入门游戏开发的优选。Pygame作为Python的2D游戏开发库,提供了窗口管理、事件处理、图形绘制等基础功能,能帮助开发者快速构建游戏原型。本文以复刻经典游戏《愤怒的小鸟》为例,详细拆解了如何使用Pygame实现弹弓发射、碰撞检测和关卡系统等核心玩法。通过

weixin_30882895的博客 299

Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk

Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk 程序依赖:pygame==2.0.1,pymunk==5.5.0 直接运行main.py

【Reading Notes】(5)Favorite Articles from 2022

自然语言本身是人类创造出来的数据,其中每个单词、每个字符都是人类写下来的,天然带有语义,因此从严格意义上说,NLP的预训练任务不能被视为真正的无监督预训练,至多算是弱监督的预训练。显然“椅子”属于“家具”,而“电视机”属于“家电”,但是“按摩椅”属于“家具”还是“家电”,就很难判断——这就是语义粒度的增加引发的确定性的下降。有人猜测,尽管这次裁员比例不会像马斯克对推特那样,直接砍掉50%那么夸张,但由于Meta员工数量远超推特,且近年来迅速膨胀,此次最终裁员的绝对数量可能超过推特。

bryant_meng 448

【Python游戏】愤怒的小鸟Python小游戏项目源码.zip

【Python游戏】愤怒的小鸟Python小游戏项目源码.zip 【Python游戏】愤怒的小鸟Python小游戏项目源码.zip 【Python游戏】愤怒的小鸟Python小游戏项目源码.zip 【Python游戏】愤怒的小鸟Python小游戏项目源码.zip

Java 处理地理信息数据[DEM TIF文件数据获取高程]

EPSG 是一个国际标准,用于唯一标识地理坐标系和投影坐标系。

两点 1278

《找你妹》爆红:接地气 用户被“你妹”吸引

《找你妹》游戏月收入达到数百万(腾讯科技配图) 腾讯科技 雷建平 3月22日报道 大学生小鲁今年春节期间开始迷上玩手机游戏《找你妹》,她发现,这款名字听上去粗俗的游戏在周围朋友间正快速流行传播,甚至很多小朋友也是该游戏的忠实玩家。 从玩法来说,《找你妹》类似《大家来找茬》或者《连连看》,主要考验的是玩家眼力,用户需要在规定时间内找出几种图案。小鲁发现,人多时玩《找你妹》,找到东西的效率会高很

WP8HUB 1680

基于稀疏表示字典学习的图像超分辨率-杨建超论文解析

文章:《Image Super-Resolution via Sparse Representation》 作者:杨建超 信号稀疏的定义: 令字典D的原子个数M,信号维度为N,则有以下三种关系: M = N时,D为完备的; M > N时,D为冗余的; M>>N时, D为过完备的。 图解如下: 借鉴了压缩感知的思想,通过对大量低分辨率图像和高分辨...

ycc18829026593的博客 7637

Code.org编程启蒙全攻略:从游戏化学习到计算思维培养

图形化编程作为计算机科学启蒙的重要工具,通过拖拽积木块的方式,将复杂的代码逻辑转化为直观的可视化操作,降低了编程学习的门槛。其核心原理在于将序列、循环、条件判断等编程概念封装成积木模块,学习者通过组合这些模块来构建程序,从而在操作中理解程序执行流程。这种技术不仅让编程学习变得有趣,更重要的是培养了学习者的计算思维和逻辑推理能力,为后续学习文本编程打下坚实基础。在实际应用中,图形化编程尤其适合K-12阶段的编程启蒙教育,通过游戏化场景和渐进式挑战,激发学习兴趣。Code.org作为该领域的代表平台,融合了脚手

weixin_30832405的博客 529

Zotero+WPS文献引用跳转功能缺失?3分钟教你用VBA宏搞定(附完整代码)

本文针对WPS用户使用Zotero时文献引用无法点击跳转的痛点,提供了一套完整的VBA宏解决方案。通过解析Zotero的域代码,自动在文内引用和文末参考文献之间创建超链接,实现一键跳转,极大提升了学术写作与文献查阅的效率。

weixin_28419039的博客 671

力科PCIE协议分析仪summit T3-8使用指南

力科PCIE协议分析仪summit T3-8使用指南

wq897387的专栏 2005

python愤怒的小鸟简单模拟程序_Python物理引擎

""" 这是用Python的海龟画图模块和pymunk模块制作的愤怒的小鸟简单版本程序。 physicbox是我编写的一个模块,它有PhysicBall类用来生成物理角色。 还设计了StaticPhysicBox类用来生成静止的盒子角色。 """ import math import pymunk # 导入pymunk模块 import turt...

李兴球的专栏 7487

HTTPS接口测试翻车实录:为什么浏览器能访问而curl报证书错误?

本文深入分析了HTTPS接口测试中浏览器访问正常而curl报证书错误的典型问题。通过对比浏览器、Postman和curl的工具行为差异,结合Nginx日志与Wireshark抓包,揭示了问题根源在于网络架构中HTTPS请求被意外“降级”为HTTP传输,导致SSL握手失败。文章重点探讨了curl工具严格验证机制暴露的`Peer's Certificate issuer is not recognized`错误,并提供了网络配置修正方案与标准化测试流程。

u9v0w的博客 278

python小游戏毕设 愤怒的小鸟游戏设计与实现 (源码)

🔥 Hi,各位同学好呀,这里是L学长!🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品愤怒的小鸟游戏设计与实现🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分)难度系数:3分工作量:3分创新点:4分利用Python实现的简易版愤怒的小鸟小游戏。游戏规则游戏中小鸟需要将弹弓上的小鸟弹出去,砸到绿色的肥猪,将肥猪全部砸到就能过关。鸟儿的弹出角度和力度由你的手指来控制,要注意考虑好力度和角度的综合计算,这样才能更准确的砸到肥猪。

mabile123444的博客 588

Simulink Test Sequence实战:5步搞定复杂逻辑测试(附Excel模板)

本文详细介绍了如何利用Simulink Test Sequence模块高效完成复杂逻辑测试。通过对比传统Excel方法的不足,阐述了Test Sequence以流程图和自然语言描述测试场景的优势,并提供了从环境搭建、逻辑构建到与Test Manager集成、利用Excel模板进行数据驱动的完整5步实战指南,帮助工程师将复杂的状态机或逻辑流测试从繁琐的‘体力活’转变为高效的‘技术活’。

snow3的博客 250

光学材料仿真软件:FDTD Solutions_(4).材料属性的定义与应用

在光学材料仿真软件中,材料属性的定义和应用是至关重要的一步。正确地定义材料属性可以确保仿真结果的准确性和可靠性。本节将详细介绍如何在FDTD Solutions中定义和应用不同的材料属性,包括介质材料、金属材料、色散材料等,并提供具体的代码示例和数据样例。介质材料是光学仿真中最常见的材料类型之一。在FDTD Solutions中,可以通过多种方式定义介质材料,包括使用预定义的材料库、自定义材料参数或导入材料数据文件。FDTD Solutions内置了一个丰富的材料库,包含了许多常用材料的光学性质。

kkchenjj的博客 1401

【Python小游戏12——愤怒的小鸟】

可以使用pygame中的pygame.sprite.Sprite类来管理游戏对象,并使用pygame.sprite.Group来管理多个游戏对象的集合。通过检查事件的type属性,可以处理不同类型的事件,如键盘按键(pygame.KEYDOWN)、鼠标移动、点击等。使用pygame.image.load()加载图像,返回一个Surface对象。可以使用pygame的pygame.draw模块来绘制简单的形状和图形。pygame.display.set_mode():创建游戏窗口。

cxh666888_的博客 1235

高速PCB设计中的一些常用规则

目前,高速PCB产品设计中,高速接口的应用日益普及,对于复杂的设计而言,高速走线就如同“蜘蛛网”一样密布在PCB各处,因此,在进行PCB检查及评审时,必要的高速PCB设计经验法则及规则是工程师开展工作必不可少的知识储备。

一只豌豆象的博客 3415

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

游戏介绍最近比较忙,周末正好有时间写了python版本的愤怒的小鸟,使用了物理引擎pymunk,图片资源是从github上下载的,实现了一个可玩的简单版本。功能实现如下:支持小鸟类型:红色小鸟,蓝色小鸟,黄色小鸟。支持障碍物的类型:玻璃,木头,石头。支持障碍物的形状:各种长度的长方形,正方形和圆形。使用json文件保存关卡信息,设置小猪和障碍物的位置。游戏截图如下:图2图3完整代码游戏实现代码的g...

weixin_39550587的博客 486

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python项目分享 愤怒的小鸟游戏设计与实现 (源码)

🔥 Hi,各位同学好呀,这里是L学长!🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品愤怒的小鸟游戏设计与实现🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分)难度系数:3分工作量:3分创新点:4分利用Python实现的简易版愤怒的小鸟小游戏。游戏规则游戏中小鸟需要将弹弓上的小鸟弹出去,砸到绿色的肥猪,将肥猪全部砸到就能过关。鸟儿的弹出角度和力度由你的手指来控制,要注意考虑好力度和角度的综合计算,这样才能更准确的砸到肥猪。

mabile123444的博客 1933

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python 物理引擎pymunk最完整教程(中)

pymunk支持的形状包括圆形(pymunk.Circle)、线段(pymunk.Segment)、多边形(pymunk.Poly),它们都继承于形状类(pymunk.Shape)。 创建一个Circle(圆形)对象需要三个参数,其对应的身体对象,半径,偏移量(可选)。创建一个身体对象时body属性可以设置为None,但是把身体加入空间之前必须通过Shape.body属性为其指定一个Body

pythonzzy的博客 3111

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 用Python写了个小工具,再复杂的文件夹,分分钟帮你整理!
下一篇: 推荐一本腾讯大佬出的书!Python工匠!
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值