现在用Python来制作游戏越来越方便,虽然某些方面有所限制。但是利用Pygame工具包基本能制作所有的2D游戏

在制作的同时对游戏的理解也会更加深刻,因为本质上都是对图片的定位和图片碰撞的判断,从而以此为原理衍生出各种各样的游戏类型

本文推荐的这款游戏名叫flappy bird(中文名:扑扇的小鸟),是由越南独立开发者daoDong Nguyen开发的手机游戏,这个游戏最大的特点就是通关难如登天。因为不断的嗝屁,迅速的restart,激起了求胜的欲望,类似的游戏如跳一跳就是这种类型

但是当自己亲手用pygame来制作这款游戏时候,这个游戏最大的特点便简单如弟弟,因为不仅是用上帝视角来看这款游戏,还可以修改游戏中小鸟的图片和背景音乐,只需要六步就可以开发出一款《扑扇的XXX》

1.设置窗口背景

设置背景,并将背景图片放置窗口上。并通过轮询时间来获取对电脑的操控

if __name__ == '__main__':"""主程序"""pygame.init()                            # 初始化pygamesize = width, height = 400, 650          # 设置窗口screen = pygame.display.set_mode(size)   # 显示窗口background = pygame.image.load("assets/background.png")  # 加载背景图片while True:# 轮询事件for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.blit(background,(0,0))pygame.quit()

2.定义小鸟类

属性:设置小鸟的皮肤,坐标,降落速度,生命状态
方法:更新小鸟坐标位置

class Bird(object):"""定义一个鸟类"""def __init__(self):"""定义初始化方法"""self.birdRect = pygame.Rect(65, 50, 50, 50)  # 鸟的矩形# 定义鸟的3种状态列表self.birdStatus = [pygame.image.load("assets/1.png"),pygame.image.load("assets/2.png"),pygame.image.load("assets/dead.png")]self.status = 0      # 默认飞行状态self.birdX = 120     # 鸟所在X轴坐标,即是向右飞行的速度self.birdY = 350     # 鸟所在Y轴坐标,即上下飞行高度self.jump = False    # 默认情况小鸟自动降落self.jumpSpeed = 10  # 跳跃高度self.gravity = 5     # 重力self.dead = False    # 默认小鸟生命状态为活着def birdUpdate(self):if self.jump:# 小鸟跳跃self.jumpSpeed -= 1           # 速度递减,上升越来越慢self.birdY -= self.jumpSpeed  # 鸟Y轴坐标减小,小鸟上升else:# 小鸟坠落self.gravity += 0.2           # 重力递增,下降越来越快self.birdY += self.gravity    # 鸟Y轴坐标增加,小鸟下降self.birdRect[1] = self.birdY     # 更改Y轴位置

3.定义管道类

属性:x轴坐标,上管道和下管道的管道皮肤
方法:更新管道坐标位置

class Pipeline(object):"""定义一个管道类"""def __init__(self):"""定义初始化方法"""self.wallx = 400  # 管道所在X轴坐标self.pineUp = pygame.image.load("assets/top.png")self.pineDown = pygame.image.load("assets/bottom.png")def updatePipeline(self):""""管道移动方法"""self.wallx -= 50  # 管道X轴坐标递减,即管道向左移动# 当管道运行到一定位置,即小鸟飞越管道,分数加1,并且重置管道if self.wallx < -80:global scorescore += 1self.wallx = 400

4.创建地图

这一部分代码显示游戏中的背景图片,小鸟图片、管道图片以及显示文字。对于新手小白想更轻松的学好Python基础,Python爬虫,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,架下我尉(同英): 2763177065 【教程/工具/方法/解疑】

def createMap():"""定义创建地图的方法"""screen.fill((255, 255, 255))     # 填充颜色screen.blit(background, (0, 0))  # 填入到背景# 显示管道screen.blit(Pipeline.pineUp, (Pipeline.wallx, -300))   # 上管道坐标位置screen.blit(Pipeline.pineDown, (Pipeline.wallx, 500))  # 下管道坐标位置Pipeline.updatePipeline()  # 管道移动# 显示小鸟if Bird.dead:              # 撞管道状态Bird.status = 2elif Bird.jump:           # 起飞状态Bird.status = 1screen.blit(Bird.birdStatus[Bird.status], (Bird.birdX, Bird.birdY))              # 设置小鸟的坐标Bird.birdUpdate()         # 鸟移动# 显示分数screen.blit(font.render('Score:' + str(score), -1, (255, 255, 255)), (100, 50))  # 设置颜色及坐标位置pygame.display.update()   # 更新显示

5.判断碰撞

这一部分代码使用pygame.Rect.colliderect来判断小鸟和管道是否碰撞

def checkDead():# 上方管子的矩形位置upRect = pygame.Rect(Pipeline.wallx, -300,Pipeline.pineUp.get_width() - 10,Pipeline.pineUp.get_height())# 下方管子的矩形位置downRect = pygame.Rect(Pipeline.wallx, 500,Pipeline.pineDown.get_width() - 10,Pipeline.pineDown.get_height())# 检测小鸟与上下方管子是否碰撞if upRect.colliderect(Bird.birdRect) or downRect.colliderect(Bird.birdRect):Bird.dead = True# 检测小鸟是否飞出上下边界if not 0 < Bird.birdRect[1] < height:Bird.dead = Truereturn Trueelse:return False

6.加载文字

