【问题标题】:Pygame Display Update Glitch?Pygame 显示更新故障?
【发布时间】:2018-11-14 08:53:06
【问题描述】:

我有一些有点时髦的代码。基本上,变量 gameStart 位于使用函数 cursorOver 的变量中,该函数查找并检测鼠标按钮的位置和位置以及是否按下。我有 3 个按钮,当光标在按钮上时,我希望每个按钮都变大。第一个按钮实现有效。但是,如果我尝试添加另一个按钮,按钮会变大,但按钮会开始闪烁。

window.blit(background,(0,0))
window.blit(title,(175,200))
pygame.draw.rect(window,PURPLE,(50,400,200,100),0)
pygame.draw.rect(window,PURPLE,(300,400,200,100),0)
pygame.draw.rect(window,PURPLE,(550,400,200,100),0)
close()

mouseX,mouseY = pygame.mouse.get_pos()
mouseClick = pygame.mouse.get_pressed()[0]

gameStartC = cursorOver(50,400,200,100,mouseX,mouseY)
instructionStartC = cursorOver(300,400,200,100,mouseX,mouseY)
objectiveStartC = cursorOver(550,400,200,100,mouseX,mouseY)
nextStartC = cursorOver(580,250,175,100,mouseX,mouseY)

if gameStartC == True:
    while True:
        pygame.draw.rect(window,PURPLE,(25,375,250,150),0)
        pygame.display.update()
        break
else:
    pygame.draw.rect(window,PURPLE,(50,400,200,100),0)
    pygame.display.update()
#this is the part where the code becomes glitchy
if instructionStartC == True:
    while True:
        pygame.draw.rect(window,PURPLE,(275,375,250,150),0)
        pygame.display.update()
        break
else:
    pygame.draw.rect(window,PURPLE,(300,400,200,100),0)
    pygame.display.update()

【问题讨论】:

    标签: python python-2.7 pygame


    【解决方案1】:

    只是因为你多次调用pygame.display.update()

    您应该创建一个通常执行以下三件事的标准游戏循环:

    • 处理输入
    • 更新状态
    • 在屏幕上绘制

    然后重复。

    在“绘制到屏幕”步骤中,您将所有精灵/矩形/任何内容绘制到屏幕表面,然后最终调用一次pygame.display.update()

    多次调用pygame.display.update()、在循环迭代之间不清除屏幕以及创建多个不必要的事件循环是导致此类故障恕我直言的常见初学者错误。

    所以在你的情况下,代码应该看起来更像这样:

    if gameStartC:
        pygame.draw.rect(window,PURPLE,(25,375,250,150),0)
    else:
        pygame.draw.rect(window,PURPLE,(50,400,200,100),0)
    
    if instructionStartC:
        pygame.draw.rect(window,PURPLE,(275,375,250,150),0)
    else:
        pygame.draw.rect(window,PURPLE,(300,400,200,100),0)
    
    pygame.display.update()
    

    我不知道你期望 while-loops 做什么,也许你应该使用 pygames RectSprite 类。它会让你的生活更轻松。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多