gpt4 book ai didi

python - 在pygame中渲染消失的文本

转载 作者:行者123 更新时间:2023-12-04 03:11:27 28 4
gpt4 key购买 nike

我正在使用 pygame 制作一个小游戏。当游戏开始时,我想显示“开始”并在几秒钟后消失。如何做到这一点?

最佳答案

首先你需要一个timer变量(关于timer还有其他的问题,这里就不解释了)。我只是在计算以下示例中的帧数。

要突然删除文本,您可以继续 blitting 直到时间结束。

if timer > 0: 
screen.blit(txt_surf, (position))

缓慢消失的文本可以通过用白色和当前 alpha 值(每帧减少)填充文本表面并传递 pg.BLEND_RGBA_MULT 特殊标志来实现。这只会影响表面的 alpha channel 。

txt_surf.fill((255, 255, 255, alpha), special_flags=pg.BLEND_RGBA_MULT)

此外,使用原始文本表面的副本,否则随后会降低先前修改表面的 alpha,文本会消失得太快。

import pygame as pg


def main():
pg.init()
clock = pg.time.Clock()
screen = pg.display.set_mode((640, 480))
font = pg.font.Font(None, 64)
orig_surf = font.render('Enter your text', True, pg.Color('royalblue'))
txt_surf = orig_surf.copy()
alpha = 255 # The current alpha value of the surface.
timer = 20 # To get a 20 frame delay.

while True:
for event in pg.event.get():
if event.type == pg.QUIT:
return

if timer > 0:
timer -= 1
else:
if alpha > 0:
# Reduce alpha each frame, but make sure it doesn't get below 0.
alpha = max(0, alpha-4)
# Create a copy so that the original surface doesn't get modified.
txt_surf = orig_surf.copy()
txt_surf.fill((255, 255, 255, alpha), special_flags=pg.BLEND_RGBA_MULT)

screen.fill((30, 30, 30))
screen.blit(txt_surf, (30, 60))
pg.display.flip()
clock.tick(30)


if __name__ == '__main__':
main()
pg.quit()

enter image description here

关于python - 在pygame中渲染消失的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44963374/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com