我有一些代码有点古怪。基本上,变量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()

发布于 2018-06-05 09:14:13
这只是因为您多次调用pygame.display.update()。
您应该创建一个标准的游戏循环,它通常执行以下三种操作:
然后重复。
在“画图到屏幕”-步骤中,您将您的所有精灵/rects/任何东西绘制到屏幕表面,然后最终在最后调用pygame.display.update()一次。
多次调用pygame.display.update()、不清除循环迭代之间的屏幕和创建多个不必要的事件循环是初学者常见的错误,这些错误会导致IMHO出现这些故障。
因此,在您的例子中,代码应该更像这样:
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 Rect和Sprite类。这会让你的生活更轻松。
https://stackoverflow.com/questions/50690427
复制相似问题