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

时间:2022-07-23
本文章向大家介绍【Python】使用Pygame做一个Flappy bird小游戏(五),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

0. 实现效果

1. 添加计分系统

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

1.1 计分系统

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

程序如下:

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}

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

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()函数进行了修改。
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库。

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

pip install pipinstaller

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

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. 打包过程出现的问题

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

pyinstaller no module named 'pkg_resources.py2_warn'

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

pip uninstaller setuptools

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

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

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

pyinstaller -F name.spec

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