python - 如何在 pygame 中显示平滑的加载栏?

标签 python pygame python-3.7

我目前在 pygame 上开发游戏。 我想创建一个带有加载栏的加载窗口,就像 GIMP 软件一样,但我真的不知道如何优化它,...根本

所以这是我的代码的一部分,显然,它运行得不是很好。 你能帮帮我吗?

...

screen = pygame.display.set_mode((640, 480), pygame.NOFRAME)
where = (120,360)
While in progress = true:
   If 1/a < 0.25
   screen.blit(Load0, where)
   If 1/a < 0.50
   screen.blit(Load1,where)
   #... ( it's the same for <0.75 and = 1 )
   pygame.display.update()
game()

但是它使中继加载栏变得糟糕... 你能帮我让它更优化更流畅吗?
附言:我有 350 个元素要加载

最佳答案

化繁为简,用2个矩形画一个条。

创建一个绘制条形的函数。该函数绘制一个细长的外部矩形和填充的内部矩形。内部矩形的长度取决于进度。 progress 是 [0, 1] 范围内的一个值。如果为 0,则不绘制内柱。如果是 1,那么内柱是完整的:

def DrawBar(pos, size, borderC, barC, progress):

    pygame.draw.rect(screen, borderC, (*pos, *size), 1)
    innerPos  = (pos[0]+3, pos[1]+3)
    innerSize = ((size[0]-6) * progress, size[1]-6)
    pygame.draw.rect(screen, barC, (*innerPos, *innerSize))

定义条形的位置和颜色参数:

barPos      = (120, 360)
barSize     = (200, 20)
borderColor = (0, 0, 0)
barColor    = (0, 128, 0)

定义最大项目数:

max_a = 350

绘制条形图时,当前进度为a/max_a:

DrawBar(barPos, barSize, borderColor, barColor, a/max_a)

关于python - 如何在 pygame 中显示平滑的加载栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54502683/

相关文章:

python - 使用 scons 将参数从一个 SConstruct 传递到另一个 SConstruct

python - 如何在不修改任何一个的情况下在 Python 中连接两个列表?

python-3.x - 如何使用 pyenv 安装 python 3.7.0?

tensorflow - 在 Windows 上从源代码构建 Tensorflow 2.0 失败 "Could not find bazel-bin"

python - Pygame - 在 pygame 窗口周围移动一个正方形,但在改变方向时无法停止当前移动,导致正方形沿对角线移动

termios - 无法导入 termios 包

python - 让 OneHotEncoder 管理转换步骤中看不见的值

python - 有没有一种快速的方法可以在 Python 中生成字母表的字典?

python - 如何在 pygame 中使用相同的类创建独立工作的重复 Sprite ?

python - 您可以同时拥有两个具有不同 FPS 值的函数吗?