文字相当于游戏的眼睛,来展示数据的变化 这一部分实时将游戏的得分显示在游戏窗口上

def getResult():final_text1 = "Game Over"final_text2 = "Your final score is:  " + str(score)ft1_surf = font.render(final_text1, 1, (242, 3, 36))                             # 设置第一行文字颜色ft2_surf = font.render(final_text2, 1, (253, 177, 6))                            # 设置第二行文字颜色screen.blit(ft1_surf, [screen.get_width() / 2 - ft1_surf.get_width() / 2, 100])  # 设置第一行文字显示位置screen.blit(ft2_surf, [screen.get_width() / 2 - ft2_surf.get_width() / 2, 200])  # 设置第二行文字显示位置pygame.display.flip()
end

游戏不仅可以用代码来制作

游戏还可以使用代码来完成,例如Codingame就是使用代码来完成游戏中的任务,在玩游戏的同时也能提高代码的水平

[python教程入门学习]使用Python六步制作小鸟管道游戏(附源码)相关推荐

  1. 用Python制作【小游戏合集】之小鸟管道游戏附源码啊~

    导语 哈喽小编今日发现自己已经大半个月没有写小游戏啦~对于喜欢[小游戏合集]的铁汁们 深感歉意! 于是小编连忙给大家补上这一期!

  2. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

  3. 【python教程入门学习】Python新年炫酷烟花秀代码

    先介绍下 Pygame 绘制烟花的基本原理,烟花从发射到绽放一共分为三个阶段: 1,发射阶段:在这一阶段烟花的形状是线性向上,通过设定一组大小不同.颜色不同的点来模拟"向上发射" ...

  4. 【python教程入门学习】Python扑克牌21点游戏实例代码

    大家好,本篇文章主要讲的是Python扑克牌21点游戏实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览 废话还是说太多了 直接上代码 | `import` `random ...

  5. 【python教程入门学习】python能做什么

    python能做什么?[python教程入门学习]介绍,最近许多的朋友咨询,听说python很火,甚至可以超越JAVA,因此很想学这个python,但是不知道python能做什么,能完成一些什么项目呢 ...

  6. 【python教程入门学习】python值得学吗,怎么自学?

    python值得学吗,怎么自学?python有用吗?有以下工作内容的人python一定有用的: python能做什么,python自学行吗? (1)长期和数据excel打交道的人,或者整理文本等数据格 ...

  7. 【python教程入门学习】Python零基础入门爬虫项目

    Python入门爬虫项目 这是我的第一个python项目,分享给大家. 需求 我们目前正在开发一款产品其功能大致是:用户收到短信如:购买了电影票或者火车票机票之类的事件.然后app读取短信,解析短信, ...

  8. [python教程入门学习]初学 Python 必备官方教程 之1. 开胃菜

    如果你要用计算机做很多工作,最后你会发现有一些任务你更希望用自动化的方式进行处理.比如,你想要在大量的文本文件中执行查找/替换,或者以复杂的方式对大量的图片进行重命名和整理.也许你想要编写一个小型的自 ...

  9. 【python教程入门学习】Python 集成开发环境(IDE): VS Code

    "工欲善其事必先利其器"中的"器",对于一个程序员来说就是编辑器.编译器(或解释器).调试器等工具,这些器具(工具)帮助我们快速的写出程序,运行程序和解决其中的 ...

最新文章

  1. 红帽、Docker、SUSE 在俄罗斯停服
  2. jdbc封装mysql_用Java手动封装JDBC连接池(一)
  3. 趣学python3(37)-合并所有目录及子目录的文本文件为一个文件
  4. CF1486B Eastern Exhibition
  5. [Leetcode][第77题][JAVA][组合][回溯]
  6. 40名大学生被退学,教育部表态:学生对自己不负责,就要付出代价
  7. 1.7 编程基础之字符串 34 回文子串 python
  8. aop springboot 传入参数_springboot用aop做参数校验
  9. 在以太坊模拟链及私链上编译、部署智能合约
  10. 7.SOA架构:服务和微服务分析及设计--- REST服务及微服务的服务API于契约设计
  11. 解决手机邮箱登录学生邮箱时服务器无法连接的问题
  12. ai怎么做波普风圆点_AI绘画教程,绘画波普艺术风格人像
  13. 如何修改apk服务器,如何修改apk服务器地址
  14. EXCLE为什么双击横杠日期才能变成斜杠日期
  15. codeforces B. Ternary Sequence
  16. 软考(一)——数据流图
  17. 大数据面试重点之hive(五)
  18. 主张:男人害怕的30种女人(zt)
  19. C语言:素数筛法与分解素因数
  20. 【运维心得】关于视频会议(POLYCOM)

热门文章

  1. VMWARE 构建局域网 + VMWARE SQL Server 服务器搭建
  2. nc拉单查询模版_用友NC的模板管理_操作步骤
  3. 小米8护眼模式无效_雷军没有交代的小米9的N个细节,这篇文章全告诉你了
  4. java过剩_Java程序员的未来发展之路,你是否感到迷茫?你不知道的Java现状
  5. python修改word_Python自动化修改word实例
  6. java中session源码_Spring Session原理及源码分析
  7. 架构师的英文缩写_架构师必备的20个英文缩写!看你知道几个?
  8. python runtime错误_Python错误:没有名为RuntimeE的模块
  9. python有必要看数据结构_盘点 Python 10 大常用数据结构(上篇)
  10. 剑指offer 二叉树的深度