我是python特别是pygame的新手,并想知道如何在 MOUSEBUTTONDOWN 后保持我的新图像blit 这是我的代码:
color = pygame.image.load('billes.png')
red = color.subsurface(50, 70, 79, 71)
r = display.blit(red,(918,920))
def play():
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if r.collidepoint(pos):
display.blit(red, (10,10))
while True:
...
for event in pygame.event.get():
...
if event.type == MOUSEBUTTONDOWN and event.button == 1:
if r.collidepoint(pos):
display.blit(red, (800, 700))
当我点击鼠标的左键时显示我的新图像,但是一秒后即使按钮仍然按下也会消失。我也尝试使用pygame.mouse.get_pressed()[0]
但结果相同。
如何在 MOUSEBUTTONDOWN 之后保持新的blit?我想用 MOUSEBUTTONUP 来设置一个条件,但我不知道怎么做。
答案 0 :(得分:1)
import pygame
pygame.init()
red = (200,0,0)
white = (255,255,255)
gameDisplay=pygame.display.set_mode((800,600))
FPS=30
clock=pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
quit()
cur = pygame.mouse.get_pos() #taking click events every time
click=pygame.mouse.get_pressed() ##again, every time
if click[0] == 1: #if left-clicked
pygame.draw.rect(gameDisplay,red, (100,200,100,200)) #draw a red rectangle
pygame.display.update() #and update the display
clock.tick(FPS)
问题是,您在错误的位置使用了 pygame.display.update()。 我纠正了它,现在它正在工作。
实际上,无论何时左键单击都会绘制矩形,但只能看到一个 矩形,因为它们在相同的坐标上。
如果您想确定这一点,请尝试:
import pygame,random
pygame.init()
red = (200,0,0)
white = (255,255,255)
black = (0,0,0)
gameDisplay=pygame.display.set_mode((800,600))
FPS=30
clock=pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
quit()
cur = pygame.mouse.get_pos()
click=pygame.mouse.get_pressed()
if click[0] == 1:
x=random.randint(1,700) #random coords of x
y=random.randint(50,500) #random coords of y
wx=random.randint(10,100) #random size of x
hy=random.randint(60,200) #random size of y
pygame.draw.rect(gameDisplay,red, (x,y,wx,hy)) #drawing with random variables
pygame.display.update()
clock.tick(FPS)
这表明我们的方法正在运行。另外请注意,如果您继续按左键单击,则继续以绘制矩形。它也提前绘制了矩形,但我们无法看到它们,因为它们位于相同的坐标上,这就是为什么看起来那个位置只有一个矩形。
如果要删除该矩形,例如右键单击:
if click[2] == 1:
pygame.draw.rect(gameDisplay,black, (100,200,100,200))
pygame.display.update()
如果单击语句,请添加第一个的底部。基本上它会在第一个矩形上绘制另一个矩形,护理相同的坐标,但背景颜色相同。所以你的第一个矩形似乎被删除了: - )。