首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游戏显示更新故障?

游戏显示更新故障?
EN

Stack Overflow用户
提问于 2018-06-05 00:22:26
回答 1查看 794关注 0票数 4

我有一些代码有点古怪。基本上,变量gameStart在一个使用函数cursorOver的变量中,它查找并检测鼠标按钮在哪里、在哪里以及是否按下了鼠标按钮。我有3个按钮,当光标在按钮上时,我希望每个按钮变得更大。第一个按钮实现工作。然而,如果我尝试添加另一个按钮,按钮就会变大,然而,按钮会开始闪烁。

代码语言:javascript
运行
复制
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()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 09:14:13

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

您应该创建一个标准的游戏循环,它通常执行以下三种操作:

  • 手柄输入
  • 更新状态
  • 画到屏幕上

然后重复。

在“画图到屏幕”-步骤中,您将您的所有精灵/rects/任何东西绘制到屏幕表面,然后最终在最后调用pygame.display.update()一次。

多次调用pygame.display.update()、不清除循环迭代之间的屏幕和创建多个不必要的事件循环是初学者常见的错误,这些错误会导致IMHO出现这些故障。

因此,在您的例子中,代码应该更像这样:

代码语言:javascript
运行
复制
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类。这会让你的生活更轻松。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50690427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档