können Sie Variablen verwenden previous_button
und current_button
zwei letzten Tasten remeber. Und dann können Sie überprüfen, ob sie korrekt sind.
Es ist ähnlich wie @jsbueno Lösung, aber ich verwende zwei Variablen, nicht Liste. Wenn Sie längere Kombinationen überprüfen möchten, können Sie die Liste verwenden.
import pygame
# --- functions ---
def check_which_button_was_click(buttons, pos):
for name, (rect, color) in buttons.items():
if rect.collidepoint(pos):
return name
# --- main ---
# - init -
screen = pygame.display.set_mode((350, 150))
# - objects -
buttons = {
'RED': (pygame.Rect(50, 50, 50, 50), (255, 0, 0)),
'GREEN': (pygame.Rect(150, 50, 50, 50), (0, 255, 0)),
'BLUE': (pygame.Rect(250, 50, 50, 50), (0, 0, 255)),
}
previous_button = None
current_button = None
# - mainloop -
clock = pygame.time.Clock()
running = True
while running:
# - event -
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
clicked_button = check_which_button_was_click(buttons, event.pos)
if clicked_button is not None:
previous_button = current_button
current_button = clicked_button
print(previous_button, current_button)
# - updates -
if previous_button == 'RED' and current_button == 'BLUE':
print('correct buttons clicked: RED & BLUE')
previous_button = None
current_button = None
# - draws -
screen.fill((0,0,0))
for rect, color in buttons.values():
pygame.draw.rect(screen, color, rect)
pygame.display.flip()
# - FPS -
clock.tick(5)
# - end -
pygame.quit()
ja, du kannst (wenn ich nur verstehe, was du versuchst zu sagen). Was hast du versucht? Welchen Fehler hast du bekommen? – furas
BTW: Wenn Sie Ereignis 'MOUSBUTTONDOWN' haben, dann können Sie Mausposition von' event.pos' – furas
bekommen Ich kann nur ein Mausereignis für eine Maustaste und nicht für mehrere machen. Wie ist das möglich? –