【问题标题】:pygame.display.update() doesn't work in a looppygame.display.update() 不能循环工作
【发布时间】:2015-08-24 18:57:42
【问题描述】:

我正在开发一个简单的游戏。当我在一个循环中绘制一些东西时,它会在不到一秒钟的时间内绘制它。这是我的代码:

import pygame, sys
from pygame.locals import*

pygame.init()
FPS = 30
fpsClock = pygame.time.Clock()

DISPLAYSURF = pygame.display.set_mode((1000, 750))
BASICFONT = pygame.font.Font('freesansbold.ttf', 18)
pygame.display.set_caption('Game')

while True:
        for event in pygame.event.get():
            if event.type == pygame.MOUSEMOTION:
                "do something"

            else:
                posx, posy = pygame.mouse.get_pos()
                if event.type == pygame.MOUSEBUTTONUP:
                    if posx == 500 and posy == 500:
                        DISPLAYSURF.fill((40, 40, 40))
                        pygame.draw.rect(DISPLAYSURF, (40, 40, 40), (posx, posy, 50, 20))

        pygame.display.update()

我做错了什么?

【问题讨论】:

  • 只有当有个事件没有 MOUSEMOTION时才更新显示 - 为什么?!请记住,缩进在 Python 中很重要...
  • @jonrsharpe 这是我游戏中的地图,当事件为MOUSEMOTION 我想移动地图,当事件为MOUSEBUTTONUP 我想开始一个关卡但要测试我'我使用了draw() 函数
  • 是的,但重点是无论发生什么你都想更新显示!
  • @svs 提示:从最后一行删除 16 个空格。
  • @muddyfish 这样吗? (见编辑)

标签: python pygame


【解决方案1】:

只有当鼠标位于 500,500 并且触发了事件 MOUSEBUTTONUP 时,您才更新显示。我会将其更改为:

import pygame, sys
from pygame.locals import*

pygame.init()
FPS = 30
fpsClock = pygame.time.Clock()

DISPLAYSURF = pygame.display.set_mode((1000, 750))
BASICFONT = pygame.font.Font('freesansbold.ttf', 18)
pygame.display.set_caption('Game')

while True:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEMOTION:
            "do something"

        else:
            posx, posy = pygame.mouse.get_pos()
            if event.type == pygame.MOUSEBUTTONUP:
                if posx == 500 and posy == 500:
                    DISPLAYSURF.fill((40, 40, 40))
                    pygame.draw.rect(DISPLAYSURF, (40, 40, 40), (posx, posy, 50, 20))

    pygame.display.update()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-21
    • 2018-06-11
    • 1970-01-01
    • 2016-10-10
    • 2017-12-12
    • 2014-02-07
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多