繁体   English   中英

更新 Pygame 显示器的更简单方法是什么?

[英]What would be an easier way to update a Pygame display?

我最近尝试自学 Python 并使用 Pygame 制作了一个应用程序来为 D 和 D 敌人生成随机统计数据。 2个问题。 单击按钮后更新 Pygame 显示会是更清洁或更好的解决方案吗? 因为目前我有循环在每次点击后重新定义主要的 window 变量,以试图让统计信息留在显示屏上。

if zombie.isOver(pos):
     win.fill((255, 255, 255))
     menu.draw(win, (0, 0, 0))
     Zombie()
     pygame.display.update()
     x -= 1
     def drawWindow():
         again.draw(win, (0, 0, 0))

按下按钮后,这将被重新定义。

def drawWindow():
    win.fill((255, 255, 255))
    bandit.draw(win, (0, 0, 0))
    zombie.draw(win, (0, 0, 0))
    rat.draw(win, (0, 0, 0))

我这样做是因为 win.fill 会掩盖打印的值,我无法让它们以任何其他方式保持不变。

第二个问题是当我在显示器中混合按钮时,3 个当前按钮中有 2 个工作正常,但是第 3 个按钮的值结巴并且不像其他 2 个那样平滑。我认为这是由值的位置引起的在代码中,它们是我添加的最后一个,将它们放在代码中,但老实说我不知道。

if rat.isOver(pos):
     win.fill((255, 255, 255))
     menu.draw(win, (0, 0, 0))
     Rat()
     pygame.display.update()
     x /= 2
     def drawWindow():
         again.draw(win, (0, 0, 0))

if again.isOver(pos) and x == 5:
    win.fill((255, 255, 255))
    menu.draw(win, (0, 0, 0))
    again.draw(win, (0, 0, 0))
    Rat()
    pygame.display.update()
    def drawWindow():
        again.draw(win, (0, 0, 0))

该按钮与其他 2 个按钮的工作方式相同,但值口吃。 如果有人有帮助的想法,将不胜感激。 谢谢你。

好的,不确定我是否完全理解你是如何做到的,但是在主循环中,调用drawWindow() 这是:

def drawWindow():
    win.fill((255, 255, 255))
    bandit.draw(win, (0, 0, 0))
    zombie.draw(win, (0, 0, 0))
    rat.draw(win, (0, 0, 0)) 

我假设那是在绘制它们的图像而不是统计数据。 有一个布尔值来控制是否为每个人显示像show_zombie_stats这样的统计数据。 然后在主循环或drawWindow()中,您可以执行 if 语句,例如

if show_zombie_stats:
     zombie.draw_stats()

然后在主循环结束时调用pygame.display.update()

现在您可以使用带有show_zombie stats = not show_zombie stats的按钮更改show_zombie stats信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM