在pygame中使用MOUSEBUTTONDOWN
我正在尝试在pygame中做一些非常基础的事情。这是我使用它的前几天,所以我还是个初学者。我想在用鼠标点击某个东西时改变它的颜色。我知道怎么通过时间来改变颜色,这就是我下面代码的内容。我想在下面的代码中改变云的颜色,如果你运行它,你会看到云在左上角,我让它每三秒在白色和黑色之间切换,但我想让它根据鼠标按下的情况来改变颜色。谢谢。
import pygame, time, sys
from pygame.locals import *
def drawItem(windowSurface, x, y):
pygame.draw.polygon(windowSurface, RED, ((0+x, 100+y),(100+x, 100+y), (50+x, 50+y)))
pygame.draw.polygon(windowSurface, GREEN, ((0+x,100+y),(100+x,100+y),(100+x,200+y),(0+x,200+y)))
pygame.init()
windowSurface = pygame.display.set_mode((500, 400), 0, 32)
pygame.display.set_caption("Lab 9")
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
GRASS = (26, 82, 26)
SKY = (179,237,255)
color = SKY
flag = False
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
windowSurface.fill(SKY)
drawItem(windowSurface,200,120)
pygame.draw.rect(windowSurface, GRASS, (0,300,500,500),0)
house = ((0+50, 100+50),(100+50, 100+50), (50+50, 50+50), (50+100, 50+100))
for i in range(3):
pygame.draw.circle(windowSurface,color, house[i], 80)
if flag == False:
color = WHITE
flag = True
elif flag == True:
color = BLACK
flag = False
pygame.display.update()
time.sleep(3)
1 个回答
1
你已经学会了如何检查事件的类型,比如判断一个事件是否是退出事件(通过检查 event.type == QUIT
)。
你可以把这个方法扩展一下,来检查是否是鼠标点击事件。把下面的代码放进你的 for event in pygame.event.get()
循环里:
if event.type == MOUSEBUTTONDOWN:
flag = not flag # This will swap the value of the flag
然后可以把下面的 flag = True
和 flag = False
这两行去掉,因为你不再需要它们了。同时也可以去掉 time.sleep()
的调用;或者至少把它改成一个合理的帧率(比如 time.sleep(0.2)
意味着每秒50帧)。