我想每次单击一个块就删除一个块



我想在某种程度上制作一种级别编辑器,我希望能够单击块来删除它们,当我运行代码时,一个块会被销毁,但从那里什么都不起作用。

这是我的密码。

def update(self):
mouse_x, mouse_y = pygame.mouse.get_pos()
mouse_hover = blocks.rect.collidepoint(mouse_x, mouse_y)
clicked = pygame.event.get(pygame.MOUSEBUTTONUP)  
if mouse_hover:
if clicked:
blocks.kill()
print(1)

我对您的代码进行了一点重新排列,以检查事件处理程序中的冲突,只需单击鼠标左键:

import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
class ground(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
# self.image = pygame.image.load('graphics/wall.png')
self.image = self.image = pygame.Surface((10, 12), pygame.SRCALPHA)
self.image.fill("firebrick")
self.rect = self.image.get_rect(center=(x, y))
def update(self):
pass
# create a sprite group
GroundGroup = pygame.sprite.Group()
# Fill the group
for x in range(40):
for y in range(30):
platform = ground(x * 20, y * 20)
GroundGroup.add(platform)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
# check for collision on left-click
for block in GroundGroup:
if block.rect.collidepoint(event.pos):
GroundGroup.remove(block)
## Update game state
GroundGroup.update()
## Clear the screen
screen.fill("black")
## Draw sprites
GroundGroup.draw(screen)
## Update screen
pygame.display.flip()
clock.tick(60)
pygame.quit()

你的问题可能是你没有正确地重新绘制屏幕,你需要清除屏幕/刷新背景图像,然后重新绘制精灵。这将清除您删除的精灵。

最新更新