我正在开发一个rpg游戏,我希望我的播放按钮一按就消失。有什么方法可以做到这一点?
我有不同的游戏状态,分别是:游戏,菜单,开始
播放按钮将出现在“开始”游戏状态中,我希望它在按下或游戏状态更改时消失。
感谢您的贡献
最佳答案
要从屏幕上删除某些内容,您需要在其上绘制其他内容。因此,最基本的答案是停止渲染按钮,然后开始渲染其上的其他内容。
解决此问题的一种好方法是使所有可见对象继承pygame.sprite.Sprite并将它们放在sprite groups中。从这里您可以轻松绘制,更新和删除精灵。
这是一个工作示例。按下键1、2或3,再次出现“按钮”:
import pygame
pygame.init()
screen = pygame.display.set_mode((200, 200))
clock = pygame.time.Clock()
class Button(pygame.sprite.Sprite):
def __init__(self, pos, size=(32, 32), image=None):
super(Button, self).__init__()
if image is None:
self.rect = pygame.Rect(pos, size)
self.image = pygame.Surface(size)
else:
self.image = image
self.rect = image.get_rect(topleft=pos)
self.pressed = False
def update(self):
mouse_pos = pygame.mouse.get_pos()
mouse_clicked = pygame.mouse.get_pressed()[0]
if self.rect.collidepoint(*mouse_pos) and mouse_clicked:
print("BUTTON PRESSED!")
self.kill() # Will remove itself from all pygame groups.
image = pygame.Surface((100, 40))
image.fill((255, 0, 0))
buttons = pygame.sprite.Group()
buttons.add(
Button(pos=(50, 25), image=image),
Button(pos=(50, 75), image=image),
Button(pos=(50, 125), image=image)
)
while True:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
buttons.add(Button(pos=(50, 25), image=image))
elif event.key == pygame.K_2:
buttons.add(Button(pos=(50, 75), image=image))
elif event.key == pygame.K_3:
buttons.add(Button(pos=(50, 125), image=image))
buttons.update() # Calls the update method on every sprite in the group.
screen.fill((0, 0, 0))
buttons.draw(screen) # Draws all sprites to the given Surface.
pygame.display.update()
关于python - 使pygame Sprite 在python中消失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39709065/