Python Pygame显示更新故障?
我有一些代码有点怪。基本上,变量gameStart位于一个使用函数cursorOver的变量中,该函数查找并检测鼠标按钮的位置、位置以及是否按下鼠标按钮。我有3个按钮,我想每个按钮变得更大时,光标在按钮上。第一个按钮的实现是有效的。但是,如果我尝试添加另一个按钮,按钮会放大,但是按钮开始闪烁Python Pygame显示更新故障?,python,python-2.7,pygame,Python,Python 2.7,Pygame,我有一些代码有点怪。基本上,变量gameStart位于一个使用函数cursorOver的变量中,该函数查找并检测鼠标按钮的位置、位置以及是否按下鼠标按钮。我有3个按钮,我想每个按钮变得更大时,光标在按钮上。第一个按钮的实现是有效的。但是,如果我尝试添加另一个按钮,按钮会放大,但是按钮开始闪烁 window.blit(background,(0,0)) window.blit(title,(175,200)) pygame.draw.rect(window,PURPLE,(50,400,200,1
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()
这只是因为您多次调用了
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
-循环做什么,也许你应该使用pygamesRect
和Sprite
类。这会让你的生活更轻松