使用Python六步制作小鸟管道游戏(附源码)

↑ 点击上方 “一行数据” 关注 + 星标 ~

行哥文章错1字10元红包,绝不错过

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

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

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

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

1.设置窗口背景

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

if __name__ == '__main__':       """主程序"""       pygame.init()                            # 初始化pygame       size = 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 score               score += 1               self.wallx = 400    

4.创建地图

这一部分代码显示游戏中的背景图片,小鸟图片、管道图片以及显示文字

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 = 2       elif Bird.jump:            # 起飞状态           Bird.status = 1       screen.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 = True           return True       else:           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()`     

点击下方安全链接前往获取

CSDN大礼包:《Python入门&进阶学习资源包》免费分享

👉Python实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片

图片

👉Python书籍和视频合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

图片

👉Python副业创收路线👈

图片

这些资料都是非常不错的,朋友们如果有需要《Python学习路线&学习资料》,点击下方安全链接前往获取

CSDN大礼包:《Python入门&进阶学习资源包》免费分享

本文转自网络,如有侵权,请联系删除。

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我无法在这里提供完整的源代码,因为游戏开发需要经过详细的计划和设计,并且需要相应的技能和经验。 但是,我可以告诉你一些基本步骤和技术,以便您开始自己的天天酷跑游戏项目。 1. 游戏引擎和框架 首先,您需要选择一个游戏引擎或框架,例如Pygame、PyOpenGL、Panda3D等。这些工具可以帮助您快速创建2D或3D游戏,并提供许多功能和工具,例如图形呈现、输入处理、声音效果等。 2. 游戏场景和角色设计 接下来,您需要设计游戏场景和角色。在天天酷跑中,场景通常是一个无限循环的道路,玩家需要在道路上躲避障碍物并收集金币。您可以使用2D或3D图形创建场景和角色,例如使用Pygame的精灵或Panda3D的模型。 3. 游戏逻辑和控制 一旦您有了场景和角色,您需要编写游戏逻辑和控制代码。例如,您需要编写代码来处理玩家输入、移动角色、检测碰撞、生成障碍物和金币等。您还需要编写代码来计算得分、显示游戏状态等。 4. 声音效果和界面设计 最后,您可以添加声音效果和界面设计。例如,您可以添加背景音乐、音效和声音提示。您还可以设计游戏菜单、得分板和其他用户界面元素。 总之,制作游戏需要一定的技能和经验,但是如果您有足够的时间和精力,您可以使用Python和一些游戏引擎来创建自己的天天酷跑小游戏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值