Wie kann ich die Position eines zweiten Klicks in Pygame erzeugen?
Ich mache die Türme von Hanoi.
Es sollte so funktionieren: Sie klicken auf den ersten Turm, von dem aus eine Festplatte verschoben werden soll, und dann auf den zweiten Turm, zu dem die Festplatte verschoben werden soll. Die Festplatte sollte sich vom ersten Turm (eine Liste) zum zweiten Turm (eine andere Liste) bewegen.
Mein Problem ist, dass beim ersten Klicken der Code die Position generiert und kurz danach erneut geklickt werden sollte, um zu entscheiden, wohin die Festplatte verschoben werden soll. Der Code nimmt jedoch automatisch die Position des ersten Klicks ein.
Hier ist ein Beispiel meines Codes:
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((500, 400))
pygame.display.set_caption("Tower of Hanoi")
block_red = pygame.image.load('red.png')
block_blue = pygame.image.load('blue.png')
block_green = pygame.image.load('green.png')
rod1 = [block_red, block_blue, block_green]
rod2 = []
rod3 = []
WHITE = (255, 255, 255)
while True:
DISPLAYSURF.fill(WHITE)
# get the position of the mouse click
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN:
mousex, mousey = pygame.mouse.get_pos()
click1 = mousex, mousey
# first in the left part of the screen
if (mousex > 0) and (mousex < 166) and (mousey > 0) and (mousey < 400):
if len(rod1) == 0:
print "not valid"
elif len(rod1) == 1 or 2 or 3:
disk1 = rod1[-1]
rod1.remove(disk1)
# click again in a other part of the screen
if event.type == MOUSEBUTTONDOWN:
mousex, mousey = pygame.mouse.get_pos()
click2 = mousex, mousey
if (mousex > 166) and (mousex < 333) and (mousey > 0) and (mousey < 400):
rod2.append(disk1)
elif (mousex > 333) and (mousex < 500) and (mousey > 0) and (mousey < 400):
rod3.append(disk1)
else:
rod1.append(disk1)
# if statement fot the middle part
# if statement for the right part
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()