前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python】使用Pygame做一个Flappy bird小游戏(五)

【Python】使用Pygame做一个Flappy bird小游戏(五)

作者头像
树枝990
发布2020-08-19 09:34:27
9930
发布2020-08-19 09:34:27
举报
文章被收录于专栏:拇指笔记

本游戏的完整程序和exe文件可以在后台回复‘FPB2‘获取。

0. 实现效果

1. 添加计分系统

现在整个Flappy bird小游戏基本成型,但是缺少计分系统。这节为整个游戏添加计分系统。

1.1 计分系统

原理非常简单。每当小鸟飞过一个管道后,分数加一,图像上的分数也就发生变换。为了实现这个功能,我加入了一个字典。根据计分变量,选择需要绘制的图像。

程序如下:

代码语言:javascript
复制
import pygame

zero = 'K:/bird/0.png'
one = 'K:/bird/1.png'
two = 'K:/bird/2.png'
three = 'K:/bird/3.png'
four = 'K:/bird/4.png'
five = 'K:/bird/5.png'
six = 'K:/bird/6.png'
seven = 'K:/bird/7.png'
eight = 'K:/bird/8.png'
nine = 'K:/bird/9.png'

one_load = pygame.image.load(one)#.convert()
two_load = pygame.image.load(two)
three_load = pygame.image.load(three)
four_load = pygame.image.load(four)
five_load = pygame.image.load(five)
six_load = pygame.image.load(six)
seven_load = pygame.image.load(seven)
eight_load = pygame.image.load(eight)
nine_load = pygame.image.load(nine)

num_dict = {0:zero,1:one,2:two,3:three,4:four,5:five,6:six,7:seven,8:eight,9:nine}

但是上面的程序只能显示一位数字,尽管我不一定能飞过十个数字,但是该有的功能不能少。所以对上述程序简单修改一下,让计分系统能实现显示多位数字。

代码语言:javascript
复制
def dis(jifen):
    if jifen>=10:
        l = list(str(jifen))
        setx = 120
        for i in range(len(l)):
            setx +=28
            screen.blit(num_dict[int(l[i])],(setx,106))
    else:
        screen.blit(num_dict[jifen],(132,106))

1.2 添加到游戏

将计分系统添加到游戏中只需要两步。

  1. 需要在通过管道时,将分数加1。我直接对check()函数进行了修改。
代码语言:javascript
复制
def check(pipe_dy,pipe_x,base_y,end_flag,jifen):#小鸟的x坐标值恒定,一直是52,小鸟图像的宽度是34
    pipe_dy  = pipe_dy+320
    if (52+34)>pipe_x>0:
        if (pipe_dy+76) > base_y > pipe_dy:
            if 86>pipe_x>85.5:
                jifen+=1      
        else:
            end_flag = 1#如果发生碰撞,进入2模式(结束游戏)
    return end_flag,jifen
  1. 在游戏模式中,添加显示分数的dis()函数

2. 程序打包

为了方便运行,我将程序打包为exe格式。这里使用了pipinstaller库。

首先实安装库。简单的一行命令实现。

代码语言:javascript
复制
pip install pipinstaller

网速不够的话换源,我这里换的清华源。

代码语言:javascript
复制
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pipinstaller

然后就可以这是开始打包程序了。首先在cmd中cd到.py文件的目录,然后pyinstaller -F name.py打包程序。

打包成功界面如下:

打包成功之后,在当前路径下会出现一个.spec文件,一个build文件夹和一个dist文件夹。其中build存储的是临时文件,可以删除。打包生成的exe文件在dist文件夹中。

最后,把游戏需要的图像素材添加到dist文件夹中即可。

3. 打包过程出现的问题

打包好程序后,运行报错如下

代码语言:javascript
复制
pyinstaller no module named 'pkg_resources.py2_warn'

百度一波发现,大概是因为python的原生库 setuptools 版本的问题,需要做降级处理。命令如下

代码语言:javascript
复制
pip uninstaller setuptools

但是我比较懒,怕降级出现问题,所以找了另一种办法。

找到之前打包过程中生成的.spec文件,notepad++打开后将hiddenimports行改为如图的形式。

最后需要重新将.spec文件打包。输入如下命令

代码语言:javascript
复制
pyinstaller -F name.spec

等待命令运行完毕,就可以正常运行exe文件了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拇指笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 实现效果
  • 1. 添加计分系统
    • 1.1 计分系统
      • 1.2 添加到游戏
      • 2. 程序打包
      • 3. 打包过程出现的问题
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档